BBOT TUI Viewer

Eine eigenständige Terminal-UI zum Durchsuchen und Analysieren von BBOT-Scanergebnissen.

Funktionen
- 🚀 Keine Einrichtung – Einzelne, selbstinstallierende Datei, keine manuellen Abhängigkeiten
- 🔴 Live-Aktualisierung – Automatische Updates während laufender Scans mit präziser Statusermittlung
- 🎯 Intelligente Statusermittlung – Erkennt zuverlässig laufende, abgeschlossene und unterbrochene Scans
- 📋 Scan-Browser – Navigation durch mehrere Scans mit getrennten Schwachstellen-/Fund-Anzeigen und Statusindikatoren
- 📦 Archivverwaltung – Alte Scans komprimieren, um Speicherplatz zu sparen, bei Bedarf wiederherstellen
- 📝 Arbeitsverfolgung – Schwachstellen und Funde mit Status, Priorität und Notizen versehen
- 🔍 Getrennte Ansichten – Eigene Tabs für Schwachstellen (nach Schweregrad sortiert) und Funde
- 🌳 Entdeckungsbaum – Hierarchische Ansicht der Eltern-Kind-Ereignisbeziehungen
- 🌐 Subdomain-Baum – Hierarchische Ansicht entdeckter Subdomains (sofern verfügbar)
- 📊 Umfangreiche Statistiken – Übersichtliche Tabellen mit Ereignisverteilung, Bereichsanalyse und Workflow-Metriken
- 🔎 Ereignis-Explorer – Filtern, Suchen und Inspizieren aller Scan-Ereignisse
- ⚙️ Konfigurationsanzeige – Anzeige der preset.yml-Konfiguration
Schnellstart
# Auf Server kopieren und ausführen (installiert sich beim ersten Start selbst)
./bbot-ui
# Oder benutzerdefinierten Pfad angeben
./bbot-ui /path/to/scans
Beim ersten Start wird .bbot_ui_venv/ erstellt und Abhängigkeiten installiert. Nachfolgende Starts erfolgen sofort.
Verwendung
./bbot-ui # Standard: ~/.bbot/scans
./bbot-ui /path/to/scans # Alle Scans im Verzeichnis durchsuchen
./bbot-ui ~/.bbot/scans/scan-name # Bestimmten Scan anzeigen
Befehlszeilenoptionen
./bbot-ui --help # Alle Optionen anzeigen
./bbot-ui --scan-interval 5 # Scan-Ansicht alle 5 Sekunden aktualisieren
./bbot-ui --list-interval 10 # Scan-Liste alle 10 Sekunden aktualisieren
Verfügbare Optionen:
--scan-interval SEKUNDEN – Aktualisierungsintervall für die Scan-Detailansicht (Standard: 2,0)
--list-interval SEKUNDEN – Aktualisierungsintervall für die Scan-Listenansicht (Standard: 3,0)
Die Einstellungen werden automatisch in ~/.bbot_ui_config.json gespeichert und als Standardwerte für zukünftige Sitzungen verwendet.
Oberfläche
Scan-Liste
- Sofortiger Start – Die UI erscheint in <200 ms, Scans werden schrittweise geladen
- Alle Scans in einer Tabelle durchsuchen: Spalten: Scan-Name, Status, Ereignisse, Vulns, Funde, Zuletzt geändert
- Kopfzeile zeigt Gesamtzahl der Scans, Anzahl der Schwachstellen/Funde sowie Anzahl laufender Scans
- Status-Spalte zeigt den Echtzeit-Status des Scans:
- ● LÄUFT (grün) – Scan aktiv, entsprechender bbot-Prozess erkannt
- ⚠ UNTERBROCHEN (gelb) – Scan wurde gestoppt/unterbrochen (kein aktiver Prozess)
- ✓ ABGESCHLOSSEN (blau) – Scan erfolgreich beendet
- ○ PRÜFE... (gedimmt) – Status wird überprüft (erscheint während des schrittweisen Ladens)
- Vulns- und Funde-Spalten zeigen ⚠ für Scans mit Schwachstellen/Funden an
- Scans erscheinen nacheinander mit Live-Status-Updates während des anfänglichen Ladens
- Automatische Aktualisierung alle 3 Sekunden, um neue Scans und Statusänderungen anzuzeigen
↑/↓ oder j/k zum Navigieren, Enter zum Öffnen, r zum manuellen Aktualisieren, a zum Archivieren, d zum Löschen
- Drücken Sie
Tab, um archivierte Scans anzuzeigen
Archiv-Liste
- Alle archivierten Scans (komprimierte .zip-Dateien) durchsuchen
- Zeigt: Archiv-Name, Größe, Ereignisse, Vulns, Funde, Datum der Archivierung
u zum Wiederherstellen (aus dem Archiv), d zum endgültigen Löschen
- Drücken Sie
Tab, q oder Escape, um zur Scan-Liste zurückzukehren
Archivverwaltung
Sparen Sie Speicherplatz durch Komprimierung alter Scans in ZIP-Archive:
Archivieren eines Scans:
- Navigieren Sie in der Scan-Liste zu dem zu archivierenden Scan
- Drücken Sie
a, um zu archivieren
- Bestätigen Sie den Vorgang
- Der Scan-Ordner wird in eine .zip-Datei komprimiert und der ursprüngliche Ordner gelöscht
- Das Archiv erscheint in der Archiv-Liste (drücken Sie
Tab zum Anzeigen)
Wiederherstellen eines Archivs:
- Drücken Sie
Tab, um die Archiv-Liste anzuzeigen
- Navigieren Sie zu dem wiederherzustellenden Archiv
- Drücken Sie
u, um das Archiv zu entpacken
- Bestätigen Sie den Vorgang
- Das Archiv wird extrahiert und die .zip-Datei gelöscht
- Drücken Sie
q, um zur Scan-Liste zurückzukehren und den wiederhergestellten Scan zu sehen
Sicherheitsfunktionen:
- Laufende Scans können nicht archiviert werden
- Die Integrität des Archivs wird vor dem Löschen des Quellordners überprüft
- Die Extraktion wird vor dem Löschen des Archivs überprüft
- Alle Vorgänge erfordern eine Bestätigung
- Falls ein Schritt fehlschlägt, wird der Vorgang sicher rückgängig gemacht
Löschen von Scans/Archiven:
- Aus der Scan-Liste: Drücken Sie
d, um einen Scan-Ordner endgültig zu löschen
- Aus der Archiv-Liste: Drücken Sie
d, um eine Archivdatei endgültig zu löschen
- Laufende Scans können nicht gelöscht werden
- Erfordert Bestätigung (die Aktion ist endgültig und kann nicht rückgängig gemacht werden)
- Alle Scandaten gehen verloren
Arbeitsverfolgung und Anmerkungen
Verfolgen Sie Ihren Sicherheitsworkflow, indem Sie Schwachstellen und Funde mit Status, Priorität und Notizen versehen.
So funktioniert es:
- Anmerkungen werden für jeden Scan in
.bbot_ui_annotations.json gespeichert
- Referenziert Ereignisse per UUID – verändert nie BBOTs originale
output.json
- Werden automatisch in Archive aufgenommen (Sicherung/Wiederherstellung)
- Überleben Neu-Scans desselben Ziels
Annotieren einer Schwachstelle/eines Funds:
- Navigieren Sie zum Tab „Schwachstellen“ oder „Funde“
- Wählen Sie einen Eintrag aus (Pfeiltasten oder j/k)
- Drücken Sie
t, um den Anmerkungsdialog zu öffnen
- Setzen Sie Status, Priorität (optional) und Notizen
- Klicken Sie auf Speichern oder drücken Sie Enter
Schnell-Tastenkürzel:
- Drücken Sie
x, um das ausgewählte Element als Falsch-Positiv zu markieren
- Drücken Sie
i, um das ausgewählte Element als Akzeptiertes Risiko zu markieren
- Diese bewahren die vorhandene Priorität und Notizen, während der Status aktualisiert wird
Statusoptionen:
- 🆕 Neu – Standardstatus für nicht annotierte Elemente
- 🔍 In Untersuchung – Wird gerade analysiert
- ✓ Bestätigt – Als echtes Problem verifiziert
- ✗ Falsch-Positiv – Keine echte Schwachstelle
- 📢 Gemeldet – An das Sicherheitsteam übermittelt
- 🔧 Behoben – Problem wurde gelöst
- ⚠ Akzeptiertes Risiko – Bekannt, aber akzeptiert
Prioritätsstufen (optional):
- 🔴 Kritisch – Erfordert sofortige Aufmerksamkeit
- 🟠 Hoch – Wichtig, bald angehen
- 🟡 Mittel – Normale Priorität
- 🟢 Niedrig – Geringfügiges Problem
Funktionen:
- Status- und Prioritätsspalten in den Tabellen „Schwachstellen“/„Funde“
- Statusfilter-Dropdown – filtern nach bestimmtem Status oder „Aktionspflichtige“ Elemente (Standard)
- Schnell-Tastenkürzel (x/i) für schnelle Triage
- Workflow-Statusdiagramme im Tab „Statistiken“
- Notizenfeld für detaillierte Zusammenhänge
- Klarer Anmerkungs-Button zum Zurücksetzen
- Anmerkungen bleiben über Sitzungen und Archive hinweg erhalten
Statusfilterung:
- Aktionspflichtig (Standard) – Zeigt nur Elemente, die Aufmerksamkeit erfordern (neu, in Untersuchung, bestätigt, gemeldet)
- Alle – Zeigt alle Schwachstellen/Funde unabhängig vom Status
- Bestimmte Status – Filtern nach einzelnem Status (falsch-positiv, behoben usw.)
- Der Filter aktualisiert sich automatisch, wenn Elemente mit Tastaturkürzeln markiert werden
Scan-Viewer-Tabs
- Statusleiste: Zeigt den Scan-Status mit Echtzeit-Ereigniszählung
- ● LÄUFT (grün) – Wird aktiv mit neuen Ereignissen aktualisiert
- ✓ ABGESCHLOSSEN (blau) – Scan beendet, keine weiteren Aktualisierungen
- ⚠ UNTERBROCHEN (gelb) – Scan wurde gestoppt/unterbrochen
- Auto-Refresh: Alle Tabs aktualisieren sich alle 2 Sekunden, wenn der Scan LÄUFT
- Intelligente Erkennung: Stellt das Pollen bei ABGESCHLOSSEN und UNTERBROCHEN automatisch ein
- Drücken Sie
r, um manuell zu aktualisieren und eine Benachrichtigung mit neuer Ereigniszahl zu sehen
1. Schwachstellen – VULNERABILITY-Ereignisse, sortiert nach Schweregrad (KRITISCH→HOCH→MITTEL→NIEDRIG→INFO→UNBEKANNT) mit Status, Priorität und Anmerkungen (Live-Updates)
2. Funde – FINDING-Ereignisse mit Status, Priorität und Anmerkungen (Live-Updates)
3. Ereignisse – Alle Ereignisse mit Typfilter, Bereichsabstandsfilter, Mehrfachbegriff-Suche und JSON-Details (Live-Updates)
4. Baum – Zwei Ansichtsmodi (Live-Updates):
- Entdeckung: Zeigt, wie Ereignisse durch Scan-Module gefunden wurden (Eltern-Kind-Beziehungen)
- Topologie: Logische Netzwerkhierarchie (IP_RANGE → IP → OPEN_TCP_PORT)
5. Statistiken – Ereignisverteilung, Top-15-Module (nach Rang), Bereichsabstandsdiagramme, Workflow-Status und Prioritätsverteilung (Live-Updates)
6. Subdomains – Hierarchische Baumansicht der entdeckten Subdomains (nur angezeigt, wenn
subdomains.txt vorhanden ist, typischerweise beim subdomain-enum-Preset)
7. Konfiguration – Syntax-hervorgehobene preset.yml
Mehrfachbegriff-Suche
Der Tab „Ereignisse“ unterstützt leistungsstarke Mehrfachbegriff-Suche:
- Leerzeichen-getrennte Begriffe: Verwenden Sie Leerzeichen, um nach mehreren Begriffen zu suchen (z. B.
httpx in-scope)
- UND-Logik: Ereignisse müssen ALLE Begriffe enthalten, um in den Ergebnissen zu erscheinen
- Durchsuchte Felder: data, type, module, host, tags, discovery_context
- Kombinieren mit Filtern: Funktioniert zusammen mit Tyb- und Bereichsabstandsfiltern
Beispiele:
httpx in-scope – Ereignisse vom httpx-Modul mit in-scope-Tag
k11h HIGH – Ereignisse zu k11h.de mit Schweregrad HIGH
nuclei VULNERABILITY – Schwachstellen, die vom nuclei-Modul entdeckt wurden
Subdomain-Baumansicht
Wenn BBOT mit dem Preset subdomain-enum (oder einem anderen Scan, der subdomains.txt erzeugt) ausgeführt wird, erscheint automatisch ein Tab Subdomains im Scan-Viewer, der einen hierarchischen Baum der entdeckten Subdomains anzeigt.
Funktionen:
- Hierarchische Darstellung: Subdomains, organisiert nach Domain-Struktur (z. B.
api.example.com unter example.com)
- Ausklappbarer Baum: Navigation durch Domain-Ebenen mit intuitiver Baumnavigation
- Zahlenanzeige: Tab-Label zeigt die Gesamtzahl der Subdomains (z. B. „Subdomains (42)“)
- Automatische Erkennung: Der Tab erscheint nur, wenn
subdomains.txt im Scan-Ordner vorhanden ist
Beispiel-Hierarchie:
example.com
├─ api.example.com
├─ dev.example.com
└─ www.example.com
Tastaturkürzel
Navigation: ↑/↓ oder j/k | Annotieren: t (nur bei Vulns/Funden) | Falsch-Positiv: x (nur bei Vulns/Funden) | Akzeptiertes Risiko: i (nur bei Vulns/Funden) | Archive anzeigen: Tab (aus Scan-Liste) | Suchen: f | Aktualisieren: r | Archivieren: a (Scan-Liste) | Wiederherstellen: u (Archiv-Liste) | Löschen: d | Teilung anpassen: ←/→ | Zurück/Beenden: q oder
Hinweis: Die Annotationstastenkürzel (t, x, i) erscheinen nur in der Fußzeile, wenn die Tabs „Schwachstellen“ oder „Funde“ angezeigt werden.
Live-Aktualisierung und Statusermittlung
bbot-ui erkennt und zeigt Updates von laufenden Scans automatisch in Echtzeit an:
Intelligente Statusermittlung
Die UI verwendet eine mehrstufige Erkennungskette, um den Scan-Status genau zu bestimmen:
-
SCAN-Ereignisanalyse: Liest das Statusfeld des letzten SCAN-Ereignisses aus output.json
"FINISHED" → Scan abgeschlossen (hat Felder finished_at und duration)
"RUNNING" → Überprüfen, ob tatsächlich läuft (weiter zu Schritt 2)
-
Aktive Prozesserkenung (bei RUNNING-Status):
- psutil (automatisch installiert, plattformübergreifend) – Prüft, ob ein Prozess
output.json geöffnet hat
-
Endgültiger Status:
- RUNNING: SCAN-Ereignis sagt RUNNING + Prozess hat die Datei geöffnet
- UNTERBROCHEN: SCAN-Ereignis sagt RUNNING + kein Prozess hat die Datei geöffnet (Scan wurde mit Strg+C abgebrochen)
- FINISHED: SCAN-Ereignis sagt FINISHED (hat Abschlussdaten)
Funktionen
- Progressives Laden: Scans erscheinen nacheinander mit Live-Status-Updates während des Starts
- Präzise Erkennung: Identifiziert sofort unterbrochene Scans, ohne auf ein Timeout zu warten
- Leistungsoptimiert:
- Progressive Verzeichnisiteration (nicht blockierend, 1 ms pro Verzeichnis)
- Ein Scan pro 10‑ms-Timer-Tick geladen
- Cachet Prozessprüfungen für 5 Sekunden (vermeidet wiederholtes Scannen aller Prozesse)
- Prüft nur RUNNING-Scans (überspringt teure Prüfungen für FINISHED-Scans)
- Intelligentes Pollen stoppt die Überprüfung von FINISHED- und UNTERBROCHEN-Scans
- Inkrementelles Laden: Liest effizient nur neue Ereignisse aus
output.json
- Nicht blockierend: Die UI bleibt während der Aktualisierung vollständig reaktionsfähig
- Cursorerhaltung: Behält Ihre Position in Tabellen während der Aktualisierung bei
- Graceful Handling: Überspringt unvollständige/fehlerhafte JSON-Zeilen aus laufenden Scans
- Konfigurierbare Intervalle: Passen Sie die Aktualisierungsraten Ihren Bedürfnissen an
Konfiguration
Sie können das Live-Aktualisierungsverhalten anpassen:
Über die Befehlszeile:
./bbot-ui --scan-interval 5 --list-interval 10
Standardwerte:
- Scan-Detailansicht wird alle 2 Sekunden aktualisiert
- Scan-Listenansicht wird alle 3 Sekunden aktualisiert
Anwendungsfälle:
- Schnelle Netzwerke/lokale Scans: Verwenden Sie kürzere Intervalle (z. B.
--scan-interval 1)
- Langsame/entfernte Systeme: Verwenden Sie längere Intervalle (z. B.
--scan-interval 5)
- CPU-Auslastung reduzieren: Erhöhen Sie alle Intervalle für seltener Prüfungen
Die Einstellungen werden in ~/.bbot_ui_config.json gespeichert und bleiben über Sitzungen hinweg erhalten.
Fehlerbehebung
Einrichtung nicht vollständig abgeschlossen?
rm -rf ~/.bbot_ui_venv && ./bbot-ui
Warnung wegen nicht installiertem psutil?
Wenn eine Warnung erscheint, dass psutil fehlt, stammt Ihre venv aus einer älteren Version. Neuinstallation:
rm -rf ~/.bbot_ui_venv && ./bbot-ui
Keine output.json gefunden?
Stellen Sie sicher, dass das Scan-Verzeichnis output.json enthält (BBOT erstellt diese automatisch)
Python nicht gefunden?
# Ubuntu/Debian
sudo apt install python3 python3-venv
# macOS
brew install python3
Anforderungen
- Python 3.8+
- Automatische Installation: textual>=0.47.0, rich>=13.0.0, psutil>=5.9.0
Hinweis: psutil wird für die genaue Scan-Statuserkennung verwendet, indem geprüft wird, ob ein Prozess die Scandatei geöffnet hat.
Leistung
Die UI ist für große Scans und viele Verzeichnisse optimiert:
Startleistung:
- Progressives Laden – Die UI wird sofort (<200 ms) gerendert, Scans werden nacheinander geladen
- Verzeichnisauflistung erfolgt inkrementell (1 ms pro Verzeichnis)
- Funktioniert effizient auf Netzwerkdateisystemen und entfernten Mounts
- Keine blockierenden Vorgänge während des Starts
Anzeigelimit:
- Tab „Schwachstellen“: maximal 1000 Zeilen (nach Schweregrad sortiert)
- Tab „Funde“: maximal 1000 Zeilen
- Tab „Ereignisse“: maximal 1000 Zeilen (bei großen Scans Filter verwenden)
- Baumansichten: maximal 500 Knoten (Filter verwenden, um sich auf bestimmte Bereiche zu konzentrieren)
- Scan-Liste: Progressives Laden zeigt Scans an, sobald sie entdeckt werden
Dateilesen:
- Liest von beiden Enden der Datei, um SCAN-Ereignisse zu finden (behandelt wiederverwendete Scan-Verzeichnisse)
- Erkennt den aktuellsten Scan per Zeitstempel (unterstützt mehrere Läufe im selben Verzeichnis)
- Schätzt Ereigniszahlen für große Scans anhand von Dateigröße und Stichproben
- Cachet Statusprüfungen, um wiederholte Prozessscans zu vermeiden
Auto-Refresh:
- Timer stoppt automatisch für FINISHED/UNTERBROCHEN-Scans
- Prüft nur RUNNING-Scans auf Updates
- Ergebnisse werden 5 Sekunden lang zwischengespeichert
initial_load_phase-Flag verhindert Aktualisierungskonflikte während des Starts
Tipps
- Verwenden Sie Filter (Typ, Bereichsabstand), um sich in großen Scans auf bestimmte Ereignisse zu konzentrieren
- Ereigniszahlen für große Scans (>1 MB) sind Schätzwerte zur Leistungssteigerung
- Annotationstastenkürzel (t, x, i) sind kontextsensitiv und erscheinen nur auf relevanten Tabs
- Progressives Laden bedeutet, dass Sie sofort arbeiten können – Sie müssen nicht warten, bis alle Scans geladen sind
- Bei langsamen Netzwerkdateisystemen werden Scans nach und nach angezeigt – das ist normales Verhalten
- Löschen Sie
~/.bbot_ui_venv/, um eine saubere Neuinstallation zu erzwingen
Lizenz
MIT