
Единый бинарный файл на Go для тестирования безопасности Bluetooth Low Energy в Linux/BlueZ: сканирование, перечисление GATT, чтение/запись/уведомления, фаззинг характеристик и структурированные оценки с выводом в JSON.
Один бинарник на Go для всего рабочего процесса оценки Bluetooth Low Energy в Linux/BlueZ: сканирование, перечисление, чтение/запись/уведомления, фаззинг и структурированная оценка безопасности с выводом в JSON для скриптов и агентов.
Caeruleus объединяет тестирование безопасности Bluetooth Low Energy (BLE) в один бинарник на Go, построенный на стеке Linux BlueZ. Он взаимодействует с периферийными устройствами через BlueZ D-Bus и необработанные сокеты L2CAP/HCI и охватывает весь жизненный цикл: обнаружение устройств, просмотр и чтение/запись дерева GATT, захват уведомлений, фаззинг характеристик с возможностью записи и выполнение повторяемых рабочих процессов оценки безопасности. Каждая команда выдаёт структурированный вывод -o json / -o jsonl для скриптов, отчётности и LLM-агентов.
Созданный инженерами по наступательной безопасности для замены обычной груды bettercap, gatttool, hcitool, bluetoothctl и одноразовых скриптов на Bleak, Caeruleus сохраняет абстракции на том уровне, на котором действительно работает человек или агент.
caeruleus: по-латыни — «синий» в Bluetooth Low Energy
Стандартный рабочий процесс тестирования безопасности BLE — это охота за сокровищами по инструментам, которые никогда не предназначались для совместной работы:
hcitool / hciconfig для настройки адаптера и обнаружения — оба устарели в BlueZ и отсутствуют во многих современных дистрибутивах.bettercap для ble.recon и ble.enum. Мощно, но вы устанавливаете целый фреймворк для сетевых атак только ради просмотра дерева GATT.gatttool для чтения и записи хендлов — устарел много лет назад, но всё ещё присутствует в каждом руководстве.Каждый говорит на своём диалекте, и ни один не выдаёт машиночитаемый вывод, который можно передать на следующий шаг, поэтому вы становитесь слоем интеграции, вручную копируя MAC-адреса и хендлы между терминалами. Собственные поддерживаемые фронтенды BlueZ (bluetoothctl, btmgmt) — это универсальные инструменты управления, рассчитанные на неверный уровень абстракции для задач оценки.
Caeruleus заменяет всю эту груду единой согласованной поверхностью команд:
| Сценарий использования | Прежний метод | С Caeruleus |
|---|---|---|
| Обнаружение ближайших устройств | hcitool lescan / bettercap ble.recon / bluetoothctl scan on | caeruleus scan |
| Список и чтение сервисов/характеристик | bettercap ble.enum <mac> | caeruleus enumerate -b <mac> --values |
| Интерактивная сессия | gatttool -I / bluetoothctl | caeruleus shell -b <mac> |
| Чтение хендла | gatttool --char-read-hnd 0x0013 | caeruleus read -b <mac> -a 0x0013 |
| Запись хендла | gatttool -b <mac> --char-write-req -a 0x002c -n $(...) | caeruleus write -b <mac> -a 0x002c --req -s "value" |
| Захват уведомлений | собственный логгер на Bleak | caeruleus listen -b <mac> -a <handle> |
| Аудит неаутентифицированной экспозиции | собственные скрипты аудита на Bleak | caeruleus recon / caeruleus assess ... |
| Фаззинг характеристики | собственные фаззеры / boofuzz | caeruleus fuzz write -b <mac> -a <handle> |
| Параметры соединения, MTU | hcitool con / btmgmt con-info | caeruleus conn-params -b <mac> |
| Питание и восстановление адаптера | btmgmt power / hciconfig reset / rfkill | caeruleus doctor / caeruleus adapter power cycle |
Структурированный вывод везде. Каждая команда, производящая вывод, поддерживает -o text|json|jsonl. JSON — это каноническое представление, а не вторичный экспорт; jsonl передаёт по одной записи на событие для scan --live и listen. enumerate --compact выдаёт по одной строке key=value на характеристику для grep или контекстного окна LLM.
Здоровье стека BLE. caeruleus doctor обходит состояние BlueZ и ядра и выводит контрольный список OK/WARN/FAIL: запущен ли bluetoothd, включён ли адаптер, нет ли утечки сессии обнаружения, адрес из кэша BlueZ против живого адреса чипа MGMT, живая 2-секундная проба сканирования и ExchangeMTU в безопасном диапазоне. Каждый не-OK результат сопровождается конкретной командой исправления, а код выхода следует соглашению grep/diff (0 — чисто, 2 — при сбое).
Чистое завершение. При SIGTERM/SIGHUP инструмент выполняет путь отключения и опрашивает состояние, пока Connected=false не распространится через BlueZ, так что периферийное устройство немедленно возобновляет рекламу вместо ожидания своего тайм-аута контроля. Больше никаких «призрачных соединений» после сбоя.
Скриптинг и автоматизация. serve/send удерживают одно GATT-соединение открытым через Unix-сокет, чтобы скрипт или агент избегал затрат на переподключение ~1,5 с на каждую команду; batch выполняет команды из stdin через одно постоянное соединение; listen --trigger-value настраивает уведомление, инициирует запись и атомарно захватывает ответ.
Удобные детали. Определение типа устройства по GAP Appearance плюс рекламируемым сервисам (часы отображаются как «Smartwatch», а не как необработанный код appearance); снисходительный разбор ввода (хендлы как 0x002a, 0X2A или 42; hex как deadbeef, de:ad:be:ef или 0xdeadbeef); caeruleus recipes перечисляет и ищет по ключевым словам 19 распространённых рабочих процессов; conn-params показывает согласованный интервал, задержку и тайм-аут контроля, которые не предоставляют ни gatttool, ни bettercap.
Caeruleus относится к LLM-агентам как к пользователям первого класса. -o json / -o jsonl дают токен-эффективный структурированный вывод, который агент разбирает без парсинга человекочитаемых таблиц, а репозиторий поставляется с переносимым Agent Skill (skills/caeruleus/SKILL.md), который обучает любого совместимого с Agent Skills ассистента поверхности команд и рекомендуемой методологии оценки. Направьте агента на устройство — и он выполнит всю методологию от начала до конца.
В нашем бенчмарке Opus 4.8 (xHigh) с Caeruleus и его навыком выполнил задачу за 62% времени и 70% токенов по сравнению с той же моделью при свободном выборе инструментов (которая тянулась к hcitool и скриптам на Bleak).
Caeruleus ориентирован на Linux с BlueZ (bluetoothd) и стандартный BLE-адаптер. Он не собирается и не работает на macOS или Windows. Нескольким командам с необработанными сокетами требуются права root.
С помощью тулчейна Go:
go install github.com/praetorian-inc/caeruleus/cmd/caeruleus@latest