2 Punkte von GN⁺ 2023-07-21 | 1 Kommentare | Auf WhatsApp teilen
  • nms ist ein Kommandozeilen-Tool, das auf per Pipe übergebenen ASCII- oder UTF-8-Text einen Entschlüsselungseffekt wie auf dem Bildschirm anwendet: Zunächst wirkt der Text wie verschlüsselte Daten, anschließend werden die ursprünglichen Klartextzeichen sichtbar
  • Der Effekt bildet die berühmte Datenentschlüsselungsszene aus dem Hackerfilm Sneakers von 1992 nach und bezieht sich auf den Effekt bei 0:35 in diesem Filmclip als Referenz
  • nms zeigt standardmäßig zunächst die anfänglichen verschlüsselten Zeichen an, wartet dann auf eine Tasteneingabe des Nutzers und startet anschließend die Entschlüsselungssequenz
  • Die typische Nutzung besteht darin, Standardausgabe per Pipe zu übergeben, etwa ls -l | nms; zu den wichtigsten Optionen gehören automatische Entschlüsselung mit -a, Maskierung von Leerraumzeichen mit -s, Festlegen der Vordergrundfarbe mit -f <color>, Bildschirmbereinigung mit -c und Versionsanzeige mit -v
  • Das mitgelieferte Programm sneakers stellt die Szene aus dem Filmclip nach; vor dem Beenden muss der Nutzer eine der Menüoptionen auswählen
  • Die Standardkonfiguration hat keine Abhängigkeiten, nutzt für die Nachbildung des Effekts jedoch ANSI/VT100-Terminal-Escape-Sequenzen
    • Für Terminals ohne ANSI/VT100-Unterstützung wird eine ncurses-Implementierung bereitgestellt
    • Die ncurses-Implementierung unterstützt Nicht-ANSI-Terminals, hat aber die Einschränkung, dass sie vor der Ausgabe immer den Bildschirm löscht und dadurch die Inline-Funktionalität verloren geht
  • Für die Installation aus dem Quellcode werden git, gcc und make benötigt; die Build-Ziele sind in nms, das optionale sneakers sowie nms-ncurses und sneakers-ncurses für ncurses aufgeteilt
  • Für Nutzer, die denselben Effekt in Kommandozeilenprogrammen verwenden möchten, wird die C-Bibliothek LibNMS separat bereitgestellt
  • Es handelt sich um freie Software, die unter den Bedingungen der GNU General Public License weiterverbreitet und verändert werden darf

