2 puntos por GN⁺ 2023-07-21 | 1 comentarios | Compartir por WhatsApp
  • nms es una herramienta de línea de comandos que aplica un efecto de descifrado en pantalla a texto ASCII o UTF-8 recibido por tubería, haciendo que al principio parezca datos cifrados y luego revele los caracteres originales en texto plano
  • El efecto recrea la famosa escena de descifrado de datos de la película de hackers Sneakers de 1992, y corresponde al efecto que aparece en el segundo 0:35 de este clip de la película
  • nms muestra por defecto caracteres cifrados iniciales y luego espera la entrada del usuario; después comienza la secuencia de descifrado
  • La forma principal de uso es pasar datos de salida estándar por tubería, como en ls -l | nms, y ofrece opciones representativas como descifrado automático -a, enmascarado de espacios en blanco -s, selección de color de primer plano -f <color>, limpieza de pantalla -c y mostrar la versión -v
  • El programa sneakers, incluido junto con la herramienta, recrea la escena que aparece en el clip de la película, y antes de salir el usuario debe seleccionar una de las opciones del menú
  • La configuración básica no tiene dependencias, pero usa secuencias de escape de terminal ANSI/VT100 para reproducir el efecto
    • Ofrece una implementación con ncurses para terminales que no admiten ANSI/VT100
    • La implementación con ncurses admite terminales no ANSI, pero tiene la limitación de que siempre borra la pantalla antes de mostrar la salida, por lo que pierde la capacidad de funcionar en línea
  • Para instalar desde el código fuente se necesitan git, gcc y make, y los objetivos de compilación se dividen en nms, sneakers como opcional, y nms-ncurses y sneakers-ncurses para ncurses
  • Para quienes quieran usar el mismo efecto en programas de línea de comandos, también se ofrece por separado la biblioteca en C LibNMS
  • Es software libre que puede redistribuirse y modificarse según los términos de la GNU General Public License

