No More Secrets - recréer l’effet de déchiffrement à l’écran du film Sneakers (1992)
(github.com/bartobri)nmsest un outil en ligne de commande qui applique à du texte ASCII ou UTF-8 reçu via un pipe un effet de déchiffrement à l’écran, en le faisant d’abord apparaître comme des données chiffrées avant de révéler les caractères en clair d’origine- L’effet recrée la célèbre scène de déchiffrement de données du film de hackers Sneakers sorti en 1992, et renvoie à l’effet visible à 0:35 dans cet extrait du film
- Par défaut,
nmsaffiche d’abord des caractères chiffrés initiaux puis attend une saisie clavier de l’utilisateur avant de lancer la séquence de déchiffrement - L’usage principal consiste à lui transmettre des données de sortie standard via un pipe, comme dans
ls -l | nms, et les options représentatives incluent le déchiffrement automatique-a, le masquage des espaces-s, la définition de la couleur de premier plan-f <color>, le nettoyage de l’écran-cet l’affichage de la version-v - Le programme
sneakers, fourni avec l’ensemble, reproduit la scène visible dans l’extrait du film et demande à l’utilisateur de choisir l’une des options du menu avant de se terminer - La configuration de base n’a pas de dépendances, mais utilise des séquences d’échappement de terminal ANSI/VT100 pour reproduire l’effet
- Une implémentation ncurses est fournie pour les terminaux ne prenant pas en charge ANSI/VT100
- L’implémentation ncurses prend en charge les terminaux non ANSI, mais elle efface toujours l’écran avant l’affichage, avec pour contrainte de perdre la fonctionnalité en ligne
- L’installation depuis les sources nécessite
git,gccetmake, et les cibles de compilation sontnms, l’optionnelsneakers, ainsi quenms-ncursesetsneakers-ncursespour ncurses - Pour les utilisateurs souhaitant réutiliser le même effet dans des programmes en ligne de commande, la bibliothèque C LibNMS est proposée séparément
- C’est un logiciel libre pouvant être redistribué et modifié selon les termes de la GNU General Public License
1 commentaires
Avis sur Hacker News
J’aime le fait que les instructions d’installation ne supposent pas que la personne qui veut installer ce paquet a déjà gcc/git/make
Parce qu’il n’existerait évidemment personne du genre « je suis un utilisateur *nix totalement débutant sur une distribution fraîchement installée, et je veux installer une commande qui reproduit l’effet de déchiffrement de Sneakers »
Beaucoup trop de paquets font ce genre de supposition, et dans ce cas il y a de fortes chances que d’autres informations essentielles manquent aussi
Et en plus, j’apprécie que ce ne soit pas un truc façon npm install
On n’y trouve parfois que des bouts de code ou de configuration qui ne fonctionnent pas seuls, sans qu’on sache clairement où les mettre ni dans quoi ils doivent être imbriqués
Ils utilisent aussi parfois des imports avec des noms qu’on ne trouve nulle part sur la page
J’aimerais qu’il y ait au moins un exemple complet en bas de page, ou un lien vers celui-ci
makeà partir du seul nom d’un fichier.hmanquant, ou à chercherlib-$THINGdans aptCe genre de chose devrait être la valeur par défaut, pas une heureuse exception
Je comprends totalement cette frustration
Je ne voudrais intégrer nulle part dans notre processus quelque chose qui implique
make, comme dans ce dépôtParce que ça finira par échouer
Cela dit, ici ce n’est pas vraiment censé être utilisé sérieusement : c’est plutôt un projet jouet
Mais ce serait chouette de pouvoir quand même les exécuter directement depuis les sources sans dépendances, et c’est sans doute pour ça que certains outils sont encore écrits en pur shell
Parmi les vraies attaques de cryptanalyse, il existe toute une catégorie qui, quand on les exécute, ressemble à la scène de déchiffrement de Sneakers : oracle de padding CBC, oracle de padding RSA de Bleichenbacher, attaque octet par octet sur ECB, etc.
Il me semble que Juliano Rizzo avait appelé ça une Hollywood Attack
C’est un bon terme, j’aimerais que tout le monde l’utilise, et ça aide aussi un peu à saisir l’intuition derrière l’attaque
Beaucoup d’attaques de cryptanalyse ne s’attaquent pas d’un coup à l’intégralité d’un message de 128 bits ou 2048 bits ; elles fonctionnent plutôt en isolant de manière créative un octet du texte chiffré
J’adore vraiment ce film
Je l’ai vu enfant en VHS, et par hasard je passe tous les jours à vélo devant le décor de l’une des scènes principales
C’est la cour en briques qui se trouve aujourd’hui entre Google et Wharton
Dans le film, elle apparaît comme un espace de restauration en extérieur, et Sidney Poitier tient un téléphone de voiture dans la Karmann Ghia de Martin en disant « Martin, It's your mother »
Puis ils se rendent compte qu’ils ne sont pas avec la NSA
Ils y ont maintenant ajouté une caserne de pompiers qui semble flotter, et la rue est un peu différente, mais j’aime le fait que le paysage soit encore assez similaire à ce qu’il était au moment du tournage
Globalement, c’est vraiment un film très bien fait
On télécharge 3 à 5 fichiers source et il suffit de taper
makepour que ça compile ?Pas de configuration d’un environnement de build isolé, pas 1 600 dépendances à récupérer et compiler depuis les sources, pas de couche de système de fichiers avec 1 600 bibliothèques
.so, pas de Docker ni de npm ou assimilé ?Et en plus, ça compile en moins d’une seconde ?
C’est incroyable, ce que peut faire ce nouveau langage, C
Il faut que
makeet une toolchain C soient installésSi c’est le cas, il y a de fortes chances que Python, Perl, et peut-être même un Java assez récent soient aussi installés
Pas sur macOS, mais c’est le cas sur la plupart des distributions Linux, je pense
Et tous ceux-là peuvent aussi faire la même chose sans dépendances
Dans les années 90, je pensais à tort qu’inclure
stdlib.hou d’autres bibliothèques faisait gonfler les programmes C, alors j’implémentais moi-même les méthodesEn fait, je ne comprenais pas comment fonctionnait l’édition de liens
Le moi de 12 ans étoufferait aujourd’hui en voyant NPM, pip, bundle, et même Electron
On pouvait faire énormément avec très peu
Si l’environnement est installé et que le programme n’a pas de dépendances, il suffit de lancer la commande de build
Ce projet aussi nécessite gcc, make, ncurses, sans version précisée
Il pourrait finir comme l’horrible Python actuel
Python était autrefois fantastique et, concrètement, ça marchait tout seul
Puis tout le monde a remarqué le langage, Nvidia s’en est mêlé, TensorFlow/PyTorch/le machine learning sont arrivés, et ça l’a abîmé
Parce que des script kiddies qui se fichent de la compatibilité des paquets ont écrit beaucoup trop de cochonneries
La communauté est à la fois le plus grand atout de ce langage et aussi une très grande pire partie
makefonctionne correctement que, maintenant, quand je vois un projet en C, je me dis « c’est cool, mais je ne pourrai sûrement pas le compiler », puis je ferme l’ongletCe projet-ci s’est bien compilé
Quand j’entends le mot « Passport », je ne peux pas m’empêcher de dire « My voice is my passport », au moins dans ma tête
« cattle mutilations are up »
Je ne sais plus lequel des deux c’était
Ce que je viens de faire n’était pas facile
Ce hack était directement inspiré du film, et PLA l’a montré dans un épisode de podcast
https://phonelosers.com/2008/05/pla-radio-episode-17-voice-a...
La combinaison de ça avec cool-retro-term[1] est indispensable pour passer du vrai temps de hacker sur mon ordinateur
[1] https://github.com/Swordfish90/cool-retro-term
https://www.youtube.com/watch?v=_gRIG_zK4SQ
Mon premier job au helpdesk incluait du support mainframe, et je pouvais utiliser les vieux terminaux plasma IBM à 4 panneaux qui restaient encore
Le système de tickets était lui aussi toujours sur le mainframe, donc c’était réellement utile pour le travail de helpdesk
C’était probablement ce modèle, ou quelque chose de très proche : https://www.argecy.com/ibm-3290-plasma-terminal
[1] https://github.com/Rezmason/matrix
brew install --cask cool-retro-termC’est drôle, en voyant la nécrologie de Kevin Mitnick, j’ai immédiatement pensé à ce film
J’imagine que beaucoup de gens ont fait pareil
Toujours amusant
Il y a quelques années, j’ai créé un script Python en un seul fichier,
decrypt.py, qui fait à peu près la même choseTristement, c’est encore aujourd’hui le dépôt le plus populaire parmi mes projets GitHub : https://github.com/jtwaleson/decrypt
J’aimerais vraiment voir une version moderne de Sneakers
Une histoire où quelqu’un découvre qu’un ordinateur quantique a probablement déjà été construit, et que s’il existe vraiment, il faut le voler
Ce serait parfaitement en phase avec le mème “no more secrets” du Sneakers original
Cela dit, l’original était déjà un film sur l’âge et la maturité, donc le simple fait qu’une génération de plus soit passée ne suffirait probablement pas à en faire une histoire très convaincante
C’est triste que River Phoenix et Sidney Poitier soient décédés, et je suis allé vérifier si Ben Kingsley était encore en vie
Pour un film qui traite un peu de technologie, je trouve que l’original a étonnamment bien vieilli
C’est en partie parce qu’il se situe juste avant le World Wide Web, et aussi parce qu’en 2023, il arrive encore que des systèmes critiques tournent sur des mainframes
Je ne comprends pas pourquoi les films que j’adorais quand j’étais enfant n’ont pas droit à un reboot, une suite, une préquelle, voire même une suite ratée
C’est l’un des films de ma vie
La scène de déchiffrement est vraiment iconique dans mon souvenir, et ce projet en a parfaitement capturé l’esprit