1 Kommentare

 
GN⁺ 2023-07-21
Hacker-News-Kommentare
  • Mir gefällt, dass die Installationsanleitung nicht davon ausgeht, dass jemand, der dieses Paket installieren will, bereits gcc/git/make hat
    Es wird wohl niemanden geben, der so etwas sagt wie: „Ich bin ein kompletter *nix-Anfänger mit einer frisch installierten Distribution und möchte den Befehl installieren, der den Entschlüsselungseffekt aus Sneakers nachbildet.“
    Zu viele Pakete machen solche Annahmen, und in solchen Fällen ist die Wahrscheinlichkeit groß, dass auch andere zentrale Informationen fehlen
    Außerdem ist es schön, dass es nicht irgendein npm install-Ding ist

    • Ich hasse so etwas in Dokumentationen wirklich
      Manchmal gibt es nur Code- oder Konfigurationsschnipsel, die für sich allein nicht funktionieren, und es ist unklar, wo man sie einfügen soll oder worin sie verschachtelt sind
      Manchmal werden auch Imports verwendet, deren Namen auf der Seite nirgends zu finden sind
      Wenigstens ein vollständiges Beispiel oder ein Link dazu am Ende der Seite wäre schön
    • Ich habe viel zu viel Zeit damit verloren, nur anhand eines fehlenden .h-Dateinamens make zu hämmern oder in apt nach lib-$THING zu suchen
    • Zuerst war ich leicht enttäuscht, als ich sah, dass man es selbst bauen muss, aber das Repository ist klein und der Build ist in einer Sekunde fertig
      So etwas sollte der Standard sein und keine angenehme Ausnahme
    • Es fühlt sich an wie „den Rest überlassen wir als Übung dem Leser“
      Diese Frustration kann ich zu 100 % nachvollziehen
      Etwas wie dieses Repository, in das make eingeht, würde ich nirgendwo in unseren Prozessen aufnehmen wollen
      Es wird am Ende ohnehin scheitern
      Andererseits ist das hier nicht für den ernsthaften Einsatz gedacht, sondern eher ein Spielzeugprojekt
    • Umgekehrt wäre es schön, wenn Software leicht zu installieren wäre, daher ist die Aufnahme in Distributionspakete praktisch
      Trotzdem wäre es cool, wenn man sie ohne Abhängigkeiten direkt aus dem Quellcode ausführen könnte, und deshalb scheinen einige Tools noch immer in reinem Shell-Code geschrieben zu werden
  • Bei echten kryptanalytischen Angriffen gibt es Kategorien wie CBC-Padding-Orakel, Bleichenbachers RSA-Padding-Orakel und Byte-für-Byte-Angriffe auf ECB, die bei der Ausführung wie die Entschlüsselungsszene aus Sneakers aussehen
    Soweit ich mich erinnere, hat Juliano Rizzo dafür den Begriff Hollywood Attack geprägt
    Das ist ein guter Begriff, ich fände es schön, wenn ihn alle verwenden würden, und er hilft auch ein wenig dabei, eine Intuition für den Angriff zu entwickeln
    Viele kryptanalytische Angriffe arbeiten nicht damit, gleich die gesamten 128 oder 2048 Bit einer Nachricht auf einmal anzugehen, sondern isolieren auf kreative Weise jeweils ein Byte des Chiffrats

  • Ich liebe diesen Film wirklich
    Ich habe ihn als Kind auf VHS gesehen, und zufällig fahre ich jeden Tag mit dem Fahrrad an dem Hintergrund einer der Schlüsselszenen vorbei
    Das ist der gemauerte Innenhof, der heute zwischen Google und Wharton liegt
    Im Film erscheint er als Außenbereich zum Essen, und Sidney Poitier sagt mit dem Autotelefon in Martins Karmann Ghia: „Martin, It's your mother“
    Danach merken sie, dass sie nicht mit der NSA zusammenarbeiten
    Inzwischen hat man dort eine scheinbar schwebende Feuerwache hinzugefügt, und die Straße ist auch etwas anders, aber ich mag, dass die Szenerie noch immer ähnlich geblieben ist wie zur Zeit der Dreharbeiten
    Insgesamt ist es wirklich ein sehr gut gemachter Film

  • Man lädt 3 bis 5 Quelldateien herunter, tippt einfach make, und es baut einfach?
    Keine Einrichtung einer isolierten Build-Umgebung, kein Herunterladen von 1600 Abhängigkeiten, um sie aus dem Quellcode zu bauen, keine Installation einer Dateisystemhierarchie mit 1600 .so-Bibliotheken, kein Docker, kein npm?
    Und dann ist es auch noch in weniger als einer Sekunde kompiliert?
    Erstaunlich, was diese neue Sprache C alles kann

    • Nicht ganz
      make und die C-Toolchain müssen installiert sein
      Wenn das installiert ist, dann ist ziemlich wahrscheinlich auch Python, Perl und vielleicht sogar ein recht aktuelles Java vorhanden
      Nicht auf MacOS, aber bei den meisten Linux-Distributionen dürfte das so sein
      Und alle diese Sprachen können dasselbe ebenfalls ohne Abhängigkeiten leisten
    • Da kommen sofort alte Erinnerungen hoch
      In den 90ern dachte man oft fälschlicherweise, ein C-Programm würde aufgebläht, wenn man stdlib.h oder andere Bibliotheken einbindet, und implementierte dann Methoden selbst
      Das heißt wohl auch, dass man nicht wusste, wie das Linken funktioniert
      Mein 12-jähriges Ich würde heute beim Anblick von NPM, pip, bundle oder sogar Electron nach Luft schnappen
      Mit sehr wenig konnte man wirklich sehr viel machen
    • Das gilt für alle Sprachen
      Wenn die Umgebung installiert ist und das Programm keine Abhängigkeiten hat, muss man nur den Build-Befehl ausführen
      Dieses Projekt braucht ebenfalls gcc, make und ncurses ohne angegebene Versionen
    • Hoffentlich wird für solche Sprachen nicht zu viel Werbung gemacht
      Sonst endet es womöglich wie das heutige schreckliche Python
      Python war einmal fantastisch und hat tatsächlich einfach funktioniert
      Dann haben es alle entdeckt, Nvidia hat sich eingemischt, und mit TensorFlow/PyTorch/Machine Learning ist alles kaputtgegangen
      Weil zu viele Script-Kiddies Zeug zusammengeschustert haben, ohne sich um Paketkompatibilität zu kümmern
      Die Community ist zugleich die größte Stärke dieser Sprache und ihr schlimmster Aspekt
    • Bei mir hat make persönlich so selten auf Anhieb funktioniert, dass ich bei C-Projekten inzwischen meist denke: „Cool, aber ich werde das ohnehin nicht kompilieren können“, und den Tab schließe
      Dieses Projekt ließ sich gut bauen
  • Wenn ich das Wort „Passport“ höre, kann ich nicht anders, als „My voice is my passport“ zu sagen, wenigstens in meinem Kopf

    • Bei mir ist es „cattle“
      „cattle mutilations are up“
    • Das HSBC-Callcenter hatte Spracherkennung, und ich glaube, dort hieß es „Your voice is your passport“ oder „password“
      Inzwischen weiß ich nicht mehr, was von beidem es war
    • Es reicht schon, wenn irgendjemand nur das Wort passport sagt
    • „…verify me“
      Das war gerade nicht leicht für mich
    • Bei Bell gab es so eine Funktion tatsächlich, und The Phone Losers of America haben sie ausgenutzt
      Der Hack war direkt vom Film inspiriert, und PLA hat ihn in einer Podcast-Episode vorgeführt
      https://phonelosers.com/2008/05/pla-radio-episode-17-voice-a...
  • Die Kombination mit cool-retro-term[1] ist unverzichtbar, um auf meinem Computer echte Hacker-Zeit zu verbringen
    [1] https://github.com/Swordfish90/cool-retro-term

    • Ich habe cool-retro-term und no-more-secrets auf einem Chromebook mit aktiviertem Linux installiert, und es sieht tatsächlich ziemlich gut aus
      https://www.youtube.com/watch?v=_gRIG_zK4SQ
    • Dieser bernsteinfarbene Bildschirm löst sofort Nostalgie aus
      In meinem ersten Helpdesk-Job gehörte auch Mainframe-Support dazu, und ich konnte noch ein altes IBM-4-fach-Plasma-Terminal benutzen, das damals noch vorhanden war
      Das Ticketsystem lief ebenfalls noch auf dem Mainframe und war daher für die Helpdesk-Arbeit tatsächlich nützlich
      Vermutlich war es dieses Modell oder etwas sehr Ähnliches: https://www.argecy.com/ibm-3290-plasma-terminal
    • Wenn dir das gefällt, dürfte dir wahrscheinlich auch das hier[1] gefallen
      [1] https://github.com/Rezmason/matrix
    • Auf dem Mac lässt es sich mit folgendem Befehl leicht installieren
      brew install --cask cool-retro-term
    • Genau das Richtige für einsame und langweilige Nächte
  • Es ist schon bemerkenswert, dass mir beim Lesen von Kevin Mitnicks Nachruf sofort dieser Film eingefallen ist
    Vermutlich ging es vielen so

  • Immer wieder unterhaltsam
    Vor ein paar Jahren habe ich ein einzelnes Python-Skript namens decrypt.py geschrieben, das fast genau dasselbe macht
    Traurigerweise ist es bis heute das beliebteste Repository unter meinen GitHub-Projekten: https://github.com/jtwaleson/decrypt

  • Ich würde wirklich gern eine moderne Version von Sneakers sehen
    Am besten mit einer Handlung, in der jemand herausfindet, dass ein Quantencomputer vermutlich bereits gebaut wurde, und ihn stehlen muss, falls er tatsächlich existiert
    Das würde auch perfekt zum „no more secrets“-Meme des ursprünglichen Sneakers passen

    • Persönlich hätte ich auch nichts gegen ein Remake mit der Originalbesetzung gehabt
      Allerdings war das Original selbst schon ein Film über Alter und Reife, daher wäre es wohl nicht besonders überzeugend gewesen, die Geschichte einfach nur eine weitere Generation später anzusiedeln
      Es ist schade, dass River Phoenix und Sidney Poitier nicht mehr leben, und ich habe sogar nachgesehen, ob Ben Kingsley noch lebt
      Für einen Film, der sich in gewissem Maß mit Technik beschäftigt, hat sich das Original meiner Meinung nach erstaunlich gut gehalten
      Zum Teil auch deshalb, weil es genau vor dem World Wide Web spielt und es selbst 2023 noch vorkommt, dass wichtige Systeme auf Mainframes laufen
    • Stimmt
      Ich weiß nicht, warum die Filme, die ich als Kind mochte, keine Reboots, Fortsetzungen, Prequels oder wenigstens eine gescheiterte Fortsetzung bekommen
  • Das ist einer meiner absoluten Lieblingsfilme
    Die Entschlüsselungsszene ist in meiner Erinnerung wirklich ikonisch, und dieses Projekt hat dieses Gefühl vollkommen perfekt eingefangen