
Binaire Go unique pour les tests de sécurité Bluetooth Low Energy sur Linux/BlueZ : scan, énumération GATT, lecture/écriture/notification, fuzzing des caractéristiques et exécution d'évaluations structurées avec sortie JSON.
Un seul binaire Go pour l'ensemble du workflow d'évaluation Bluetooth Low Energy sous Linux/BlueZ : scan, énumération, lecture/écriture/notification, fuzzing et évaluation de sécurité structurée, avec sortie JSON pour les scripts et les agents.
Caeruleus consolide le test de sécurité Bluetooth Low Energy (BLE) dans un seul binaire Go construit sur la pile Linux BlueZ. Il communique avec les périphériques via BlueZ D-Bus et les sockets brutes L2CAP/HCI et couvre tout le cycle de vie : découvrir les appareils, parcourir et lire/écrire l'arbre GATT, capturer les notifications, fuzzer les caractéristiques inscriptibles et exécuter des workflows d'évaluation de sécurité reproductibles. Chaque commande émet une sortie structurée -o json / -o jsonl pour le scripting, le reporting et les agents LLM.
Conçu par des ingénieurs en sécurité offensive pour remplacer l'habituel empilement de bettercap, gatttool, hcitool, bluetoothctl et de scripts Bleak ponctuels, Caeruleus maintient les abstractions au niveau auquel un humain ou un agent travaille réellement.
caeruleus : latin pour le « bleu » de Bluetooth Low Energy
Le workflow standard pour le test de sécurité BLE est une chasse au trésor à travers des outils qui n'ont jamais été conçus pour fonctionner ensemble :
hcitool / hciconfig pour la configuration de l'adaptateur et la découverte, tous deux dépréciés par BlueZ et absents de nombreuses distributions modernes.bettercap pour ble.recon et ble.enum. Puissant, mais vous installez un framework complet d'attaque réseau juste pour parcourir un arbre GATT.gatttool pour lire et écrire des handles, déprécié depuis des années mais toujours présent dans chaque tutoriel.Chacun parle son propre dialecte, et aucun n'émet de sortie lisible par machine que vous pouvez transmettre à l'étape suivante, vous devenez donc la couche d'intégration, copiant à la main les adresses MAC et les handles entre les terminaux. Les frontends pris en charge par BlueZ (bluetoothctl, btmgmt) sont des outils de gestion généralistes positionnés au mauvais niveau d'abstraction pour le travail d'évaluation.
Caeruleus remplace tout cet empilement par une surface de commandes cohérente :
| Cas d'usage | Méthode précédente | Avec Caeruleus |
|---|---|---|
| Découvrir les appareils à proximité | hcitool lescan / bettercap ble.recon / bluetoothctl scan on | caeruleus scan |
| Lister et lire les services/caractéristiques | bettercap ble.enum <mac> | caeruleus enumerate -b <mac> --values |
| Session interactive | gatttool -I / bluetoothctl | caeruleus shell -b <mac> |
| Lire un handle | gatttool --char-read-hnd 0x0013 | caeruleus read -b <mac> -a 0x0013 |
| Écrire un handle | gatttool -b <mac> --char-write-req -a 0x002c -n $(...) | caeruleus write -b <mac> -a 0x002c --req -s "value" |
| Capturer les notifications | logger Bleak personnalisé | caeruleus listen -b <mac> -a <handle> |
| Auditer l'exposition non authentifiée | scripts d'audit Bleak personnalisés | caeruleus recon / caeruleus assess ... |
| Fuzzer une caractéristique | fuzzers personnalisés / boofuzz | caeruleus fuzz write -b <mac> -a <handle> |
| Paramètres de connexion, MTU | hcitool con / btmgmt con-info | caeruleus conn-params -b <mac> |
| Alimentation et récupération de l'adaptateur | btmgmt power / hciconfig reset / rfkill | caeruleus doctor / caeruleus adapter power cycle |
Sortie structurée partout. Chaque commande qui produit une sortie prend en charge -o text|json|jsonl. Le JSON est la représentation canonique, pas un export secondaire ; jsonl diffuse un enregistrement par événement pour scan --live et listen. enumerate --compact émet une ligne key=value par caractéristique pour grep ou une fenêtre de contexte LLM.
Santé de la pile BLE. caeruleus doctor parcourt l'état de BlueZ et du noyau et affiche une liste de vérification OK/WARN/FAIL : bluetoothd en cours d'exécution, adaptateur alimenté, aucune session de découverte fuitée, adresse mise en cache par BlueZ vs l'adresse live de la puce MGMT, une sonde de scan live de 2 secondes, et ExchangeMTU dans une plage sûre. Chaque constat non-OK porte une commande de correction concrète, et le code de sortie suit la convention grep/diff (0 clair, 2 en cas d'échec).
Démontage propre. Sur SIGTERM/SIGHUP, l'outil exécute le chemin de déconnexion et interroge jusqu'à ce que Connected=false se propage à travers BlueZ, de sorte que le périphérique se réannonce immédiatement au lieu de rester bloqué pendant son délai de supervision. Fini les « connexions fantômes » après un crash.
Scripting et automatisation. serve/send maintiennent un lien GATT ouvert via un socket Unix afin qu'un script ou un agent évite le coût de reconnexion d'environ 1,5 s par commande ; batch exécute des commandes depuis stdin sur une seule connexion persistante ; listen --trigger-value configure une notification, déclenche une écriture et capture la réponse de manière atomique.
Détails pratiques. Inférence du type d'appareil à partir du GAP Appearance et des services annoncés (une montre apparaît comme « Smartwatch », pas comme un code d'apparence brut) ; analyse d'entrée tolérante (handles sous la forme 0x002a, 0X2A ou 42 ; hexadécimal sous la forme deadbeef, de:ad:be:ef ou 0xdeadbeef) ; caeruleus recipes liste et recherche par mot-clé 19 workflows courants ; conn-params expose l'intervalle négocié, la latence et le délai de supervision que ni gatttool ni bettercap n'exposent.
Caeruleus traite les agents LLM comme des utilisateurs de première classe. -o json / -o jsonl fournissent une sortie structurée et économe en tokens qu'un agent analyse sans avoir à extraire des tableaux formatés pour les humains, et le dépôt fournit une Agent Skill portable (skills/caeruleus/SKILL.md) qui enseigne à tout assistant compatible Agent Skills la surface de commandes et une méthodologie d'évaluation recommandée. Pointez un agent vers un appareil et il exécute toute la méthodologie de bout en bout.
Dans notre benchmark, Opus 4.8 (xHigh) avec Caeruleus et sa skill a accompli la tâche en 62 % du temps et 70 % des tokens du même modèle avec un choix libre d'outils (qui s'est tourné vers hcitool et des scripts Bleak).