1 comentarios

 
GN⁺ 2023-07-21
Comentarios en Hacker News
  • Me gusta que las instrucciones de instalación no den por hecho que la persona que quiere instalar este paquete ya tiene gcc/git/make
    No es como si fuera a existir alguien que diga: “Soy un usuario completamente novato de *nix con una distro recién instalada, y quiero instalar un comando para recrear el efecto de descifrado de Sneakers”
    Demasiados paquetes hacen ese tipo de suposiciones, y en esos casos es muy probable que también falte otra información clave
    Además, también se agradece que no sea alguna cosa estilo npm install

    • De verdad odio esto en la documentación
      A veces solo hay fragmentos de código o configuración que no funcionan por sí solos, y ni siquiera queda claro dónde van o dentro de qué se anidan
      A veces hasta usan imports con nombres que no aparecen en ninguna parte de la página
      Como mínimo, me gustaría que al final de la página pusieran un ejemplo completo o al menos un enlace a uno
    • He perdido demasiado tiempo dándole a make solo guiándome por el nombre del archivo .h faltante, o buscando lib-$THING en apt
    • Al principio me decepcionó un poco ver que había que compilarlo a mano, pero el repositorio es pequeño y la compilación termina en un segundo
      Esto debería ser lo normal, no una agradable excepción
    • Se siente como eso de “el resto se deja como ejercicio para el lector”
      Me identifico al 100% con esa frustración
      No querría meter algo que implique make en ninguna parte de nuestro proceso
      Porque al final va a fallar
      Aunque, siendo justos, esto no está hecho para usarse en serio, sino que es más bien un proyecto juguete
    • Por otro lado, está bien que el software sea fácil de instalar, así que es práctico que venga incluido en los paquetes de la distro
      Aun así, estaría genial que pudiera ejecutarse directo desde el código fuente sin dependencias, y supongo que por eso algunas herramientas todavía se hacen en shell puro
  • En ataques reales de criptoanálisis, hay una clase de casos que, al ejecutarse, se ven como la escena de descifrado de Sneakers, como el padding oracle de CBC, el padding oracle de RSA de Bleichenbacher o los ataques byte a byte sobre ECB
    Si mal no recuerdo, Juliano Rizzo les puso el nombre de Hollywood Attack
    Es un buen término; ojalá todo el mundo lo usara, y además ayuda un poco a captar la intuición del ataque
    Muchos ataques de criptoanálisis no trabajan con el mensaje completo de 128 o 2048 bits de una sola vez, sino aislando de manera creativa un byte del texto cifrado

  • Me encanta esta película
    La vi en VHS cuando era niño y, casualmente, paso en bicicleta todos los días por el fondo de una de las escenas principales
    Es el patio de ladrillo que ahora está entre Google y Wharton
    En la película aparece como un comedor al aire libre, y Sidney Poitier dice “Martin, It's your mother” sosteniendo el teléfono de coche desde el Karmann Ghia de Martin
    Y entonces se dan cuenta de que no están con la NSA
    Ahora le agregaron esa estación de bomberos que parece flotante y la calle cambió un poco, pero me gusta que el lugar siga pareciéndose bastante a como se veía cuando filmaron la película
    En general, es una película muy bien hecha

  • ¿Bajar 3 a 5 archivos fuente y que simplemente compile con solo poner make?
    ¿Sin montar un entorno de compilación aislado, sin bajar 1600 dependencias para compilarlas desde código fuente, sin instalar una jerarquía de sistema de archivos con 1600 bibliotecas .so, y sin correr cosas como Docker o npm?
    ¿Y además compila en menos de un segundo?
    Qué impresionante todo lo que puede hacer este nuevo lenguaje llamado C

    • No exactamente
      Necesitas tener instalado make y una toolchain de C
      Si ya tienes eso instalado, entonces es bastante probable que también tengas Python, Perl y quizá una versión bastante reciente de Java
      No en MacOS, pero diría que sí en la mayoría de las distros Linux
      Y todos ellos también pueden hacer lo mismo sin dependencias
    • Me llegaron recuerdos muy fuertes
      En los 90, uno a veces implementaba métodos por su cuenta porque pensaba erróneamente que incluir stdlib.h u otras bibliotecas iba a inflar el programa en C
      Eso demuestra que ni siquiera entendíamos cómo funcionaba el enlazado
      Mi yo de 12 años se ahogaría al ver cosas como NPM, pip, bundle e incluso Electron hoy en día
      De verdad se podía hacer muchísimo con muy poco
    • Es lo mismo con cualquier lenguaje
      Si el entorno está instalado y el programa no tiene dependencias, solo ejecutas el comando de compilación
      Este proyecto también necesita gcc, make y ncurses sin especificar versiones
    • Ojalá no promocionen demasiado este lenguaje
      Si no, podría terminar como el espantoso Python actual
      Python alguna vez fue fantástico y de verdad simplemente funcionaba
      Luego todo el mundo lo descubrió, Nvidia se metió, llegaron TensorFlow/PyTorch/machine learning, y se arruinó
      Demasiados script kiddies sin interés por la compatibilidad de paquetes escribieron demasiadas porquerías
      La comunidad es al mismo tiempo la mejor parte de este lenguaje y también una muy terrible desventaja
    • Personalmente, me ha pasado tan pocas veces que escribir make funcione bien, que ahora cuando veo un proyecto en C pienso “se ve padre, pero seguro no lo voy a poder compilar” y cierro la pestaña
      Este proyecto sí compiló bien
  • Cuando escucho la palabra “Passport”, no puedo evitar decir “My voice is my passport”, aunque sea en mi cabeza

    • Para mí es “cattle”
      “cattle mutilations are up”
    • En el call center de HSBC tenían reconocimiento de voz, y creo que te decían “Your voice is your passport” o “password”
      Ahora ya no estoy seguro de cuál de las dos era
    • Me basta con escuchar a alguien decir la palabra passport
    • “…verify me”
      Lo que acabo de hacer no fue fácil
    • Bell sí tuvo una función así de verdad, y The Phone Losers of America la explotó
      Ese hack estuvo inspirado directamente en la película, y PLA lo mostró en un episodio del pódcast
      https://phonelosers.com/2008/05/pla-radio-episode-17-voice-a...
  • Esto, combinado con cool-retro-term[1], es indispensable para pasar tiempo de hacker de verdad en mi computadora
    [1] https://github.com/Swordfish90/cool-retro-term

    • Instalé cool-retro-term y no-more-secrets en una Chromebook con Linux, y la verdad se ve bastante bien
      https://www.youtube.com/watch?v=_gRIG_zK4SQ
    • Ver esa pantalla ámbar me trae un montón de recuerdos
      Mi primer trabajo en help desk incluía soporte de mainframe, y pude usar una vieja terminal de plasma IBM de 4 particiones que todavía seguía por ahí
      El sistema de tickets también seguía en el mainframe, así que de hecho era útil para el trabajo de help desk
      Creo que era este modelo o uno muy parecido: https://www.argecy.com/ibm-3290-plasma-terminal
    • Si te gusta esto, probablemente también disfrutes esto[1]
      [1] https://github.com/Rezmason/matrix
    • En Mac se puede instalar fácilmente con este comando
      brew install --cask cool-retro-term
    • Es el tipo de cosa para una noche solitaria y aburrida
  • Qué curioso que al ver el obituario de Kevin Mitnick, esta película fue lo primero que se me vino a la mente
    Seguro a mucha gente le pasó lo mismo

  • Siempre es divertido
    Hace unos años hice un script de Python de un solo archivo, decrypt.py, que hace casi exactamente lo mismo
    Tristemente, sigue siendo el repositorio más popular de todos mis proyectos en GitHub: https://github.com/jtwaleson/decrypt

  • De verdad me gustaría ver una versión moderna de Sneakers
    Estaría bueno que tratara de alguien que descubre que probablemente ya construyeron una computadora cuántica, y que si realmente existe, habría que robarla
    Además encajaría perfecto con el meme de “no more secrets” de la Sneakers original

    • En lo personal, creo que incluso habría estado bien un remake con el elenco original
      Aunque la original ya era una película sobre envejecer y madurar, así que no sé si solo otra generación más la habría vuelto una historia tan convincente
      Es una lástima que River Phoenix y Sidney Poitier ya fallecieron, y hasta tuve que revisar si Ben Kingsley seguía vivo
      Para ser una película que trata bastante con tecnología, la original ha envejecido sorprendentemente bien
      En parte porque salió justo antes de la World Wide Web, y porque incluso en 2023 todavía hay sistemas importantes que corren en mainframes

    • No entiendo por qué a las películas que me gustaban cuando era niño no les hacen reboots, secuelas, precuelas, ni siquiera una secuela mala
  • Esta es una de las películas de mi vida
    La escena del descifrado es verdaderamente icónica en mi memoria, y este proyecto logró capturar por completo esa sensación