The code in this repository is researchware. That means its purpose is primarily to prove that the results of past research are real, and to allow replication of results. This code is not yet meant to be used as a production tool, nor is it optimized for performance. It is only meant to be used by researchers looking to replicate, or expand, on this work.
The class "Bluetooth 2222: Bluetooth reconnaissance with Blue2thprinting" is now available on OpenSecurityTraining2 as part of the new Bluetooth Learning Path!
This class takes on average about 8.5h to complete, and is by far the best way to learn how to use this software. It provides you with a preconfigured VM and walks you through the 30+ Bluetooth data types which are exposed for your analysis. Afterwards you can come back and load Blue2thprinting on to whichever of the physical setups below works best for you.
Sniffle host-side receiver is now a Rust binary. central_app_launcher.py spawns
Sniffle/sniffle_receiver_rust (a compiled native binary, drop-in CLI-compatible with
Sniffle/python_cli/sniff_receiver.py) instead of the Python sniff_receiver.py. The
Rust receiver gives the Pi Zero W enough headroom to drive all 6 Sonoff dongles
concurrently without the host-side CPU-starvation Ignoring message due to missing CRLF
errors the Python version caused. setup_capture_helper_debian-based.sh now installs
rustc+cargo from apt and builds the binary automatically; existing checkouts can
just rerun the setup script, or ./setup_capture_helper_debian-based.sh --build-rust
to only rebuild it. Source lives in Sniffle/sniffle_receiver_rust_src/ (the _src
suffix keeps the cargo project dir distinct from the deployed binary at
Sniffle/sniffle_receiver_rust) with build/usage docs in its own README.
If you have data from running Blue2thprinting before tag 2.2.0, you will need to execute the following commands to migrate the table names after tag 2.2.0 (commit ac416c8c2f78a93038be15ecdec6a62913d97ad9):
echo "rename tables"
mysql -u user -pa --database='bt2' --execute="RENAME TABLE LMP_NAME_RES TO LMP_NAME_RES_defragmented;"
mysql -u user -pa --database='bttest' --execute="RENAME TABLE LMP_NAME_RES TO LMP_NAME_RES_defragmented;"
echo "create new tables"
cd ~/Blue2thprinting/Analysis/one_time_initialization
./initialize_database.sh
./initialize_test_database.sh
You should pick one of the below targets which best matches your goals.
| Image | Setup instructions |
|---|---|
![]() |
Any random x86-based laptop Best for convenience. |
![]() |
tiny2th Best for small size. |
![]() |
Blue2thprinting Pro Max Extreme Edition! Best for capabilities. |
The repo can be cloned to any location. Scripts and binaries resolve their paths from their own filesystem location, so
~/Blue2thprinting,/opt/Blue2thprinting, or any other path will work. If you're upgrading from a version that required~/Blue2thprintingand had already run the capture setup, deleteScripts/.cron_addedand re-runsetup_capture_helper_debian-based.shso the root crontab gets rewritten with the new absolute path.
1️⃣ Try out analysis on BTIDALPOOL data first
2️⃣ Setup capture second
3️⃣ Import your own captured data third
Copyright(c) © Dark Mentor LLC 2023-2026


