Visor TUI de BBOT

Una interfaz de terminal autocontenida para navegar y analizar los resultados de escaneos de BBOT.

Características
- 🚀 Cero configuración - Un único archivo autoinstalable, sin dependencias manuales
- 🔴 Actualización en vivo - Se actualiza automáticamente mientras los escaneos están en ejecución con detección precisa de estado
- 🎯 Detección inteligente de estado - Identifica con precisión escaneos EN EJECUCIÓN, FINALIZADOS e INTERRUMPIDOS
- 📋 Explorador de escaneos - Navega entre múltiples escaneos con contadores separados de vulnerabilidades/hallazgos e indicadores de estado
- 📦 Gestión de archivos - Comprime escaneos antiguos para ahorrar espacio, restáuralos cuando sea necesario
- 📝 Seguimiento de trabajo - Anota vulnerabilidades y hallazgos con estado, prioridad y notas
- 🔍 Vistas separadas - Pestañas dedicadas para vulnerabilidades (ordenadas por severidad) y hallazgos
- 🌳 Árbol de descubrimiento - Vista jerárquica que muestra las relaciones padre-hijo entre eventos
- 🌐 Árbol de subdominios - Vista jerárquica de subdominios descubiertos (cuando estén disponibles)
- 📊 Estadísticas enriquecidas - Tablas atractivas con distribución de eventos, análisis de alcance y métricas de flujo de trabajo
- 🔎 Explorador de eventos - Filtra, busca e inspecciona todos los eventos del escaneo
- ⚙️ Visor de configuración - Visualiza la configuración de preset.yml
Inicio rápido
# Copy to server and run (auto-installs on first run)
./bbot-ui
# Or specify custom path
./bbot-ui /path/to/scans
La primera ejecución crea .bbot_ui_venv/ e instala las dependencias. Las ejecuciones posteriores se lanzan al instante.
Uso
./bbot-ui # Default: ~/.bbot/scans
./bbot-ui /path/to/scans # Browse all scans in directory
./bbot-ui ~/.bbot/scans/scan-name # View specific scan
Opciones de línea de comandos
./bbot-ui --help # Show all options
./bbot-ui --scan-interval 5 # Refresh scan view every 5 seconds
./bbot-ui --list-interval 10 # Refresh scan list every 10 seconds
Opciones disponibles:
--scan-interval SECONDS - Intervalo de actualización para la vista de detalle del escaneo (predeterminado: 2.0)
--list-interval SECONDS - Intervalo de actualización para la vista de lista de escaneos (predeterminado: 3.0)
La configuración se guarda automáticamente en ~/.bbot_ui_config.json y se usa como valores predeterminados en futuras sesiones.
Interfaz
Lista de escaneos
- Inicio instantáneo - La interfaz aparece en <200ms, los escaneos se cargan progresivamente
- Explora todos los escaneos en una tabla con columnas: Nombre del escaneo, Estado, Eventos, Vulns, Hallazgos, Última modificación
- El encabezado muestra el total de escaneos, los contadores de vulnerabilidades/hallazgos y el número de escaneos en ejecución
- La columna Estado muestra el estado del escaneo en tiempo real:
- ● RUNNING (verde) - Escaneo en ejecución activa con proceso bbot detectado
- ⚠ INTERRUPTED (amarillo) - El escaneo fue detenido/interrumpido (sin proceso activo)
- ✓ FINISHED (azul) - El escaneo finalizó correctamente
- ○ CHECKING... (atenuado) - Estado en verificación (aparece durante la carga progresiva)
- Las columnas Vulns y Hallazgos muestran el indicador ⚠ para escaneos con vulnerabilidades/hallazgos
- Los escaneos aparecen uno a uno con actualizaciones de estado en vivo durante la carga inicial
- Se actualiza automáticamente cada 3 segundos para mostrar nuevos escaneos y cambios de estado
↑/↓ o j/k para navegar, Enter para abrir, r para actualizar manualmente, a para archivar, d para eliminar
- Pulsa
Tab para ver los escaneos archivados
Lista de archivos
- Explora todos los escaneos archivados (archivos .zip comprimidos)
- Muestra: Nombre del archivo, Tamaño, Eventos, Vulns, Hallazgos, Fecha de archivado
u para desarchivar (restaurar), d para eliminar permanentemente
- Pulsa
Tab, q o Escape para volver a la lista de escaneos
Gestión de archivos
Ahorra espacio en disco comprimiendo escaneos antiguos en archivos ZIP:
Archivar un escaneo:
- Desde la lista de escaneos, navega hasta el escaneo que quieras archivar
- Pulsa
a para archivar
- Confirma la operación
- La carpeta del escaneo se comprime en un archivo .zip y la carpeta original se elimina
- El archivo aparece en la lista de archivos (pulsa
Tab para verlo)
Restaurar un archivo:
- Pulsa
Tab para ver la lista de archivos
- Navega hasta el archivo que quieras restaurar
- Pulsa
u para desarchivar
- Confirma la operación
- El archivo se extrae y el archivo .zip se elimina
- Pulsa
q para volver a la lista de escaneos y ver el escaneo restaurado
Características de seguridad:
- No se pueden archivar escaneos EN EJECUCIÓN
- La integridad del archivo se verifica antes de eliminar la carpeta de origen
- La extracción se verifica antes de eliminar el archivo
- Todas las operaciones requieren confirmación
- Si algún paso falla, la operación se revierte de forma segura
Eliminar escaneos/archivos:
- Desde la lista de escaneos: Pulsa
d para eliminar permanentemente una carpeta de escaneo
- Desde la lista de archivos: Pulsa
d para eliminar permanentemente un archivo
- No se pueden eliminar escaneos EN EJECUCIÓN
- Requiere confirmación (la acción es permanente e irreversible)
- Se perderán todos los datos del escaneo
Seguimiento de trabajo y anotaciones
Realiza un seguimiento de tu flujo de trabajo de seguridad anotando vulnerabilidades y hallazgos con estado, prioridad y notas.
Cómo funciona:
- Las anotaciones se almacenan en
.bbot_ui_annotations.json junto a cada escaneo
- Hace referencia a los eventos por UUID; nunca modifica el
output.json original de BBOT
- Se incluyen automáticamente en los archivos para copia de seguridad/restauración
- Sobrevive a nuevos escaneos del mismo objetivo
Anotar una vulnerabilidad/hallazgo:
- Navega a la pestaña Vulnerabilidades o Hallazgos
- Selecciona un elemento (teclas de flecha o j/k)
- Pulsa
t para abrir el diálogo de anotación
- Establece estado, prioridad (opcional) y notas
- Haz clic en Guardar o pulsa Enter
Atajos rápidos:
- Pulsa
x para marcar el elemento seleccionado como Falso Positivo
- Pulsa
i para marcar el elemento seleccionado como Riesgo Aceptado
- Estos conservan la prioridad y las notas existentes mientras actualizan el estado
Opciones de estado:
- 🆕 Nuevo - Estado predeterminado para elementos no anotados
- 🔍 Investigando - Analizando actualmente
- ✓ Confirmado - Verificado como problema real
- ✗ Falso Positivo - No es una vulnerabilidad real
- 📢 Reportado - Enviado al equipo de seguridad
- 🔧 Corregido - El problema ha sido resuelto
- ⚠ Riesgo Aceptado - Conocido pero aceptado
Niveles de prioridad (opcional):
- 🔴 Crítico - Requiere atención inmediata
- 🟠 Alta - Importante, atender pronto
- 🟡 Media - Prioridad normal
- 🟢 Baja - Problema menor
Características:
- Columnas de Estado y Prioridad en las tablas de Vulnerabilidades/Hallazgos
- Menú desplegable de filtro de estado: filtra por estado específico o elementos "Accionables" (predeterminado)
- Atajos de teclado rápidos (x/i) para un triaje ágil
- Gráficos de estado del flujo de trabajo en la pestaña Estadísticas
- Campo de notas para contexto detallado
- Botón para borrar la anotación y restablecer
- Las anotaciones persisten entre sesiones y archivos
Filtrado por estado:
- Accionables (predeterminado) - Muestra solo los elementos que requieren atención (nuevos, investigando, confirmados, reportados)
- Todos - Muestra todas las vulnerabilidades/hallazgos independientemente del estado
- Estados específicos - Filtra por estado individual (falso positivo, corregido, etc.)
- El filtro se actualiza automáticamente al marcar elementos con atajos de teclado
Pestañas del visor de escaneos
- Barra de estado: Muestra el estado del escaneo con el recuento de eventos en tiempo real
- ● RUNNING (verde) - Actualizándose activamente con nuevos eventos
- ✓ FINISHED (azul) - Escaneo completado, no hay más actualizaciones
- ⚠ INTERRUPTED (amarillo) - El escaneo fue detenido/interrumpido
- Actualización automática: Todas las pestañas se actualizan cada 2 segundos cuando el escaneo está EN EJECUCIÓN
- Detección inteligente: Deja de consultar automáticamente escaneos FINALIZADOS e INTERRUMPIDOS
- Pulsa
r para actualizar manualmente y ver la notificación con el recuento de nuevos eventos
1. Vulnerabilidades - Eventos VULNERABILITY ordenados por severidad (CRITICAL→HIGH→MEDIUM→LOW→INFO→UNKNOWN), con estado, prioridad y anotaciones (actualizaciones en vivo)
2. Hallazgos - Eventos FINDING con estado, prioridad y anotaciones (actualizaciones en vivo)
3. Eventos - Todos los eventos con filtro de tipo, filtro de distancia de alcance, búsqueda de múltiples términos y detalles JSON (actualizaciones en vivo)
4. Árbol - Dos modos de vista (actualizaciones en vivo):
- Descubrimiento: Muestra cómo se encontraron los eventos a través de los módulos de escaneo (relaciones padre-hijo)
- Topología: Jerarquía lógica de red (IP_RANGE → IP → OPEN_TCP_PORT)
5. Estadísticas - Distribución de eventos, 15 módulos principales (clasificados), gráficos de distancia de alcance, estado del flujo de trabajo y distribución de prioridades (actualizaciones en vivo)
6. Subdominios - Vista de árbol jerárquica de los subdominios descubiertos (solo se muestra cuando existe
subdomains.txt, normalmente del preset subdomain-enum)
7. Configuración - preset.yml con resaltado de sintaxis
Búsqueda de múltiples términos
La pestaña Eventos admite una potente búsqueda de múltiples términos:
- Términos separados por espacios: Usa espacios para buscar varios términos (p. ej.,
httpx in-scope)
- Lógica AND: Los eventos deben coincidir con TODOS los términos para aparecer en los resultados
- Campos buscados: data, type, module, host, tags, discovery_context
- Combinar con filtros: Funciona junto con los filtros de Tipo y Distancia de alcance
Ejemplos:
httpx in-scope - Eventos del módulo httpx con la etiqueta in-scope
k11h HIGH - Eventos relacionados con k11h.de con severidad HIGH
nuclei VULNERABILITY - Vulnerabilidades descubiertas por el módulo nuclei
Vista de árbol de subdominios
Cuando ejecutas BBOT con el preset subdomain-enum (o cualquier escaneo que genere subdomains.txt), una pestaña Subdominios aparece automáticamente en el visor de escaneos mostrando un árbol jerárquico de los subdominios descubiertos.
Características:
- Visualización jerárquica: Subdominios organizados por estructura de dominio (p. ej.,
api.example.com bajo example.com)
- Árbol expandible: Navega a través de los niveles de dominio con una navegación de árbol intuitiva
- Indicador de recuento: La etiqueta de la pestaña muestra el recuento total de subdominios (p. ej., "Subdomains (42)")
- Detección automática: La pestaña solo aparece cuando
subdomains.txt existe en la carpeta del escaneo
Ejemplo de jerarquía:
example.com
├─ api.example.com
├─ dev.example.com
└─ www.example.com
Atajos de teclado
Navegación: ↑/↓ o j/k | Anotar: t (solo Vulnerabilidades/Hallazgos) | Falso Positivo: x (solo Vulnerabilidades/Hallazgos) | Riesgo Aceptado: i (solo Vulnerabilidades/Hallazgos) | Ver archivos: Tab (desde la lista de escaneos) | Buscar: f | Actualizar: r | Archivar: a (lista de escaneos) | Desarchivar: u (lista de archivos) | Eliminar: d | Ajustar división: ←/→ | Atrás/Salir: q o
Nota: Los atajos de anotación (t, x, i) solo aparecen en el pie de página al ver las pestañas de Vulnerabilidades o Hallazgos.
Actualización en vivo y detección de estado
bbot-ui detecta y muestra automáticamente las actualizaciones de los escaneos en ejecución en tiempo real:
Detección inteligente de estado
La interfaz utiliza una cadena de detección multimétodo para determinar con precisión el estado del escaneo:
-
Análisis del evento SCAN: Lee el campo status del último evento SCAN de output.json
"FINISHED" → Escaneo completado (tiene campos finished_at y duration)
"RUNNING" → Verificar si realmente se está ejecutando (continuar al paso 2)
-
Detección de proceso activo (para estado RUNNING):
- psutil (autoinstalado, multiplataforma) - Comprueba si algún proceso tiene
output.json abierto
-
Estado final:
- RUNNING: El evento SCAN dice RUNNING + el proceso tiene el archivo abierto activamente
- INTERRUPTED: El evento SCAN dice RUNNING + ningún proceso tiene el archivo abierto (el escaneo se canceló con Ctrl+C)
- FINISHED: El evento SCAN dice FINISHED (tiene datos de finalización)
Características
- Carga progresiva: Los escaneos aparecen uno a uno con actualizaciones de estado en vivo durante el inicio
- Detección precisa: Identifica inmediatamente escaneos interrumpidos sin esperar un tiempo de espera
- Rendimiento optimizado:
- Iteración progresiva de directorios (no bloqueante, 1 ms por directorio)
- Se carga un escaneo por cada tick de temporizador de 10 ms
- Almacena en caché las comprobaciones de procesos durante 5 segundos (evita escanear todos los procesos repetidamente)
- Solo comprueba escaneos RUNNING (omite comprobaciones costosas para escaneos FINISHED)
- El sondeo inteligente deja de comprobar escaneos FINISHED e INTERRUPTED
- Carga incremental: Lee eficientemente solo los eventos nuevos de
output.json
- No bloqueante: La interfaz permanece totalmente receptiva durante las actualizaciones
- Preservación del cursor: Mantiene tu posición en las tablas durante la actualización
- Manejo elegante: Omite líneas JSON incompletas o malformadas de los escaneos en ejecución
- Intervalos configurables: Personaliza las frecuencias de actualización según tus necesidades
Configuración
Puedes personalizar el comportamiento de actualización en vivo:
Mediante línea de comandos:
./bbot-ui --scan-interval 5 --list-interval 10
Valores predeterminados:
- La vista de detalle del escaneo se actualiza cada 2 segundos
- La vista de lista de escaneos se actualiza cada 3 segundos
Casos de uso:
- Redes rápidas/escaneos locales: Usa intervalos más cortos (p. ej.,
--scan-interval 1)
- Sistemas remotos/lentos: Usa intervalos más largos (p. ej.,
--scan-interval 5)
- Reducir el uso de CPU: Aumenta todos los intervalos para comprobaciones menos frecuentes
La configuración se guarda en ~/.bbot_ui_config.json y persiste entre sesiones.
Solución de problemas
¿La configuración no se completó correctamente?
rm -rf ~/.bbot_ui_venv && ./bbot-ui
¿Advertencia sobre psutil no instalado?
Si ves una advertencia de que falta psutil, tu venv es de una versión anterior. Reinstala:
rm -rf ~/.bbot_ui_venv && ./bbot-ui
¿No se encuentra output.json?
Asegúrate de que el directorio del escaneo contenga output.json (BBOT lo genera automáticamente)
¿Python no encontrado?
# Ubuntu/Debian
sudo apt install python3 python3-venv
# macOS
brew install python3
Requisitos
- Python 3.8+
- Autoinstala: textual>=0.47.0, rich>=13.0.0, psutil>=5.9.0
Nota: psutil se utiliza para la detección precisa del estado del escaneo comprobando si algún proceso tiene el archivo de escaneo abierto.
Rendimiento
La interfaz está optimizada para escaneos grandes y muchos directorios:
Rendimiento de inicio:
- Carga progresiva - La interfaz se renderiza al instante (<200 ms), los escaneos se cargan uno a uno
- El listado de directorios se realiza de forma incremental (1 ms por directorio)
- Funciona eficientemente en sistemas de archivos de red y montajes remotos
- Sin operaciones bloqueantes durante el inicio
Límites de visualización:
- Pestaña Vulnerabilidades: 1000 filas máx. (ordenadas por severidad)
- Pestaña Hallazgos: 1000 filas máx.
- Pestaña Eventos: 1000 filas máx. (usa filtros para escaneos grandes)
- Vistas de árbol: 500 nodos máx. (usa filtros para centrarte en áreas específicas)
- Lista de escaneos: La carga progresiva muestra los escaneos a medida que se descubren
Lectura de archivos:
- Lee desde ambos extremos del archivo para encontrar eventos SCAN (maneja directorios de escaneo reutilizados)
- Detecta el escaneo más reciente por marca de tiempo (admite múltiples ejecuciones en el mismo directorio)
- Estima los recuentos de eventos para escaneos grandes utilizando el tamaño del archivo y el muestreo
- Almacena en caché las comprobaciones de estado para evitar escaneos repetidos de procesos
Actualización automática:
- El temporizador se detiene automáticamente para escaneos FINALIZADOS/INTERRUMPIDOS
- Solo comprueba escaneos EN EJECUCIÓN para actualizaciones
- Resultados almacenados en caché durante 5 segundos
- El indicador
initial_load_phase previene conflictos de actualización durante el inicio
Consejos
- Usa filtros (tipo, distancia de alcance) para centrarte en eventos específicos en escaneos grandes
- Los recuentos de eventos para escaneos grandes (>1 MB) son estimaciones por rendimiento
- Los atajos de anotación (t, x, i) dependen del contexto y solo aparecen en las pestañas relevantes
- La carga progresiva significa que puedes empezar a trabajar de inmediato: no es necesario esperar a que se carguen todos los escaneos
- En sistemas de archivos de red lentos, los escaneos se irán completando gradualmente; esto es un comportamiento normal
- Elimina
~/.bbot_ui_venv/ para forzar una reinstalación limpia
Licencia
MIT