
Analyseur et outil de triage binaire — entropie, classes d'octets et surfaces de Hilbert, diagrammes en points et graphes de flux de contrôle sur un modèle d'espace d'adressage partagé.
Outil de visualisation et de triage binaire : vues interactives liées (entropie, histogrammes, surfaces image/dot-plot, graphes de flux de contrôle) sur un modèle d'espace d'adressage partagé unique.
pipx install binviz && binviz serve
Ouvrez un fichier et chaque vue observe le même espace d'adressage. Sélectionnez une plage dans l'une et les autres suivent — l'objectif est de répondre à la question « qu'est-ce que cette région » en l'examinant de plusieurs manières à la fois.
binviz model analyse ELF/PE/Mach-O via LIEF en régions, symboles et un mappage offset↔adresse virtuelle, en matérialisant les lacunes et les superpositions. Une entrée malformée retombe sur un modèle brut plutôt que d'échouer.binviz triage indique à quoi ressemble le fichier et pourquoi ; dans l'interface, chaque constatation renvoie aux octets dont elle est dérivée.L'interface comprend cinq espaces de travail — Vue d'ensemble, Octets, Motifs, Code et Tout — sur la même sélection. Analyse statique uniquement : les échantillons sont analysés, jamais exécutés.




Rendu par le même code que celui utilisé par l'interface, directement depuis la CLI — régénérez avec python docs/make_plates.py.
| Un binaire statique | Le même programme, compressé avec UPX |
|---|---|
![]() | ![]() |
| Le code, les chaînes et le bourrage se séparent en territoires visibles. | La structure s'effondre en bruit uniforme — la signature de la compression. |
![]() | ![]() |
| L'entropie fenêtrée reste en bandes et faible. | Plate et élevée, jusqu'au stub de décompression. |
| Bon pas de ligne | Mauvais pas de ligne |
|---|---|
![]() | ![]() |
Mêmes octets, un seul nombre différent. C'est pourquoi le suggérateur de pas existe : un mauvais pas de ligne transforme une photographie en bruit diagonal, et vous concluez qu'il n'y a pas de photographie.
ARCHITECTURE.md explique comment c'est assemblé : ce qui est livré, la marque que chaque surface hérite, les conventions qu'un nouvel écran doit suivre, et les limitations qui sont délibérées. SECURITY.md est la posture de sécurité.
python -m venv .venv
# -c épingle aux versions exactes contre lesquelles la suite est verte ; pyproject.toml
# publie des plages, donc sans cela vous obtenez ce qui se résout aujourd'hui
.venv/Scripts/pip install -e ".[dev]" -c constraints-dev.txt # POSIX : .venv/bin/pip
# construire le corpus de vérité terrain (utilise zig cc du paquet pip ziglang ;
# nécessite UPX dans PATH, dans $UPX, ou décompressé dans corpus/tools/upx-*/)
make -C corpus # ou : python corpus/build.py
# les seuils sont mesurés, jamais codés en dur (voir ARCHITECTURE.md §2.1)
python corpus/calibrate.py # écrit corpus/calibration.json
pytest # suite fonctionnelle
pytest -m perf -s # cibles de performance 100 Mo
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
# surfaces : -p passe les paramètres de surface
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
# code
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
# le verdict, et pourquoi
binviz triage corpus/out/hello_upx
binviz serve # 127.0.0.1:8000
Il affiche une URL contenant un jeton de session — ouvrez-la. Chaque route /api exige le jeton, car « il n'écoute que sur localhost » n'est pas une défense contre une page web dans un autre onglet, qui atteint 127.0.0.1 comme n'importe quelle autre origine. SECURITY.md contient le raisonnement.
L'accès aux fichiers est confiné à --root (par défaut : le répertoire de travail), donc les chemins en dehors sont refusés.