
Visualizza sequenze di byte ripetute nei file binari per rivelare strutture nascoste, supportando il reverse engineering e l'individuazione di pattern senza firme predefinite.

hexcymatix è un progetto di ricerca esplorativo, vagamente concepito come uno
strumento di reverse engineering binario per estrarre informazioni strutturali
da pattern di byte ripetuti nei file binari.
L'idea non si è mai concretizzata in uno strumento utilizzabile, ma produce comunque alcune affascinanti rappresentazioni della sorprendente auto-simmetria presente nei dati di uso quotidiano.
A volte nel reverse engineering hai un esempio di certi dati — una tabella, un blob compresso, un payload di protocollo — e vuoi trovare dati simili altrove in un file, senza ancora poter scrivere una regola o un parser che li descriva. Vuoi similarità senza specifica.
hexcymatix parte dal presupposto che stringhe di byte ripetute implichino
struttura o relazione, anche se non sappiamo quale sia quella struttura.
Visualizzando le ripetizioni, possiamo far emergere dati correlati senza sapere
esattamente cosa stiamo cercando.
Ad esempio, il brano delle Pensées qui sotto contiene diverse sequenze che si
ripetono (' incapable of ', ' which he ', 'ing either ') — hexcymatix
dispone il file su due righe e collega qualsiasi sequenza di byte ripetuta di
almeno 8 byte:

Le connessioni che emergono suggeriscono quindi struttura e relazioni sottostanti nei dati.
Ripetendo questo processo su un file binario di uso quotidiano, si iniziano a far emergere automaticamente auto-similarità, connessioni e strutture inaspettate. Come esempio, ecco l'eseguibile per la ricerca degli errori in un'installazione Windows standard:

La parte più importante del processo è aggiungere archi tra le connessioni dei frammenti per rendere l'output accattivante:

Avendo ormai perso completamente il filo, possiamo sperimentare con varie rappresentazioni dei dati. Ad esempio, lo stesso file e le stesse connessioni renderizzate attorno al perimetro di un cerchio appaiono come segue:

python hexcymatix.py [options] file [file ...]
| Flag | Description |
|---|---|
--circular | Layout circolare: gli offset dei byte corrispondono ad angoli su un anello (predefinito) |
--linear | Layout a barre parallele: due barre orizzontali collegate da quadrilateri incrociati |
--top N [N ...] | Mantieni solo gli N frammenti più lunghi prima del rendering; passa più valori per renderizzare un'immagine per ogni soglia |
--no-arcs | Disegna solo le corde, saltando gli archi (sostanzialmente più veloce, meno rumore visivo) |
--resolution RES | Risoluzione di output come WxH o un preset: 480p, 720p, 1080p, 1440p, 4k, uwfhd (2560x1080), suwfhd (3840x1080) (predefinito: 1080p) |
--ultra | Abbreviazione di --resolution 4000x4000 |
--circle-fill F | Frazione del diametro della tela occupata dal cerchio (predefinito: 0.25, o 0.50 per i preset ultra-wide) |
--jpg | Scrivi anche un JPEG all'80% di qualità accanto a ogni PNG |
--output-dir DIR | Directory per i file di output (predefinito: 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













