
Visualisiert wiederholte Bytesequenzen in Binärdateien, um verborgene Strukturen aufzudecken, und unterstützt Reverse Engineering und Mustererkennung ohne vordefinierte Signaturen.

hexcymatix ist ein exploratives Forschungsprojekt, das lose als ein binäres
Reverse-Engineering-Werkzeug zur Extraktion struktureller Informationen aus
wiederholten Bytemustern in Binärdateien konzipiert war.
Die Idee wurde nie zu einem brauchbaren Werkzeug ausgearbeitet, liefert aber dennoch einige faszinierende Darstellungen der auffälligen Selbstsymmetrie in alltäglichen Daten.
Manchmal hat man beim Reverse Engineering ein Beispiel für bestimmte Daten — eine Tabelle, einen komprimierten Block, eine Protokoll-Payload — und möchte ähnliche Daten an anderer Stelle in einer Datei finden, ohne bereits eine Regel oder einen Parser schreiben zu können, der die Daten beschreibt. Man möchte Ähnlichkeit ohne Spezifikation.
hexcymatix geht davon aus, dass wiederholte Byte-Sequenzen Struktur oder
Beziehung implizieren, auch wenn wir nicht wissen, was diese Struktur ist. Indem
wir Wiederholungen visualisieren, können wir zusammenhängende Daten sichtbar
machen, ohne genau zu wissen, wonach wir suchen.
Zum Beispiel enthält die untenstehende Passage aus den Pensées mehrere sich
selbst wiederholende Sequenzen (' incapable of ', ' which he ', 'ing either ') —
hexcymatix legt die Datei über zwei Zeilen aus und verbindet alle wiederholten
Byte-Sequenzen mit einer Länge von mindestens 8 Bytes:

Die dabei entstehenden Verbindungen deuten dann auf zugrunde liegende Strukturen und Beziehungen in den Daten hin.
Wenn man diesen Prozess auf eine alltägliche Binärdatei anwendet, fördert er automatisch unerwartete Selbstähnlichkeiten, Verbindungen und Strukturen zutage. Als Beispiel hier das Error-Lookup-Programm aus einer Standard-Windows-Installation:

Der wichtigste Teil des Prozesses ist das Hinzufügen von Bögen zwischen den Fragment-Verbindungen, damit die Ausgabe cool aussieht:

Nachdem wir den Faden völlig verloren haben, können wir mit verschiedenen Darstellungen der Daten experimentieren. Zum Beispiel erscheinen dieselbe Datei und dieselben Verbindungen, um den Umfang eines Kreises angeordnet, wie folgt:

python hexcymatix.py [options] file [file ...]
| Option | Beschreibung |
|---|---|
--circular | Kreisförmiges Layout: Byte-Offsets werden auf Winkel auf einem Ring abgebildet (Standard) |
--linear | Parallelbalken-Layout: zwei horizontale Balken, verbunden durch sich kreuzende Vierecke |
--top N [N ...] | Nur die N längsten Fragmente vor dem Rendern behalten; mehrere Werte übergeben, um für jeden Schwellenwert ein Bild zu rendern |
--no-arcs | Nur Sehnen zeichnen und die Bögen überspringen (deutlich schneller, weniger visuelles Rauschen) |
--resolution RES | Ausgabeauflösung als WxH oder eine Voreinstellung: 480p, 720p, 1080p, 1440p, 4k, uwfhd (2560x1080), suwfhd (3840x1080) (Standard: 1080p) |
--ultra | Kurzform für --resolution 4000x4000 |
--circle-fill F | Anteil des Leinwanddurchmessers, der vom Kreis genutzt wird (Standard: 0.25 bzw. 0.50 bei den ultrabreiten Voreinstellungen) |
--jpg | Zusätzlich zu jedem PNG ein JPEG mit 80 % Qualität schreiben |
--output-dir DIR | Verzeichnis für die Ausgabedateien (Standard: output) |
# Circular visualization of an executable
python hexcymatix.py --circular guidgen.exe
# Linear visualization, top 500 fragments only
python hexcymatix.py --linear --top 500 guidgen.exe
# Batch, 4K output
python hexcymatix.py --circular --resolution 4k *.exe












