SkillAgentSearch skills...

Bluesnoop

A TUI bluetooth utility for radar analysis and war driving 🦉

Install / Use

/learn @ANG13T/Bluesnoop
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<p align="center"> <img align="center" alt="DroneXtract logo" width="600" src="https://github.com/ANG13T/bluesnoop/blob/main/assets/asset_0.png"> </p>

bluesnoop

A simple Bluetooth Low Energy (BLE) sniffer using Python and the Bleak library

Features

  • Identify nearby device UUIDs and names
  • Persistent tracking of first and last appearance
  • Translation of cryptic model IDs
  • Export intelligence for external analysis

Demo Gallery

<table> <tr> <td valign="top"><img src="https://github.com/ANG13T/bluesnoop/blob/main/assets/asset_1.png?raw=true" alt="Gallery Image" height="300" width="600"> <h4 align="center">Timed Snoop</h4></td> </tr> <tr> <td valign="top"><img src="https://github.com/ANG13T/bluesnoop/blob/main/assets/asset_2.png?raw=true" alt="Gallery Image" height="300" width="600"> <h4 align="center">Limitless Snoop</h4></td> </tr> </table>

Getting Started

Grant Bluetooth Permissions

If you are using iTerm2, you need to ensure the terminal itself has permission to Bluetooth. Open System Settings (or System Preferences). Go to Privacy & Security > Bluetooth and Grant Access to iTerm2.

python -m venv .venv
source .venv/bin/activate
pip install asyncio bleak rich manuf bluetooth-numbers geocoder
python3 bluesnoop.py

Contributing

bluesnoop is open to any contributions. Please fork the repository and make a pull request with the features or fixes you want to be implemented.

Upcoming

<details> <summary>Interpreting Bluetooth UUID && OUID Numbers </summary>
  • Use a public OUI database (like the IEEE OUI list) to map MAC address prefixes to manufacturers.
  • You can find the OUI database here: https://standards-oui.ieee.org
An Organizationally Unique Identifier (OUI) is a 24-bit (three-byte) number, managed by the IEEE, that uniquely identifies a manufacturer or organization for network devices, forming the first half of a device's MAC address to ensure global uniqueness 

The uuid.UUID class in Python strictly validates strings against the RFC 4122 standard. Specifically, it looks for a "version" digit at a specific position in the string.

Why it's failing In a standard UUID, the first digit of the third group (e.g., xxxx-xxxx-Nxxx-xxxx) must be a number from 1 to 5 (representing the version).

Looking at your data:

D5D93B6E-C324-FD7B... -> The version digit is F.

6ADBBD89-CBFF-0FE8... -> The version digit is 0.

Since F and 0 are not valid RFC 4122 versions (1-5), Python throws a ValueError: badly formed hexadecimal UUID string.

Explore more on the following: discovered_devices_and_advertisement_data // https://bleak.readthedocs.io/en/latest/api/scanner.html#bleak.BleakScanner.discovered_devices // 16:20 @ 1/8/26 BW

</details>

Support

If you enjoyed bluesnoop, please consider becoming a sponsor in order to fund my future projects.

To check out my other works, visit my GitHub profile.

View on GitHub
GitHub Stars34
CategoryDevelopment
Updated12d ago
Forks5

Languages

Python

Security Score

80/100

Audited on Mar 25, 2026

No findings