Visualizador TUI do BBOT

Uma interface de terminal auto-contida para navegar e analisar resultados de varredura do BBOT.

Funcionalidades
- 🚀 Configuração Zero – Um único arquivo auto-instalável, sem dependências manuais
- 🔴 Atualização ao Vivo – Auto-atualiza enquanto as varreduras estão em execução com detecção precisa de status
- 🎯 Detecção Inteligente de Status – Identifica com precisão varreduras em EXECUÇÃO, FINALIZADAS e INTERROMPIDAS
- 📋 Navegador de Varreduras – Navegue por múltiplas varreduras com contagens separadas de vulnerabilidades/descobertas e indicadores de status
- 📦 Gerenciamento de Arquivos Mortos – Comprima varreduras antigas para economizar espaço, restaure quando necessário
- 📝 Acompanhamento de Trabalho – Anote vulnerabilidades e descobertas com status, prioridade e notas
- 🔍 Visualizações Separadas – Abas dedicadas para vulnerabilidades (ordenadas por gravidade) e descobertas
- 🌳 Árvore de Descoberta – Visão hierárquica mostrando relacionamentos pais-filhos de eventos
- 🌐 Árvore de Subdomínios – Visão hierárquica de subdomínios descobertos (quando disponível)
- 📊 Estatísticas Ricas – Tabelas bonitas com distribuição de eventos, análise de escopo e métricas de fluxo de trabalho
- 🔎 Explorador de Eventos – Filtre, pesquise e inspecione todos os eventos da varredura
- ⚙️ Visualizador de Configuração – Veja a configuração preset.yml
Início Rápido
# Copie para o servidor e execute (auto-instala na primeira execução)
./bbot-ui
# Ou especifique um caminho personalizado
./bbot-ui /caminho/para/varreduras
A primeira execução cria .bbot_ui_venv/ e instala as dependências. Execuções subsequentes iniciam instantaneamente.
Uso
./bbot-ui # Padrão: ~/.bbot/scans
./bbot-ui /caminho/para/varreduras # Navegue por todas as varreduras no diretório
./bbot-ui ~/.bbot/scans/nome-da-varredura # Visualizar varredura específica
Opções de Linha de Comando
./bbot-ui --help # Mostrar todas as opções
./bbot-ui --scan-interval 5 # Atualizar visualização da varredura a cada 5 segundos
./bbot-ui --list-interval 10 # Atualizar lista de varreduras a cada 10 segundos
Opções disponíveis:
--scan-interval SEGUNDOS – Intervalo de atualização para a visualização detalhada da varredura (padrão: 2.0)
--list-interval SEGUNDOS – Intervalo de atualização para a lista de varreduras (padrão: 3.0)
As configurações são salvas automaticamente em ~/.bbot_ui_config.json e usadas como padrão em sessões futuras.
Interface
Lista de Varreduras
- Inicialização instantânea – UI aparece em <200ms, as varreduras carregam progressivamente
- Navegue por todas as varreduras em uma tabela com colunas: Nome da Varredura, Status, Eventos, Vulnerabilidades, Descobertas, Última Modificação
- O cabeçalho mostra total de varreduras, contagens de vulnerabilidades/descobertas e contagem de varreduras em execução
- Coluna de Status mostra o estado da varredura em tempo real:
- ● EM EXECUÇÃO (verde) – Varredura ativa com processo bbot detectado
- ⚠ INTERROMPIDA (amarelo) – Varredura foi parada/interrompida (sem processo ativo)
- ✓ FINALIZADA (azul) – Varredura concluída com sucesso
- ○ VERIFICANDO... (escuro) – Status sendo verificado (aparece durante o carregamento progressivo)
- Colunas de Vulnerabilidades e Descobertas mostram indicador ⚠ para varreduras com vulnerabilidades/descobertas
- As varreduras aparecem uma a uma com atualizações de status ao vivo durante o carregamento inicial
- Auto-atualiza a cada 3 segundos para mostrar novas varreduras e mudanças de status
↑/↓ ou j/k para navegar, Enter para abrir, r para atualizar manualmente, a para arquivar, d para excluir
- Pressione
Tab para ver varreduras arquivadas
Lista de Arquivos
- Navegue por todas as varreduras arquivadas (arquivos .zip compactados)
- Mostra: Nome do Arquivo, Tamanho, Eventos, Vulnerabilidades, Descobertas, Data de Arquivamento
u para desarquivar (restaurar), d para excluir permanentemente
- Pressione
Tab, q ou Escape para retornar à lista de varreduras
Gerenciamento de Arquivos
Economize espaço em disco comprimindo varreduras antigas em arquivos ZIP:
Arquivando uma varredura:
- Na lista de varreduras, navegue até a varredura que deseja arquivar
- Pressione
a para arquivar
- Confirme a operação
- A pasta da varredura é comprimida em um arquivo .zip e a pasta original é excluída
- O arquivo aparece na lista de arquivos (pressione
Tab para visualizar)
Restaurando um arquivo:
- Pressione
Tab para ver a lista de arquivos
- Navegue até o arquivo que deseja restaurar
- Pressione
u para desarquivar
- Confirme a operação
- O arquivo é extraído e o .zip é excluído
- Pressione
q para retornar à lista de varreduras e ver a varredura restaurada
Recursos de segurança:
- Não é possível arquivar varreduras EM EXECUÇÃO
- A integridade do arquivo é verificada antes de excluir a pasta fonte
- A extração é verificada antes de excluir o arquivo
- Todas as operações exigem confirmação
- Se alguma etapa falhar, a operação é revertida com segurança
Excluindo varreduras/arquivos:
- Da lista de varreduras: Pressione
d para excluir permanentemente uma pasta de varredura
- Da lista de arquivos: Pressione
d para excluir permanentemente um arquivo
- Não é possível excluir varreduras EM EXECUÇÃO
- Exige confirmação (a ação é permanente e irreversível)
- Todos os dados da varredura serão perdidos
Acompanhamento de Trabalho e Anotações
Acompanhe seu fluxo de trabalho de segurança anotando vulnerabilidades e descobertas com status, prioridade e notas.
Como funciona:
- As anotações são armazenadas em
.bbot_ui_annotations.json ao lado de cada varredura
- Referencia eventos por UUID – nunca modifica o
output.json original do BBOT
- Incluídas automaticamente nos arquivos para backup/restauração
- Sobrevive a re-varreduras do mesmo alvo
Anotando uma vulnerabilidade/descoberta:
- Navegue até a aba Vulnerabilidades ou Descobertas
- Selecione um item (setas ou j/k)
- Pressione
t para abrir o diálogo de anotação
- Defina status, prioridade (opcional) e notas
- Clique em Salvar ou pressione Enter
Atalhos rápidos:
- Pressione
x para marcar o item selecionado como Falso Positivo
- Pressione
i para marcar o item selecionado como Risco Aceito
- Estes preservam a prioridade e notas existentes enquanto atualizam o status
Opções de status:
- 🆕 Novo – Status padrão para itens não anotados
- 🔍 Investigando – Analisando atualmente
- ✓ Confirmado – Verificado como problema real
- ✗ Falso Positivo – Não é uma vulnerabilidade real
- 📢 Relatado – Enviado para a equipe de segurança
- 🔧 Corrigido – Problema foi resolvido
- ⚠ Risco Aceito – Conhecido, mas aceito
Níveis de prioridade (opcional):
- 🔴 Crítico – Requer atenção imediata
- 🟠 Alta – Importante, resolver em breve
- 🟡 Média – Prioridade normal
- 🟢 Baixa – Problema menor
Recursos:
- Colunas de Status e Prioridade nas tabelas de Vulnerabilidades/Descobertas
- Filtro de status – filtre por status específico ou itens "Acionáveis" (padrão)
- Atalhos de teclado rápidos (x/i) para triagem rápida
- Gráficos de status do fluxo de trabalho na aba Estatísticas
- Campo de notas para contexto detalhado
- Botão de limpar anotação para redefinir
- Anotações persistem entre sessões e arquivos
Filtragem de Status:
- Acionável (padrão) – Mostra apenas itens que precisam de atenção (novo, investigando, confirmado, relatado)
- Todos – Mostra todas as vulnerabilidades/descobertas independentemente do status
- Status específicos – Filtrar por status individual (falso-positivo, corrigido, etc.)
- O filtro é atualizado automaticamente ao marcar itens com atalhos de teclado
Abas do Visualizador de Varredura
- Barra de Status: Mostra o status da varredura com contagem de eventos em tempo real
- ● EM EXECUÇÃO (verde) – Atualizando ativamente com novos eventos
- ✓ FINALIZADA (azul) – Varredura concluída, sem mais atualizações
- ⚠ INTERROMPIDA (amarelo) – Varredura foi parada/interrompida
- Auto-atualização: Todas as abas atualizam a cada 2 segundos quando a varredura está EM EXECUÇÃO
- Detecção inteligente: Para automaticamente de consultar varreduras FINALIZADAS e INTERROMPIDAS
- Pressione
r para atualizar manualmente e ver a notificação com a contagem de novos eventos
1. Vulnerabilidades – Eventos VULNERABILITY ordenados por gravidade (CRÍTICO→ALTO→MÉDIO→BAIXO→INFO→DESCONHECIDO), com status, prioridade e anotações (atualizações ao vivo)
2. Descobertas – Eventos FINDING com status, prioridade e anotações (atualizações ao vivo)
3. Eventos – Todos os eventos com filtro de tipo, filtro de distância de escopo, pesquisa multi-termo e detalhes JSON (atualizações ao vivo)
4. Árvore – Dois modos de visualização (atualizações ao vivo):
- Descoberta: Mostra como os eventos foram encontrados através dos módulos de varredura (relacionamentos pais-filhos)
- Topologia: Hierarquia de rede lógica (IP_RANGE → IP → OPEN_TCP_PORT)
5. Estatísticas – Distribuição de eventos, top 15 módulos (classificados), gráficos de distância de escopo, status do fluxo de trabalho e distribuição de prioridade (atualizações ao vivo)
6. Subdomínios – Visualização hierárquica em árvore dos subdomínios descobertos (mostrada apenas quando
subdomains.txt existe, tipicamente do preset subdomain-enum)
7. Configuração – preset.yml com realce de sintaxe
Pesquisa Multi-Termo
A aba Eventos suporta pesquisa multi-termo poderosa:
- Termos separados por espaço: Use espaços para pesquisar por múltiplos termos (ex.:
httpx in-scope)
- Lógica AND: Eventos devem corresponder a TODOS os termos para aparecer nos resultados
- Campos pesquisados: data, type, module, host, tags, discovery_context
- Combine com filtros: Funciona junto com os filtros de Tipo e Distância de Escopo
Exemplos:
httpx in-scope – Eventos do módulo httpx com tag in-scope
k11h HIGH – Eventos relacionados a k11h.de com gravidade ALTA
nuclei VULNERABILITY – Vulnerabilidades descobertas pelo módulo nuclei
Visualização em Árvore de Subdomínios
Ao executar o BBOT com o preset subdomain-enum (ou qualquer varredura que gere subdomains.txt), uma aba Subdomínios aparece automaticamente no visualizador da varredura mostrando uma árvore hierárquica dos subdomínios descobertos.
Recursos:
- Exibição hierárquica: Subdomínios organizados por estrutura de domínio (ex.:
api.example.com sob example.com)
- Árvore expansível: Navegue pelos níveis de domínio com navegação de árvore intuitiva
- Indicador de contagem: O rótulo da aba mostra o total de subdomínios (ex.: "Subdomínios (42)")
- Detecção automática: A aba só aparece quando
subdomains.txt existe na pasta da varredura
Exemplo de hierarquia:
example.com
├─ api.example.com
├─ dev.example.com
└─ www.example.com
Atalhos de Teclado
Navegação: ↑/↓ ou j/k | Anotar: t (apenas Vulnerabilidades/Descobertas) | Falso Positivo: x (apenas Vulnerabilidades/Descobertas) | Risco Aceito: i (apenas Vulnerabilidades/Descobertas) | Ver arquivos: Tab (a partir da lista de varreduras) | Pesquisar: f | Atualizar: r | Arquivar: a (lista de varreduras) | Desarquivar: u (lista de arquivos) | Excluir: d | Ajustar divisão: ←/→ | Voltar/Sair: q ou
Nota: Atalhos de anotação (t, x, i) aparecem apenas no rodapé ao visualizar as abas Vulnerabilidades ou Descobertas.
Atualização ao Vivo e Detecção de Status
O bbot-ui detecta e exibe automaticamente atualizações de varreduras em execução em tempo real:
Detecção Inteligente de Status
A UI usa uma cadeia de detecção multi-método para determinar com precisão o status da varredura:
-
Análise do Evento SCAN: Lê o campo status do último evento SCAN do output.json
"FINISHED" → Varredura concluída (possui campos finished_at e duration)
"RUNNING" → Verificar se realmente está em execução (prosseguir para passo 2)
-
Detecção de Processo Ativo (para status RUNNING):
- psutil (auto-instalado, multi-plataforma) – Verifica se algum processo tem
output.json aberto
-
Status Final:
- EM EXECUÇÃO: Evento SCAN diz RUNNING + processo tem o arquivo ativamente aberto
- INTERROMPIDA: Evento SCAN diz RUNNING + nenhum processo tem o arquivo aberto (varredura foi interrompida com Ctrl+C)
- FINALIZADA: Evento SCAN diz FINISHED (possui dados de conclusão)
Recursos
- Carregamento progressivo: Varreduras aparecem uma a uma com atualizações de status ao vivo durante a inicialização
- Detecção precisa: Identifica imediatamente varreduras interrompidas sem esperar por timeout
- Otimizado para desempenho:
- Iteração progressiva de diretórios (não bloqueante, 1ms por diretório)
- Uma varredura carregada a cada tick do temporizador de 10ms
- Cache de verificações de processo por 5 segundos (evita escanear todos os processos repetidamente)
- Apenas verifica varreduras EM EXECUÇÃO (pula verificações caras para varreduras FINALIZADAS)
- Polling inteligente que para de verificar varreduras FINALIZADAS e INTERROMPIDAS
- Carregamento incremental: Lê eficientemente apenas novos eventos do
output.json
- Não bloqueante: A UI permanece totalmente responsiva durante as atualizações
- Preservação do cursor: Mantém sua posição nas tabelas durante a atualização
- Tratamento gracioso: Pula linhas JSON incompletas/malformadas de varreduras em execução
- Intervalos configuráveis: Personalize as taxas de atualização conforme sua necessidade
Configuração
Você pode personalizar o comportamento de atualização ao vivo:
Via linha de comando:
./bbot-ui --scan-interval 5 --list-interval 10
Padrões:
- Visualização detalhada da varredura atualiza a cada 2 segundos
- Lista de varreduras atualiza a cada 3 segundos
Casos de uso:
- Redes rápidas/varreduras locais: Use intervalos menores (ex.:
--scan-interval 1)
- Sistemas remotos/lentos: Use intervalos maiores (ex.:
--scan-interval 5)
- Reduzir uso de CPU: Aumente todos os intervalos para verificações menos frequentes
As configurações são salvas em ~/.bbot_ui_config.json e persistem entre sessões.
Solução de Problemas
A instalação não foi concluída corretamente?
rm -rf ~/.bbot_ui_venv && ./bbot-ui
Aviso sobre psutil não instalado?
Se você vir um aviso de que psutil está faltando, seu venv é de uma versão antiga. Reinstale:
rm -rf ~/.bbot_ui_venv && ./bbot-ui
Nenhum output.json encontrado?
Certifique-se de que o diretório da varredura contém output.json (o BBOT gera isso automaticamente)
Python não encontrado?
# Ubuntu/Debian
sudo apt install python3 python3-venv
# macOS
brew install python3
Requisitos
- Python 3.8+
- Auto-instala: textual>=0.47.0, rich>=13.0.0, psutil>=5.9.0
Nota: O psutil é usado para detecção precisa do status da varredura ao verificar se algum processo tem o arquivo de varredura aberto.
Desempenho
A UI é otimizada para grandes varreduras e muitos diretórios:
Desempenho de Inicialização:
- Carregamento progressivo – A UI renderiza instantaneamente (<200ms), as varreduras são carregadas uma a uma
- A listagem de diretórios é incremental (1ms por diretório)
- Funciona eficientemente em sistemas de arquivos de rede e montagens remotas
- Nenhuma operação bloqueante durante a inicialização
Limites de Exibição:
- Aba Vulnerabilidades: Máximo de 1000 linhas (ordenadas por gravidade)
- Aba Descobertas: Máximo de 1000 linhas
- Aba Eventos: Máximo de 1000 linhas (use filtros para grandes varreduras)
- Visualizações em árvore: Máximo de 500 nós (use filtros para focar em áreas específicas)
- Lista de varreduras: Carregamento progressivo mostra varreduras à medida que são descobertas
Leitura de Arquivos:
- Lê de ambas as extremidades do arquivo para encontrar eventos SCAN (lida com diretórios de varredura reutilizados)
- Detecta a varredura mais recente por timestamp (suporta múltiplas execuções no mesmo diretório)
- Estima contagens de eventos para grandes varreduras usando tamanho do arquivo e amostragem
- Cache de verificações de status para evitar escaneamentos repetidos de processos
Auto-Atualização:
- O temporizador para automaticamente para varreduras FINALIZADAS/INTERROMPIDAS
- Apenas verifica varreduras EM EXECUÇÃO por atualizações
- Resultados em cache por 5 segundos
- O sinalizador
initial_load_phase prevê conflitos de atualização durante a inicialização
Dicas
- Use filtros (tipo, distância de escopo) para focar em eventos específicos em grandes varreduras
- Contagens de eventos para grandes varreduras (>1MB) são estimativas para desempenho
- Atalhos de anotação (t, x, i) são sensíveis ao contexto e aparecem apenas em abas relevantes
- O carregamento progressivo significa que você pode começar a trabalhar imediatamente – não precisa esperar todas as varreduras carregarem
- Em sistemas de arquivos de rede lentos, as varreduras aparecerão gradualmente – isso é comportamento normal
- Exclua
~/.bbot_ui_venv/ para forçar uma reinstalação limpa
Licença
MIT