Skip to content

Releases: praetorian-inc/caeruleus

Caeruleus v1.1.0

Choose a tag to compare

@praetorian-aaron praetorian-aaron released this 31 Jul 06:31
40907eb

This release improves compatibility with older BlueZ versions, where the host's GATT view can be incomplete or the handles it reports can be off by one from the device's true ATT handles.

What's new

Host/BlueZ-independent GATT access: enumerate --raw and read --raw. Older BlueZ (for example 5.55 on Raspbian bullseye) omits the remote GAP (0x1800) and GATT (0x1801) services from its D-Bus GATT tree, so a plain enumerate can miss characteristics such as Device Name (0x2A00) entirely, and read can't reach them. enumerate --raw (root) walks the device's own attribute database directly over the ATT channel, giving a complete view with the device's true handles regardless of the host's BlueZ version, and read --raw (root) reads any of those handles directly over ATT. Together they let you discover and read the parts of a device that older BlueZ hides. (#28, #30)

Correct characteristic handles on old BlueZ. On BlueZ before 5.57, which does not expose the characteristic Handle D-Bus property, caeruleus derived the handle from the object path. That path carries the declaration handle, one less than the value handle you actually read and write. Characteristic handles are now the true value handle on every BlueZ version, so a handle from enumerate (or enumerate --raw) works directly with read, write, listen, and cccd. (#29)

On a current BlueZ nothing changes. On an older one, such as a Raspberry Pi running 5.55, the GATT tree is now complete, the handles line up with what you read, and you can read the characteristics BlueZ previously hid.

Install

go install github.com/praetorian-inc/caeruleus/cmd/caeruleus@latest

Or download the archive for your architecture below, extract, and put caeruleus on your $PATH. Requires Linux with BlueZ and a standard BLE adapter; a few raw-socket commands need root.

Assets

Asset Platform
caeruleus_1.1.0_linux_amd64.tar.gz Linux x86_64
caeruleus_1.1.0_linux_arm64.tar.gz Linux arm64
checksums.txt SHA-256 checksums

Full changelog: v1.0.0...v1.1.0

Caeruleus v1.0.0

Choose a tag to compare

@praetorian-aaron praetorian-aaron released this 10 Jul 05:07

First public release of Caeruleus — a single Go binary for the whole Bluetooth Low Energy assessment workflow on Linux/BlueZ: scan, enumerate, read/write/notify, fuzz, and structured security assessment, with JSON output for scripts and agents.

Install

go install github.com/praetorian-inc/caeruleus/cmd/caeruleus@latest

Or download the archive for your architecture below, extract, and put caeruleus on your $PATH:

tar xzf caeruleus_1.0.0_linux_amd64.tar.gz
sudo install -m755 caeruleus /usr/local/bin/

Requirements

Linux with BlueZ (bluetoothd) and a standard BLE adapter. A handful of raw-socket commands need root. Run caeruleus doctor first to confirm the adapter is healthy, then caeruleus scan to find your target.

Assets

Asset Platform
caeruleus_1.0.0_linux_amd64.tar.gz Linux x86_64
caeruleus_1.0.0_linux_arm64.tar.gz Linux arm64
checksums.txt SHA-256 checksums

Caeruleus is Linux-only (it builds on BlueZ). See the README and Wiki for the full command reference, recipes, and assessment workflow.