2 points par GN⁺ 2023-07-21 | 1 commentaires | Partager sur WhatsApp
  • nms est 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, nms affiche 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 -c et 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, gcc et make, et les cibles de compilation sont nms, l’optionnel sneakers, ainsi que nms-ncurses et sneakers-ncurses pour 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

 
GN⁺ 2023-07-21
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

    • Je déteste vraiment ça dans la documentation
      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
    • J’ai perdu beaucoup trop de temps à lancer make à partir du seul nom d’un fichier .h manquant, ou à chercher lib-$THING dans apt
    • Au début, j’ai été un peu déçu de voir qu’il fallait le compiler soi-même, mais le dépôt est petit et la compilation prend une seconde
      Ce genre de chose devrait être la valeur par défaut, pas une heureuse exception
    • Ça donne un peu l’impression de « laisser le reste en exercice au lecteur »
      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ôt
      Parce 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
    • À l’inverse, j’aimerais que les logiciels soient faciles à installer, donc c’est pratique quand ils sont inclus dans les paquets des distributions
      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 make pour 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

    • Pas exactement
      Il faut que make et une toolchain C soient installés
      Si 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
    • Ça me fait remonter de vieux souvenirs d’un coup
      Dans les années 90, je pensais à tort qu’inclure stdlib.h ou d’autres bibliothèques faisait gonfler les programmes C, alors j’implémentais moi-même les méthodes
      En 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
    • C’est pareil pour tous les langages
      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
    • J’aimerais qu’on évite de trop promouvoir ce langage
      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
    • Personnellement, il m’est arrivé si rarement que taper make fonctionne 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’onglet
      Ce 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

    • Pour moi, c’est « cattle »
      « cattle mutilations are up »
    • Le centre d’appels de HSBC a de la reconnaissance vocale, et il me semble que le message disait « Your voice is your passport » ou « password »
      Je ne sais plus lequel des deux c’était
    • Rien que d’entendre quelqu’un dire le mot passport, ça me fait plaisir
    • « …verify me »
      Ce que je viens de faire n’était pas facile
    • Bell avait réellement cette fonctionnalité, et The Phone Losers of America l’a exploitée
      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

    • J’ai installé cool-retro-term et no-more-secrets sur un Chromebook sous Linux, et en pratique ça rend plutôt bien
      https://www.youtube.com/watch?v=_gRIG_zK4SQ
    • Cet écran ambré m’a fait remonter plein de souvenirs
      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
    • Si ça vous plaît, ceci[1] devrait probablement aussi vous amuser
      [1] https://github.com/Rezmason/matrix
    • Sur Mac, on peut l’installer facilement avec la commande suivante
      brew install --cask cool-retro-term
    • Un truc pour les nuits solitaires et ennuyeuses
  • C’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 chose
    Tristement, 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

    • Personnellement, j’aurais bien vu un remake avec les acteurs d’origine
      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
    • Oui
      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