
Visualizzatore binario e strumento di triage — superfici di entropia, classi di byte e Hilbert, dot plot e grafi di flusso di controllo su un unico modello condiviso di spazio degli indirizzi.
Strumento di visualizzazione e triage binario: viste interattive collegate (entropia, istogrammi, superfici immagine/dot-plot, grafi di flusso di controllo) su un unico modello condiviso di spazio degli indirizzi.
pipx install binviz && binviz serve
Apri un file e ogni vista osserva lo stesso spazio degli indirizzi. Seleziona un intervallo in una e le altre lo seguono — l'obiettivo è rispondere a "cos'è questa regione" osservandola in più modi contemporaneamente.
binviz model analizza ELF/PE/Mach-O tramite LIEF in regioni, simboli e una mappatura offset↔indirizzo virtuale, materializzando lacune e sovrapposizioni. Input malformati ricadono su un modello grezzo invece di fallire.binviz triage dice come appare il file e perché; nell'interfaccia ogni risultato porta con un clic ai byte da cui è stato derivato.L'interfaccia è composta da cinque aree di lavoro — Panoramica, Byte, Pattern, Codice e Tutto — sulla stessa selezione. Solo analisi statica: i campioni vengono analizzati, mai eseguiti.




Renderizzate dallo stesso codice che l'interfaccia usa per disegnare, direttamente dalla CLI — rigenera con python docs/make_plates.py.
| Un binario statico | Lo stesso programma, impacchettato con UPX |
|---|---|
![]() | ![]() |
| Codice, stringhe e padding si separano in territori visibili. | La struttura collassa in rumore uniforme — la firma dell'impacchettamento. |
![]() | ![]() |
| L'entropia a finestra rimane a bande e bassa. | Piatta e alta, fino allo stub di decompressione. |
| Stride di riga corretto | Stride di riga sbagliato |
|---|---|
![]() | ![]() |
Stessi byte, un numero diverso. Ecco perché esiste il suggeritore di stride: lo stride di riga sbagliato trasforma una fotografia in rumore diagonale, e concludi che non c'è alcuna fotografia.
ARCHITECTURE.md spiega come è assemblato: cosa viene distribuito, il marchio che ogni superficie eredita, le convenzioni che una nuova schermata deve seguire, e i limiti che sono deliberati. SECURITY.md è la postura di sicurezza.
python -m venv .venv
# -c fissa le versioni esatte contro cui la suite è verde; pyproject.toml
# pubblica intervalli, quindi senza di esso ottieni qualunque cosa risolva oggi
.venv/Scripts/pip install -e ".[dev]" -c constraints-dev.txt # POSIX: .venv/bin/pip
# costruisci il corpus di verità di base (usa zig cc dal pacchetto pip ziglang;
# richiede UPX nel PATH, in $UPX, o decompresso in corpus/tools/upx-*/)
make -C corpus # oppure: python corpus/build.py
# le soglie sono misurate, mai hardcoded (vedi ARCHITECTURE.md §2.1)
python corpus/calibrate.py # scrive corpus/calibration.json
pytest # suite funzionale
pytest -m perf -s # obiettivi di prestazione 100 MB
binviz probe corpus/out/hello_O2
binviz model corpus/out/hello_upx
binviz signal corpus/out/hello_upx --name entropy_4096 --png out.png
binviz hist corpus/out/ramp16.bin --n 2 --dtype u16le --png bigram.png
# superfici: -p passa i parametri della superficie
binviz surface corpus/out/hello_static --name hilbert -p mode=byteclass --png h.png
binviz surface corpus/out/rgb_raw.bin --name image -p mode=rgb8 -p width=320 --png i.png
binviz surface corpus/out/repeats.bin --name dotplot -p mode=exact --png d.png
binviz stride corpus/out/bayer_raw.bin --mode bayer_RGGB_RGB_12
# codice
binviz disasm corpus/out/hello_O2 --limit 20
binviz functions corpus/out/hello_static --sort size
binviz cfg corpus/out/hello_O2 --func main --dot main.dot
# il verdetto, e il perché
binviz triage corpus/out/hello_upx
binviz serve # 127.0.0.1:8000
Stampa un URL contenente un token di sessione — aprilo. Ogni rotta /api richiede il token, perché "ascolta solo su localhost" non è una difesa contro una pagina web in un'altra scheda, che raggiunge 127.0.0.1 come qualsiasi altra origine. SECURITY.md contiene il ragionamento.
L'accesso ai file è limitato a --root (predefinito: la directory di lavoro), quindi i percorsi al di fuori di esso vengono rifiutati.
Tutti e quattro hanno un flag e una variabile d'ambiente, e tutti e quattro esistono per impedire a un chiamante locale di consumare più di quanto intendi. I valori predefiniti sono scelti per un laptop; alzali se la tua macchina è più grande.