
अपने स्थानीय पड़ोस की ब्लूटूथ गतिविधि की निगरानी करें
Bluetooth Neighborhood - अपने क्षेत्र में BLE उपकरणों को ट्रैक करें और ट्रैफ़िक पैटर्न का विश्लेषण करें।
चेतावनी: अल्फा सॉफ़्टवेयर
यह प्रोजेक्ट प्रारंभिक विकास में है और उत्पादन उपयोग के लिए तैयार नहीं है। सुविधाएँ बिना सूचना के बदल सकती हैं, टूट सकती हैं, या हटाई जा सकती हैं। अपने जोखिम पर उपयोग करें। एकत्र किए गए डेटा को प्रयोगात्मक माना जाना चाहिए।
फ़िल्टरिंग, खोज और रीयल-टाइम आँकड़ों के साथ डिवाइस सूची दिखाने वाला मुख्य डैशबोर्ड
टैब्ड कॉन्फ़िगरेशन पृष्ठ — Alerts, Operations, Groups, और Security
प्रोजेक्ट जानकारी और क्षमताओं के अवलोकन के साथ Intel पृष्ठ
यह प्रोजेक्ट WhisperPair vulnerability (CVE-2025-36911) से प्रेरित था, जिसने Bluetooth उपकरणों में गोपनीयता जोखिमों को उजागर किया।
हज़ारों Bluetooth उपकरण हर समय हमारे चारों ओर होते हैं: फ़ोन, कार, टीवी, हेडफ़ोन, श्रवण यंत्र, डिलीवरी वाहन, और बहुत कुछ। Bluehood दर्शाता है कि इन उपकरणों का निष्क्रिय रूप से पता लगाना और उनकी उपस्थिति में पैटर्न देखना कितना आसान है।
पर्याप्त डेटा के साथ, आप संभावित रूप से:
यह मेटाडेटा उपकरणों के साथ किसी भी सक्रिय इंटरैक्शन के बिना आश्चर्यजनक रूप से व्यक्तिगत जानकारी प्रकट कर सकता है।
Bluehood Bluetooth गोपनीयता के बारे में जागरूकता बढ़ाने के लिए एक शैक्षिक उपकरण है। यह एक वीकेंड प्रोजेक्ट है, लेकिन इसके निहितार्थों पर विचार करना उचित है।
Bluehood एक Bluetooth स्कैनर है जो:
? दबाकर देखें)पूर्वापेक्षाएँ — केवल Linux होस्ट
Bluehood BlueZ, Linux Bluetooth स्टैक के माध्यम से आपके Bluetooth adapter के साथ संचार करता है। कंटेनर शुरू करने से पहले होस्ट पर BlueZ इंस्टॉल और चालू होना चाहिए — Docker image में स्वयं यह शामिल नहीं है।
# Debian / Ubuntu (including Ubuntu Server) sudo apt install bluez sudo systemctl enable --now bluetooth # Arch Linux sudo pacman -S bluez bluez-utils sudo systemctl enable --now bluetoothहोस्ट पर BlueZ के बिना आपको इस तरह की त्रुटि दिखेगी:
BLE scan error: [org.freedesktop.DBus.Error.ServiceUnknown] The name org.bluez was not provided by any .service files
# Create a docker-compose.yml or download the one from this repo
# Then start with Docker Compose
docker compose up -d
# View logs
docker compose logs -f
Docker image GitHub Container Registry पर उपलब्ध है:
ghcr.io/dannymcc/bluehood:latest
वेब डैशबोर्ड http://localhost:8080 पर उपलब्ध होगा
sudo apt install bluez && sudo systemctl enable --now bluetooth)नोट: पुराने adapters (Bluetooth 2.x/3.x) BLE स्कैनिंग का समर्थन नहीं करते। यदि आपके adapter में BLE Central role समर्थन नहीं है, तो आपको दिखेगा:
No Bluetooth adapters with BLE 'central' role found.
नोट: Docker Bluetooth पहुँच के लिए privileged mode में host networking के साथ चलता है। यह BLE स्कैनिंग के लिए आवश्यक है।
Bluehood को Central role समर्थन वाले BLE-सक्षम Bluetooth adapter (Bluetooth 4.0 या बाद का) की आवश्यकता है। पुराने Bluetooth 2.x/3.x adapters BLE स्कैनिंग का समर्थन नहीं करते और काम नहीं करेंगे।
यदि आपका adapter BLE Central role का समर्थन नहीं करता, तो Bluehood इस संदेश के साथ बाहर निकल जाएगा:
No Bluetooth adapters with BLE 'central' role found
आप bluetoothctl show के साथ अपने adapter की क्षमताओं की जाँच कर सकते हैं और समर्थित roles में central देखें।
# Install system dependencies (Arch Linux)
sudo pacman -S bluez bluez-utils python-pip
# Install system dependencies (Debian/Ubuntu)
sudo apt install bluez python3-pip
# Clone and install
git clone https://github.com/dannymcc/bluehood.git
cd bluehood
pip install -e .
Bluetooth स्कैनिंग के लिए उन्नत विशेषाधिकारों की आवश्यकता होती है। एक चुनें:
root के रूप में चलाएँ (सबसे सरल):
sudo bluehood
Python को capabilities दें:
sudo setcap 'cap_net_admin,cap_net_raw+eip' $(readlink -f $(which python))
bluehood
systemd सेवा का उपयोग करें (हमेशा-चालू के लिए अनुशंसित):
sudo cp bluehood.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now bluehood
Bluehood macOS पर Docker के बिना मूल रूप से काम करता है। macOS BlueZ के बजाय CoreBluetooth का उपयोग करता है, जिसे bleak लाइब्रेरी स्वचालित रूप से संभालती है।
# Clone the repository
git clone https://github.com/dannymcc/bluehood.git
cd bluehood
# Create a virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install
pip install -e .
# Run
python -m bluehood.daemon
वेब डैशबोर्ड http://localhost:8080 पर उपलब्ध होगा
नोट: पहली बार चलाने पर, macOS आपको Bluetooth पहुँच की अनुमति देने के लिए प्रेरित करेगा। स्कैनिंग काम करने के लिए आपको यह अनुमति देनी होगी।
# Start with web dashboard (default port 8080)
bluehood
# Specify a different port (or set BLUEHOOD_PORT)
bluehood --port 9000
# Use a specific Bluetooth adapter
bluehood --adapter hci1
# Use separate adapters for BLE and classic scanning (concurrent)
bluehood --adapter hci0 --classic-adapter hci1
# List available adapters
bluehood --list-adapters
# Disable web dashboard (scanning only)
bluehood --no-web
# Enable Prometheus metrics exporter on port 9199
bluehood --metrics-port 9199
डैशबोर्ड प्रदान करता है:
/settings#operations)स्क्रीनशॉट साझा करने से पहले संवेदनशील डेटा को अस्पष्ट करने के लिए साइडबार से screenshot mode सक्षम करें:
AA:BB:XX:XX:XX:XX)Da********)Bluehood ntfy के माध्यम से पुश नोटिफ़िकेशन भेज सकता है, जो एक मुफ़्त, ओपन-सोर्स नोटिफ़िकेशन सेवा है। आप सार्वजनिक ntfy.sh सर्वर या अपने स्वयं के self-hosted instance का उपयोग कर सकते हैं।
bluehood-myname-alerts), या अपने स्वयं के ntfy सर्वर परhttps://ntfy.sh), अपना topic नाम, और यदि आपके सर्वर को आवश्यकता हो तो access token दर्ज करें, फिर नोटिफ़िकेशन सक्षम करेंडेटा ~/.local/share/bluehood/bluehood.db (SQLite) में संग्रहीत है।
environment variables के साथ स्थान ओवरराइड करें:
BLUEHOOD_DATA_DIR - डेटा फ़ाइलों के लिए निर्देशिकाBLUEHOOD_DB_PATH - डेटाबेस फ़ाइल का सीधा पथनोट: Heartbeat और pruning सेटिंग्स वेब UI (Settings > Operations) से या environment variables के माध्यम से कॉन्फ़िगर की जा सकती हैं। GUI मान env vars पर प्राथमिकता लेते हैं।
Bluehood कई संकेतों का उपयोग करके उपकरणों को वर्गीकृत करता है (प्राथमिकता क्रम में):
आधुनिक उपकरण गोपनीयता के लिए अपने MAC addresses को रैंडमाइज़ करते हैं। Bluehood:
Bluehood पैटर्न का पता लगाने के लिए sighting timestamps का विश्लेषण करता है:
उदाहरण पैटर्न: "Daily, evenings (5PM-9PM)", "Weekdays, morning (8AM-12PM)"
Bluehood कॉन्फ़िगर करने योग्य समय विंडो के भीतर बार-बार साथ दिखने वाले उपकरणों का पता लगाता है। यह प्रकट कर सकता है:
RSSI सिग्नल स्ट्रेंथ के आधार पर, उपकरणों को निकटता क्षेत्रों में वर्गीकृत किया जाता है:
sightings के बीच अंतराल का विश्लेषण करके ट्रैक करता है कि उपकरण कितने समय तक रेंज में रहते हैं। एक कॉन्फ़िगर करने योग्य gap threshold (डिफ़ॉल्ट 15 मिनट) निर्धारित करता है कि नया "session" कब शुरू होता है।
Bluehood Prometheus scraping के लिए metrics उजागर कर सकता है। BLUEHOOD_METRICS_PORT environment variable या --metrics-port CLI flag सेट करके सक्षम करें।
# Via environment variable
export BLUEHOOD_METRICS_PORT=9199
# Via CLI
bluehood --metrics-port 9199
Metrics http://host:9199/metrics पर प्रदान किए जाते हैं।
एक ready-to-import Grafana डैशबोर्ड grafana/bluehood-dashboard.json पर शामिल है। इसे Grafana UI (Dashboards > Import) या API के माध्यम से import करें:
curl -X POST "http://localhost:3000/api/dashboards/db" \
-H "Authorization: Bearer <your-api-key>" \
-H "Content-Type: application/json" \
-d "{\"dashboard\": $(cat grafana/bluehood-dashboard.json), \"overwrite\": true}"
bluetoothctl power onbluehood --list-adaptersBLE scan error: org.freedesktop.DBus.Error.ServiceUnknown / The name org.bluez was not provided
BlueZ होस्ट पर इंस्टॉल या चालू नहीं है। ठीक करें:
sudo apt install bluez # Debian/Ubuntu
sudo systemctl enable --now bluetooth
docker compose restart
सामान्य चेकलिस्ट:
systemctl status bluetoothbluetoothctl listयोगदान का स्वागत है! कृपया GitHub पर एक issue या PR खोलें।
| Variable | Default | Description |
|---|
PUID | 1000 | कंटेनर उपयोगकर्ता के लिए UID — bind mounts का उपयोग करते समय अपने होस्ट उपयोगकर्ता (id -u) से मेल खाने के लिए सेट करें |
PGID | 1000 | कंटेनर उपयोगकर्ता के लिए GID — bind mounts का उपयोग करते समय अपने होस्ट समूह (id -g) से मेल खाने के लिए सेट करें |
TZ | UTC | कंटेनर समयक्षेत्र (जैसे, Europe/London) |
BLUEHOOD_ADAPTER | auto | BLE स्कैनिंग के लिए Bluetooth adapter (जैसे, hci0) |
BLUEHOOD_CLASSIC_ADAPTER | BLUEHOOD_ADAPTER के समान | classic Bluetooth स्कैनिंग के लिए अलग adapter (जैसे, hci1)। जब एक अलग adapter पर सेट किया जाता है, तो BLE और classic स्कैन समवर्ती रूप से चलते हैं। |
BLUEHOOD_DATA_DIR | /data | डेटाबेस संग्रहण निर्देशिका |
BLUEHOOD_PORT | 8080 | वेब डैशबोर्ड पोर्ट। कंटेनर host networking का उपयोग करता है, इसलिए यदि 8080 लिया गया है तो इसे बदलें (पोर्ट मैपिंग के बजाय) |
BLUEHOOD_NTFY_SERVER | https://ntfy.sh | पुश नोटिफ़िकेशन के लिए ntfy सर्वर का बेस URL; इसे self-hosted instance पर इंगित करें। Settings पृष्ठ में सहेजा गया मान प्राथमिकता लेता है |
BLUEHOOD_METRICS_PORT | disabled | Prometheus metrics पोर्ट (जैसे, 9199) |
BLUEHOOD_HEARTBEAT_URL | disabled | heartbeat check-ins POST करने के लिए URL (जैसे, healthchecks.io या uptime-kuma push URL) |
BLUEHOOD_HEARTBEAT_INTERVAL | 300 | heartbeat check-ins के बीच सेकंड |
BLUEHOOD_PRUNE_DAYS | 0 (disabled) | संग्रहण खाली करने के लिए N दिनों से पुरानी sightings को स्वतः हटाएँ |
BLUEHOOD_PRUNE_MIN_SIGHTINGS | 0 (disabled) | जब >0, तो केवल पुरानी sighting पंक्तियों को trim करने के बजाय पूरे stale उपकरणों को prune करें (BLUEHOOD_PRUNE_DAYS से पुराने और कुल N से कम sightings वाले); watched उपकरण कभी prune नहीं होते |
| Key | Action |
|---|
/ | खोज बार पर फ़ोकस करें |
r | उपकरण सूची रीफ़्रेश करें |
c | compact view टॉगल करें |
w | चयनित उपकरण पर watch टॉगल करें |
Esc | modal बंद करें |
? | कीबोर्ड शॉर्टकट दिखाएँ |
| Metric | Type | Description |
|---|
bluehood_scans_total | Counter | पूर्ण किए गए कुल scan cycles |
bluehood_scan_errors_total | Counter | Scan errors (label: scan_type) |
bluehood_sightings_total | Counter | रिकॉर्ड किए गए कुल device sightings |
bluehood_new_devices_total | Counter | खोजे गए नए अद्वितीय उपकरण |
bluehood_last_scan_devices | Gauge | अंतिम स्कैन में उपकरण (label: scan_type) |
bluehood_devices_total | Gauge | DB में अद्वितीय उपकरण (label: bt_type) |
bluehood_devices_active | Gauge | अंतिम 5 मिनट में देखे गए उपकरण |
bluehood_devices_watched | Gauge | Watched उपकरण गिनती |
bluehood_devices_ignored | Gauge | Ignored उपकरण गिनती |
bluehood_scan_duration_seconds | Histogram | Scan cycle अवधि |
bluehood_device_rssi_dbm | Histogram | BLE उपकरणों का RSSI वितरण |
bluehood_build_info | Info | संस्करण जानकारी |