Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
binviz — Binärer Visualisierer und Triage-Werkzeug — Entropie-, Byte-Klassen- und Hilbert-Oberflächen, Punktdiagramme und Kontrollflussgraphen über einem gemeinsamen Adressraum-Modell. | Kitploit
Tools/GitHubGitHub/karankantaria/binviz
Statische AnalyseReverse EngineeringForensikFuzzingMalware-AnalyseBinäranalyseLernen & Bildung
GitHubkarankantaria/binviz

binviz

Binärer Visualisierer und Triage-Werkzeug — Entropie-, Byte-Klassen- und Hilbert-Oberflächen, Punktdiagramme und Kontrollflussgraphen über einem gemeinsamen Adressraum-Modell.

Repository anzeigen
3vor 1 TagNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Webseite
Teilen

binviz

Binärvisualisierungs- und Triage-Tool: verknüpfte interaktive Ansichten (Entropie, Histogramme, Bild-/Punktdiagramm-Oberflächen, Kontrollflussgraphen) über einem gemeinsamen Adressraummodell.

root@kitploit:~
pipx install binviz && binviz serve

Was es tut

Öffnen Sie eine Datei, und jede Ansicht betrachtet denselben Adressraum. Wählen Sie einen Bereich in einer aus, und die übrigen folgen — das Ziel ist es, die Frage „Was ist diese Region?“ zu beantworten, indem man sie gleichzeitig auf mehrere Arten betrachtet.

  • Kartieren. binviz model parst ELF/PE/Mach-O über LIEF in Regionen, Symbole und eine Offset↔virtuelle-Adress-Zuordnung und materialisiert Lücken und Überlagerungen. Fehlerhafte Eingaben fallen auf ein Rohmodell zurück, statt zu scheitern.
  • Die Teile finden, die einen Blick wert sind. Fensterbasierte Entropie und andere benannte Signale, Byteklassen- und Hilbert-Oberflächen sowie Fensterklassifikation gegen Schwellenwerte, die aus einem Ground-Truth-Korpus gemessen statt ausgewählt werden (ARCHITECTURE.md §2.1). Gepackt, verschlüsselt, Code und Padding sehen nicht gleich aus.
  • Eine Kodierung identifizieren. Bigramm- und Sparse-Trigramm-Histogramme, ein Punktdiagramm für Wiederholungen und Selbstähnlichkeit sowie eine Bildansicht über 15 gepackte Pixelformate und 24 Bayer-Modi — mit einem Zeilenlängen-Vorschläger, denn die falsche Zeilenlänge verwandelt ein Foto in diagonales Rauschen, und man schließt daraus, dass es kein Foto gibt.
  • Den Code lesen. Capstone-Dekodierung per linearem Sweep und rekursivem Abstieg (differential gegen objdump getestet), eine fünfstufige Funktionserkennungs-Kaskade einschließlich Sprungtabellen sowie Kontrollflussgraphen, die in einem Worker angeordnet werden — wobei die Unsicherheit einer rekonstruierten Grenze gezeichnet statt verborgen wird.
  • Ein Urteil erhalten. binviz triage sagt, wie die Datei aussieht und warum; in der UI führt jeder Befund per Klick zu den Bytes, aus denen er abgeleitet wurde.
  • Die UI besteht aus fünf Arbeitsbereichen — Übersicht, Bytes, Muster, Code und Alles — über derselben Auswahl. Nur statische Analyse: Proben werden geparst, niemals ausgeführt.

    Screenshots

    Übersichts-Arbeitsbereich

    Bytes-Arbeitsbereich

    Muster-Arbeitsbereich

    Code-Arbeitsbereich

    Tafeln

    Gerendert mit demselben Code, mit dem die UI zeichnet, direkt aus der CLI — neu generieren mit python docs/make_plates.py.

    Ein statisches BinärprogrammDasselbe Programm, UPX-gepackt
    Hilbert-Byteklasse, statischHilbert-Byteklasse, gepackt
    Code, Strings und Padding trennen sich in sichtbare Territorien.Die Struktur kollabiert zu gleichförmigem Rauschen — das Kennzeichen von Packen.
    Entropie, statischEntropie, gepackt
    Fensterbasierte Entropie bleibt gebändert und niedrig.Flach und hoch, bis direkt zum Entpack-Stub.
    Richtige ZeilenlängeFalsche Zeilenlänge
    RGB-Balken, korrekte ZeilenlängeRGB-Balken, falsche Zeilenlänge

    Dieselben Bytes, eine Zahl anders. Genau deshalb gibt es den Zeilenlängen-Vorschläger: Die falsche Zeilenlänge verwandelt ein Foto in diagonales Rauschen, und man schließt daraus, dass es kein Foto gibt.

    ARCHITECTURE.md beschreibt, wie es zusammengesetzt ist: was ausgeliefert wird, das Branding, das jede Oberfläche erbt, die Konventionen, denen ein neuer Bildschirm folgen muss, und die Einschränkungen, die bewusst gewählt sind. SECURITY.md ist die Sicherheitslage.

    Schnellstart

    root@kitploit:~
    python -m venv .venv
    # -c pinnt auf die exakten Versionen, gegen die die Suite grün ist; pyproject.toml
    # veröffentlicht Bereiche, also ohne -c bekommt man, was heute aufgelöst wird
    .venv/Scripts/pip install -e ".[dev]" -c constraints-dev.txt   # POSIX: .venv/bin/pip
    
    # Ground-Truth-Korpus bauen (verwendet zig cc aus dem ziglang-Pip-Paket;
    # benötigt UPX im PATH, in $UPX oder entpackt in corpus/tools/upx-*/)
    make -C corpus                            # oder: python corpus/build.py
    
    # Schwellenwerte werden gemessen, nie hartkodiert (siehe ARCHITECTURE.md §2.1)
    python corpus/calibrate.py                # schreibt corpus/calibration.json
    
    pytest                                    # funktionale Suite
    pytest -m perf -s                         # 100-MB-Leistungsziele
    
    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
    
    # Oberflächen: -p übergibt Oberflächenparameter
    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
    
    # Das Urteil und warum
    binviz triage corpus/out/hello_upx
    

    Den Server ausführen

    root@kitploit:~
    binviz serve                              # 127.0.0.1:8000
    

    Er gibt eine URL mit einem Sitzungstoken aus — öffnen Sie diese. Jede /api-Route erfordert das Token, denn „es lauscht nur auf localhost“ ist keine Verteidigung gegen eine Webseite in einem anderen Tab, die 127.0.0.1 genauso erreicht wie jeder andere Ursprung. SECURITY.md enthält die Begründung.

    Der Dateizugriff ist auf --root beschränkt (Standard: das Arbeitsverzeichnis), daher werden Pfade außerhalb davon verweigert.

    Grenzen

    Alle vier haben ein Flag und eine Umgebungsvariable, und alle vier existieren, um zu verhindern, dass ein lokaler Aufrufer mehr verbraucht, als beabsichtigt. Die Standardwerte sind für ein Laptop gewählt; erhöhen Sie sie, wenn Ihre Maschine größer ist.

    FlagEnvStandardWas es begrenzt
    --max-cache BYTESBINVIZ_MAX_CACHE5 GiBGesamtgröße der gecachten Analysen. Darüber hinaus werden am wenigsten zuletzt verwendete Einträge entfernt — niemals einer, der gerade analysiert oder angezeigt wird.
    --max-upload BYTESBINVIZ_MAX_UPLOAD8 GiBGrößter akzeptierter Upload.
    --max-analyses N—4Gleichzeitige Analysen; darüber hinaus gibt /api/open 503 zurück.
    --root DIR—cwdVerzeichnis, aus dem der Server Dateien lesen darf.

    Analysen werden unter ~/.cache/binviz (oder $BINVIZ_CACHE) gecacht, schlüsselbasiert auf dem Inhalts-Hash, sodass das erneute Öffnen eines Binärprogramms sofort erfolgt. Erhöhen Sie --max-cache, wenn Sie lieber mehr davon behalten möchten; der Cache kann jederzeit von Hand gelöscht werden — der schlimmste Fall ist, dass das nächste Öffnen neu analysiert.

    Weitere Flags: --token, um ein Token über Neustarts hinweg zu fixieren (nützlich mit dem Vite-Dev-Proxy, der BINVIZ_TOKEN liest), --port, --cache und --no-auth für CI. --no-auth gibt ein Banner aus, das sagt, was es deaktiviert hat; verwenden Sie es nicht auf einer Maschine, die Sie teilen.

    Desktop-Fenster

    root@kitploit:~
    pip install "binviz[app]"
    binviz app                    # natives Fenster; --browser für Ihren Browser
    

    Derselbe Server, dasselbe Token, dieselbe --root-Beschränkung wie bei binviz serve — der einzige Unterschied ist, was es anzeigt. Ohne installiertes pywebview öffnet binviz app stattdessen Ihren Browser.

    Es gibt die URL aus, auf der es läuft, bewusst: Die UI in ein Fenster zu packen, entfernt den Netzwerk-Listener nicht, es macht nur leichter zu vergessen, dass es einen gibt. Der Listener ist in beiden Fällen authentifiziert, und es gibt kein --no-auth bei binviz app.

    Das Fenster stellt der Seite genau eine Funktion zur Verfügung — einen nativen Dateiauswähler — und sonst nichts. Siehe src/binviz/app.py, warum diese Liste so kurz ist, wie sie ist.

    Eine eigenständige App bauen

    Releases liefern ein Wheel und sonst nichts. Ein unsigniertes eingefrorenes Python-Programm, das capstone und lief bündelt und dazu dient, gepackte Binärdateien zu sezieren, ist genau das Profil, auf das SmartScreen- und AV-Heuristiken falsch positiv reagieren — also liefert das Repo statt dessen, was Sie brauchen, um es selbst zu bauen, was Code-Signierung vollständig umgeht.

    root@kitploit:~
    pip install pyinstaller                # 6.x
    python tools/build_ui.py               # baut web/ und stagt es in das Paket
    pyinstaller packaging/binviz.spec      # -> dist/binviz/
    

    Erwarten Sie ~100 MB, dominiert von numpy und lief. Es ist ein Onedir-Bundle, keine einzelne selbstextrahierende Datei: Starten Sie dist/binviz/binviz.exe (oder doppelklicken Sie darauf) für das Desktop-Fenster, oder geben Sie ihm einen beliebigen Unterbefehl — dist/binviz/binviz.exe triage sample.exe — denn der eingefrorene Build ist die gesamte CLI, nicht nur das Fenster.

    Der Staging-Schritt ist nicht optional. web/dist liegt außerhalb des Python-Pakets, sodass das Überspringen eine App erzeugt, deren Fenster auf einem JSON-404 öffnet; die Spec weigert sich zu bauen, statt das stillschweigend zuzulassen.

    Auf macOS erzeugt derselbe Befehl auch dist/Striate.app, gebrandet aus packaging/icons/icon.icns. Keines von beiden wurde auf einem Mac ausgeführt — siehe ARCHITECTURE.md §5.

    --root ist standardmäßig weiterhin das Arbeitsverzeichnis, sodass ein doppelgeklicktes Programm auf den Ordner beschränkt ist, in dem es startet — was normalerweise der eigene Ordner der App ist. Setzen Sie „Start in“ der Verknüpfung oder starten Sie es mit --root DIR.

    Ein doppelgeklicktes Programm fragt nach einer Anmeldeinformation. Ohne Argumente führt der eingefrorene Build binviz app --auth local aus, was der eine Unterschied zum Standard des Wheels ohne Anmeldebildschirm ist. Die beiden beantworten unterschiedliche Fragen: binviz app, in ein Terminal getippt, ist bereits eine bewusste Handlung dessen, der die Sitzung besitzt, während ein Doppelklick nichts etabliert — es ist der einzige Startpfad ohne Terminal, ohne getippten Befehl und ohne Beschränkungsentscheidung dahinter. Nach der Anmeldeinformation zu fragen, ist die Art, wie das Fenster laut ausspricht, was das Terminal gesagt hätte. Führen Sie zuerst binviz passwd aus, um eine zu setzen, oder übergeben Sie --auth none explizit, um sie zu überspringen; alles, was Sie in der Befehlszeile angeben, gewinnt weiterhin.

    Anmelden

    Standardmäßig gibt es keinen Anmeldebildschirm und nichts zu kopieren: Der Server erzeugt ein Sitzungstoken und injiziert es in die Seite, die er ausliefert, sodass das Öffnen von http://127.0.0.1:8000/ einfach funktioniert, während jeder API-Aufruf weiterhin authentifiziert ist.

    Auf einer Maschine, die Sie teilen, aktivieren Sie den Anmeldebildschirm:

    root@kitploit:~
    binviz passwd                 # fragt ab; scrypt-Digest, Modus 0600
    binviz serve --auth local
    

    Wenn Sie binviz passwd überspringen, beansprucht die erste Anmeldung die Installation — das Startbanner warnt davor, denn wer zuerst den Port erreicht, wird zum Konto.

    Ein doppelgeklicktes eingefrorenes Programm aktiviert --auth local für sich selbst; siehe Eine eigenständige App bauen, warum dieser Standard sich vom Wheel unterscheidet.

    Der Anmeldebildschirm ist nicht die Sicherheitsgrenze; die Token-Prüfung auf jeder /api-Route ist es. Alles auf der Maschine kann das Formular überspringen und die API direkt aufrufen, was genau der Grund ist, warum das Token existiert. Siehe SECURITY.md.

    Sicherheit

    binviz öffnet Dateien, die ein Angreifer gewählt hat — das ist der Job, kein Randfall, und ein Triage-Tool, bei dem die Analyse von Malware den Analysten kompromittiert, ist das schlimmste verfügbare Versagen. Proben werden geparst, niemals ausgeführt. Was mit dem Rest geschieht:

    Gegen ein feindseliges Binärprogramm

    • Das Parsen verschlechtert sich statt zu scheitern: Ein Binärprogramm, mit dem LIEF nichts anfangen kann, fällt auf ein Rohmodell zurück, sodass die fehlerhafte Probe, die Sie am meisten ansehen möchten, weiterhin inspizierbar ist.
    • Jede Zuordnung ist auf EOF begrenzt, und was abgeschnitten wurde, wird in den Warnungen des Modells gemeldet, statt stillschweigend korrigiert zu werden.
    • Disassemblierung kann nicht endlos schleifen — der Sweep begrenzt bei 1M Anweisungen und führt eine Besuchsmenge, sodass ein Sprung-auf-sich-selbst strukturell statt per Timeout endet. Die Sprungtabellen-Rekonstruktion begrenzt bei 256 Einträgen.
    • Cache-Pfade können nicht traversiert werden: Die id in jeder /api/{id}/…-Route muss exakt 64 Hexadezimalzeichen sein, bevor sie zum Erstellen eines Pfads verwendet wird.
    • Große Dateien streamen statt puffern, sodass eine Datei größer als RAM langsam statt ein Out-of-Memory-Absturz ist.

    Gegen einen feindseligen Browser — die Bedrohung, die „es lauscht nur auf localhost“ nicht adressiert, denn eine Seite in einem anderen Tab erreicht 127.0.0.1 wie jeder andere Ursprung:

    • Jede /api-Route erfordert ein Token. Es wird beim Start erzeugt und in die Seite injiziert, sodass nichts von Hand eingefügt wird und keine Route offen bleibt.
    • Der Anmeldebildschirm ist nicht die Sicherheitsgrenze — die Token-Prüfung ist es. Das Formular kann übersprungen werden; das Token nicht.
    • Der Dateizugriff ist auf --root beschränkt, was standardmäßig das Arbeitsverzeichnis ist. Pfade außerhalb davon werden verweigert.
    • Host-Zulassungsliste und enge CORS, sodass der Ursprung, der Zugriff benötigt, der einzige ist, der ihn erhält.
    • Binärmetadaten können nicht zu Skript werden: Strings, die aus einer Probe gehoben werden — Abschnittsnamen, Symbole — durchlaufen einen einzigen Escaper, unterstützt durch eine CSP.
    • Anfragen sind begrenzt und validiert — Upload-Größe, Cache-Größe, Rasterabmessungen und Analyseparallelität haben alle Obergrenzen (siehe Grenzen).

    Das Desktop-Fenster entfernt den Netzwerk-Listener nicht, es macht nur leichter zu vergessen. Also gibt es kein --no-auth bei binviz app, und die js_api-Brücke legt genau eine Methode offen — pick_file(), die keine Argumente annimmt und einen Pfad durch dieselbe --root-Beschränkung zurückgibt. Ein Test schlägt fehl, wenn jemals eine zweite Methode erscheint.

    Anmeldeinformationen für --auth local sind scrypt-Digests, geschrieben im Modus 0600; binviz speichert kein Klartext-Passwort.

    SECURITY.md enthält das Bedrohungsmodell, die Begründung hinter jeder Kontrolle, was bewusst noch nicht getan ist und wie eine Schwachstelle privat gemeldet wird.

    Lizenz

    MIT — siehe LICENSE.

    Das Korpus cross-kompiliert ELF-Proben mit zig cc, sodass keine Linux-Toolchain auf Windows/macOS benötigt wird — Proben werden geparst, niemals ausgeführt.

    Tool herunterladen