
Binário Go único para testes de segurança de Bluetooth Low Energy no Linux/BlueZ: scan, enumeração de GATT, read/write/notify, fuzzing de características e execução de avaliações estruturadas com saída JSON.
Um único binário Go para todo o fluxo de trabalho de avaliação de Bluetooth Low Energy no Linux/BlueZ: scan, enumeração, leitura/escrita/notificação, fuzzing e avaliação de segurança estruturada, com saída JSON para scripts e agentes.
O Caeruleus consolida os testes de segurança de Bluetooth Low Energy (BLE) em um único binário Go construído sobre a pilha BlueZ do Linux. Ele se comunica com periféricos via BlueZ D-Bus e sockets brutos L2CAP/HCI e cobre todo o ciclo de vida: descobrir dispositivos, navegar e ler/escrever na árvore GATT, capturar notificações, fazer fuzzing de características graváveis e executar fluxos de trabalho repetíveis de avaliação de segurança. Todo comando emite saída estruturada -o json / -o jsonl para scripting, relatórios e agentes LLM.
Construído por engenheiros de segurança ofensiva para substituir a pilha habitual de bettercap, gatttool, hcitool, bluetoothctl e scripts Bleak avulsos, o Caeruleus mantém as abstrações no nível em que um humano ou agente realmente trabalha.
caeruleus: latim para o "azul" em Bluetooth Low Energy
O fluxo de trabalho padrão para testes de segurança BLE é uma caça ao tesouro entre ferramentas que nunca foram projetadas para funcionar juntas:
hcitool / hciconfig para configuração de adaptador e descoberta, ambos obsoletos no BlueZ e ausentes em muitas distribuições modernas.bettercap para ble.recon e ble.enum. Poderoso, mas você instala um framework completo de ataque de rede só para navegar em uma árvore GATT.gatttool para ler e escrever handles, obsoleto há anos mas ainda presente em todo tutorial.Cada um fala seu próprio dialeto, e nenhum emite saída legível por máquina que você possa encadear no próximo passo, então você se torna a camada de integração, copiando endereços MAC e handles entre terminais manualmente. Os frontends suportados do próprio BlueZ (bluetoothctl, btmgmt) são ferramentas de gerenciamento de propósito geral posicionadas no nível de abstração errado para trabalho de avaliação.
O Caeruleus substitui toda essa pilha por uma superfície de comando consistente:
| Caso de uso | Método anterior | Com Caeruleus |
|---|---|---|
| Descobrir dispositivos próximos | hcitool lescan / bettercap ble.recon / bluetoothctl scan on | caeruleus scan |
| Listar e ler serviços/características | bettercap ble.enum <mac> | caeruleus enumerate -b <mac> --values |
| Sessão interativa | gatttool -I / bluetoothctl | caeruleus shell -b <mac> |
| Ler um handle | gatttool --char-read-hnd 0x0013 | caeruleus read -b <mac> -a 0x0013 |
| Escrever em um handle | gatttool -b <mac> --char-write-req -a 0x002c -n $(...) | caeruleus write -b <mac> -a 0x002c --req -s "value" |
| Capturar notificações | logger Bleak personalizado | caeruleus listen -b <mac> -a <handle> |
| Auditar exposição não autenticada | scripts de auditoria Bleak personalizados | caeruleus recon / caeruleus assess ... |
| Fuzzing de uma característica | fuzzers personalizados / boofuzz | caeruleus fuzz write -b <mac> -a <handle> |
| Parâmetros de conexão, MTU | hcitool con / btmgmt con-info | caeruleus conn-params -b <mac> |
| Energia e recuperação do adaptador | btmgmt power / hciconfig reset / rfkill | caeruleus doctor / caeruleus adapter power cycle |
Saída estruturada em todos os lugares. Todo comando que produz saída suporta -o text|json|jsonl. JSON é a representação canônica, não uma exportação secundária; jsonl transmite um registro por evento para scan --live e listen. enumerate --compact emite uma linha key=value por característica para grep ou uma janela de contexto de LLM.
Saúde da pilha BLE. caeruleus doctor percorre o estado do BlueZ e do kernel e imprime uma lista de verificação OK/WARN/FAIL: bluetoothd em execução, adaptador energizado, nenhuma sessão de descoberta vazada, endereço em cache do BlueZ vs o endereço ativo do chip MGMT, uma sondagem de scan ao vivo de 2 segundos e ExchangeMTU em uma faixa segura. Cada descoberta não-OK traz um comando de correção concreto, e o código de saída segue a convenção grep/diff (0 limpo, 2 em falha).
Encerramento limpo. Em SIGTERM/SIGHUP a ferramenta executa o caminho de desconexão e faz polling até que Connected=false se propague pelo BlueZ, para que o periférico volte a anunciar imediatamente em vez de travar até seu timeout de supervisão. Chega de "conexões fantasma" após um crash.
Scripting e automação. serve/send mantêm um link GATT aberto sobre um socket Unix para que um script ou agente evite o custo de reconexão de ~1,5s por comando; batch executa comandos da entrada padrão sobre uma única conexão persistente; listen --trigger-value configura uma notificação, dispara uma escrita e captura a resposta atomicamente.
Detalhes de conveniência. Inferência de tipo de dispositivo a partir do GAP Appearance mais serviços anunciados (um relógio aparece como "Smartwatch", não como um código de aparência bruto); análise de entrada tolerante (handles como 0x002a, 0X2A ou 42; hex como deadbeef, de:ad:be:ef ou 0xdeadbeef); caeruleus recipes lista e pesquisa por palavra-chave 19 fluxos de trabalho comuns; conn-params expõe o intervalo negociado, latência e timeout de supervisão que nem gatttool nem bettercap expõem.
O Caeruleus trata agentes LLM como usuários de primeira classe. -o json / -o jsonl fornecem saída estruturada e eficiente em tokens que um agente analisa sem fazer scraping de tabelas formatadas para humanos, e o repositório inclui uma Agent Skill portátil (skills/caeruleus/SKILL.md) que ensina a qualquer assistente compatível com Agent Skills a superfície de comando e uma metodologia de avaliação recomendada. Aponte um agente para um dispositivo e ele executa toda a metodologia de ponta a ponta.
Em nosso benchmark, o Opus 4.8 (xHigh) com Caeruleus e sua skill completou a tarefa em 62% do tempo e 70% dos tokens do mesmo modelo com escolha livre de ferramentas (que recorreu a hcitool e scripts Bleak).
O Caeruleus tem como alvo Linux com BlueZ (bluetoothd) e um adaptador BLE padrão. Ele não compila nem executa no macOS ou Windows. Alguns comandos de socket bruto precisam de root.
Com o toolchain Go:
go install github.com/praetorian-inc/caeruleus/cmd/caeruleus@latest