
अपने स्थानीय पड़ोस की ब्लूटूथ गतिविधि की निगरानी करें
ब्लूटूथ नेबरहुड - अपने क्षेत्र में BLE उपकरणों को ट्रैक करें और ट्रैफ़िक पैटर्न का विश्लेषण करें।
चेतावनी: अल्फा सॉफ्टवेयर
यह प्रोजेक्ट प्रारंभिक विकास में है और उत्पादन उपयोग के लिए तैयार नहीं है। सुविधाएँ बिना सूचना के बदल सकती हैं, टूट सकती हैं या हटाई जा सकती हैं। अपने जोखिम पर उपयोग करें। एकत्रित डेटा को प्रयोगात्मक माना जाना चाहिए।
फ़िल्टरिंग, खोज और रीयल-टाइम सांख्यिकी के साथ उपकरण सूची दर्शाने वाला मुख्य डैशबोर्ड
टैब वाला कॉन्फ़िगरेशन पृष्ठ — अलर्ट, संचालन, समूह और सुरक्षा
प्रोजेक्ट जानकारी और क्षमता अवलोकन वाला इंटेल पृष्ठ
यह प्रोजेक्ट WhisperPair भेद्यता (CVE-2025-36911) से प्रेरित था, जिसने ब्लूटूथ उपकरणों में गोपनीयता जोखिमों को उजागर किया।
हज़ारों ब्लूटूथ उपकरण हमारे चारों ओर हर समय मौजूद रहते हैं: फ़ोन, कार, टीवी, हेडफ़ोन, श्रवण यंत्र, डिलीवरी वाहन, और भी बहुत कुछ। ब्लूहुड दर्शाता है कि इन उपकरणों को निष्क्रिय रूप से पहचानना और उनकी उपस्थिति में पैटर्न देखना कितना सरल है।
पर्याप्त डेटा के साथ, आप संभावित रूप से यह कर सकते हैं:
यह मेटाडेटा उपकरणों के साथ किसी भी सक्रिय इंटरैक्शन के बिना आश्चर्यजनक रूप से व्यक्तिगत जानकारी प्रकट कर सकता है।
ब्लूहुड ब्लूटूथ गोपनीयता के बारे में जागरूकता बढ़ाने के लिए एक शैक्षिक उपकरण है। यह एक वीकेंड प्रोजेक्ट है, लेकिन इसके निहितार्थों पर विचार करने लायक हैं।
ब्लूहुड एक ब्लूटूथ स्कैनर है जो:
? दबाएँ)पूर्वापेक्षाएँ — केवल Linux होस्ट
ब्लूहुड ब्लूज़ (Linux ब्लूटूथ स्टैक) के माध्यम से आपके ब्लूटूथ एडाप्टर से संचार करता है। कंटेनर शुरू करने से पहले होस्ट पर ब्लूज़ स्थापित और चल रहा होना चाहिए — डॉकर इमेज में स्वयं यह शामिल नहीं है।
# डेबियन / उबंटू (उबंटू सर्वर सहित) sudo apt install bluez sudo systemctl enable --now bluetooth # आर्क लिनक्स sudo pacman -S bluez bluez-utils sudo systemctl enable --now bluetoothहोस्ट पर ब्लूज़ के बिना आपको इस तरह की त्रुटि दिखाई देगी:
BLE scan error: [org.freedesktop.DBus.Error.ServiceUnknown] The name org.bluez was not provided by any .service files
# एक docker-compose.yml बनाएँ या इस रेपो से डाउनलोड करें
# फिर डॉकर कंपोज़ के साथ प्रारंभ करें
docker compose up -d
# लॉग देखें
docker compose logs -f
डॉकर इमेज GitHub कंटेनर रजिस्ट्री पर उपलब्ध है:
ghcr.io/dannymcc/bluehood:latest
वेब डैशबोर्ड http://localhost:8080 पर उपलब्ध होगा।
sudo apt install bluez && sudo systemctl enable --now bluetooth)नोट: पुराने एडाप्टर (ब्लूटूथ 2.x/3.x) BLE स्कैनिंग का समर्थन नहीं करते। यदि आपके एडाप्टर में BLE केंद्रीय भूमिका समर्थन नहीं है, तो आप देखेंगे:
No Bluetooth adapters with BLE 'central' role found।
नोट: डॉकर ब्लूटूथ पहुँच के लिए विशेषाधिकार प्राप्त मोड और होस्ट नेटवर्किंग में चलता है। BLE स्कैनिंग के लिए यह आवश्यक है।
ब्लूहुड को BLE-सक्षम ब्लूटूथ एडाप्टर (ब्लूटूथ 4.0 या बाद का) चाहिए जिसमें केंद्रीय भूमिका समर्थन हो। पुराने ब्लूटूथ 2.x/3.x एडाप्टर BLE स्कैनिंग का समर्थन नहीं करते और काम नहीं करेंगे।
यदि आपका एडाप्टर BLE केंद्रीय भूमिका का समर्थन नहीं करता है, तो ब्लूहुड इस त्रुटि के साथ बाहर निकल जाएगा:
No Bluetooth adapters with BLE 'central' role found
आप bluetoothctl show के साथ अपने एडाप्टर की क्षमताओं की जाँच कर सकते हैं और समर्थित भूमिकाओं में central देख सकते हैं।
# सिस्टम निर्भरताएँ स्थापित करें (आर्क लिनक्स)
sudo pacman -S bluez bluez-utils python-pip
# सिस्टम निर्भरताएँ स्थापित करें (डेबियन/उबंटू)
sudo apt install bluez python3-pip
# क्लोन और स्थापित करें
git clone https://github.com/dannymcc/bluehood.git
cd bluehood
pip install -e .
ब्लूटूथ स्कैनिंग के लिए उन्नत विशेषाधिकारों की आवश्यकता होती है। कोई एक चुनें:
रूट के रूप में चलाएँ (सबसे सरल):
sudo bluehood
पायथन को क्षमताएँ प्रदान करें:
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
ब्लूहुड डॉकर के बिना मूल रूप से macOS पर काम करता है। macOS ब्लूज़ के बजाय CoreBluetooth का उपयोग करता है, जो bleak लाइब्रेरी द्वारा स्वचालित रूप से संभाला जाता है।
# रिपॉजिटरी क्लोन करें
git clone https://github.com/dannymcc/bluehood.git
cd bluehood
# एक वर्चुअल वातावरण बनाएँ
python3 -m venv .venv
source .venv/bin/activate
# स्थापित करें
pip install -e .
# चलाएँ
python -m bluehood.daemon
वेब डैशबोर्ड http://localhost:8080 पर उपलब्ध होगा।
नोट: पहली बार चलाने पर, macOS आपको ब्लूटूथ पहुँच की अनुमति देने का संकेत देगा। स्कैनिंग के काम करने के लिए आपको यह अनुमति देनी होगी।
# वेब डैशबोर्ड के साथ प्रारंभ करें (डिफ़ॉल्ट पोर्ट 8080)
bluehood
# एक अलग पोर्ट निर्दिष्ट करें
bluehood --port 9000
# एक विशिष्ट ब्लूटूथ एडाप्टर का उपयोग करें
bluehood --adapter hci1
# BLE और क्लासिक स्कैनिंग के लिए अलग-अलग एडाप्टर का उपयोग करें (साथ-साथ)
bluehood --adapter hci0 --classic-adapter hci1
# उपलब्ध एडाप्टर सूचीबद्ध करें
bluehood --list-adapters
# वेब डैशबोर्ड अक्षम करें (केवल स्कैनिंग)
bluehood --no-web
# पोर्ट 9199 पर प्रोमेथियस मीट्रिक्स निर्यातक सक्षम करें
bluehood --metrics-port 9199
डैशबोर्ड प्रदान करता है:
/settings#operations)स्क्रीनशॉट साझा करने से पहले संवेदनशील डेटा को अस्पष्ट करने के लिए साइडबार से स्क्रीनशॉट मोड सक्षम करें:
AA:BB:XX:XX:XX:XX)Da********)ब्लूहुड ntfy.sh के माध्यम से पुश सूचनाएँ भेज सकता है, जो एक मुफ़्त, ओपन-सोर्स सूचना सेवा है।
bluehood-myname-alerts)डेटा ~/.local/share/bluehood/bluehood.db (SQLite) में संग्रहीत किया जाता है।
पर्यावरण चर के साथ स्थान को ओवरराइड करें:
BLUEHOOD_DATA_DIR - डेटा फ़ाइलों के लिए निर्देशिकाBLUEHOOD_DB_PATH - डेटाबेस फ़ाइल का सीधा पथनोट: हार्टबीट और प्रूनिंग सेटिंग्स को वेब UI (सेटिंग्स > संचालन) या पर्यावरण चर के माध्यम से कॉन्फ़िगर किया जा सकता है। GUI मान env vars पर प्राथमिकता लेते हैं।
ब्लूहुड कई संकेतों का उपयोग करके उपकरणों को वर्गीकृत करता है (प्राथमिकता क्रम में):
आधुनिक उपकरण गोपनीयता के लिए अपने MAC पतों को रैंडमाइज़ करते हैं। ब्लूहुड:
ब्लूहुड पैटर्न का पता लगाने के लिए दर्शन टाइमस्टैम्प का विश्लेषण करता है:
उदाहरण पैटर्न: "दैनिक, शाम (5PM-9PM)", "कार्यदिवस, सुबह (8AM-12PM)"
ब्लूहुड उन उपकरणों का पता लगाता है जो एक कॉन्फ़िगरेबल समय विंडो के भीतर अक्सर एक साथ दिखाई देते हैं। यह प्रकट कर सकता है:
RSSI सिग्नल स्ट्रेंथ के आधार पर, उपकरणों को निकटता क्षेत्रों में वर्गीकृत किया जाता है:
दर्शनों के बीच अंतराल का विश्लेषण करके ट्रैक करता है कि उपकरण सीमा में कितना समय बिताते हैं। एक कॉन्फ़िगरेबल अंतराल थ्रेशोल्ड (डिफ़ॉल्ट 15 मिनट) यह निर्धारित करता है कि एक नया "सत्र" कब शुरू होता है।
ब्लूहुड प्रोमेथियस स्क्रैपिंग के लिए मीट्रिक्स को उजागर कर सकता है। BLUEHOOD_METRICS_PORT पर्यावरण चर या --metrics-port CLI फ़्लैग सेट करके सक्षम करें।
# पर्यावरण चर के माध्यम से
export BLUEHOOD_METRICS_PORT=9199
# CLI के माध्यम से
bluehood --metrics-port 9199
मीट्रिक्स http://host:9199/metrics पर उपलब्ध हैं।
आयात के लिए तैयार ग्राफ़ाना डैशबोर्ड grafana/bluehood-dashboard.json पर शामिल है। इसे ग्राफ़ाना UI (डैशबोर्ड > आयात) या API के माध्यम से आयात करें:
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
ब्लूज़ स्थापित नहीं है या होस्ट पर नहीं चल रहा है। समाधान:
sudo apt install bluez # डेबियन/उबंटू
sudo systemctl enable --now bluetooth
docker compose restart
सामान्य जाँच सूची:
systemctl status bluetoothbluetoothctl listयोगदान का स्वागत है! कृपया GitHub पर एक मुद्दा या PR खोलें।
MIT लाइसेंस - विवरण के लिए LICENSE देखें।
यह उपकरण केवल शैक्षिक उद्देश्यों के लिए है। ब्लूटूथ उपकरणों की निगरानी करते समय अपने क्षेत्राधिकार में गोपनीयता कानूनों का ध्यान रखें। लेखक इस सॉफ्टवेयर के किसी भी दुरुपयोग के लिए जिम्मेदार नहीं है।
Danny McClelland द्वारा निर्मित
| चर | डिफ़ॉल्ट | विवरण |
|---|
PUID | 1000 | कंटेनर उपयोगकर्ता के लिए UID — बाइंड माउंट का उपयोग करते समय अपने होस्ट उपयोगकर्ता (id -u) से मिलान करने के लिए सेट करें |
PGID | 1000 | कंटेनर उपयोगकर्ता के लिए GID — बाइंड माउंट का उपयोग करते समय अपने होस्ट समूह (id -g) से मिलान करने के लिए सेट करें |
TZ | UTC | कंटेनर समय क्षेत्र (जैसे, Europe/London) |
BLUEHOOD_ADAPTER | auto | BLE स्कैनिंग के लिए ब्लूटूथ एडाप्टर (जैसे, hci0) |
BLUEHOOD_CLASSIC_ADAPTER | BLUEHOOD_ADAPTER के समान | क्लासिक ब्लूटूथ स्कैनिंग के लिए अलग एडाप्टर (जैसे, hci1). जब भिन्न एडाप्टर पर सेट किया जाता है, तो BLE और क्लासिक स्कैन एक साथ चलते हैं। |
BLUEHOOD_DATA_DIR | /data | डेटाबेस संग्रहण निर्देशिका |
BLUEHOOD_METRICS_PORT | अक्षम | प्रोमेथियस मीट्रिक्स पोर्ट (जैसे, 9199) |
BLUEHOOD_HEARTBEAT_URL | अक्षम | हार्टबीट चेक-इन POST करने का URL (जैसे, healthchecks.io या uptime-kuma पुश URL) |
BLUEHOOD_HEARTBEAT_INTERVAL | 300 | हार्टबीट चेक-इन के बीच सेकंड |
BLUEHOOD_PRUNE_DAYS | 0 (अक्षम) | स्टोरेज खाली करने के लिए N दिनों से पुराने दर्शन को स्वचालित रूप से हटाएँ |
| कुंजी | कार्य |
|---|
/ | खोज बार पर फ़ोकस करें |
r | उपकरण सूची ताज़ा करें |
c | कॉम्पैक्ट दृश्य टॉगल करें |
w | चयनित उपकरण पर देखना टॉगल करें |
Esc | मोडल बंद करें |
? | कीबोर्ड शॉर्टकट दिखाएँ |
| मीट्रिक | प्रकार | विवरण |
|---|
bluehood_scans_total | काउंटर | कुल स्कैन चक्र पूर्ण |
bluehood_scan_errors_total | काउंटर | स्कैन त्रुटियाँ (लेबल: scan_type) |
bluehood_sightings_total | काउंटर | कुल उपकरण दर्शन रिकॉर्ड किए गए |
bluehood_new_devices_total | काउंटर | नए अद्वितीय उपकरण खोजे गए |
bluehood_last_scan_devices | गेज | अंतिम स्कैन में उपकरण (लेबल: scan_type) |
bluehood_devices_total | गेज | DB में अद्वितीय उपकरण (लेबल: bt_type) |
bluehood_devices_active | गेज | पिछले 5 मिनट में देखे गए उपकरण |
bluehood_devices_watched | गेज | देखे गए उपकरणों की संख्या |
bluehood_devices_ignored | गेज | अनदेखा किए गए उपकरणों की संख्या |
bluehood_scan_duration_seconds | हिस्टोग्राम | स्कैन चक्र अवधि |
bluehood_device_rssi_dbm | हिस्टोग्राम | BLE उपकरणों का RSSI वितरण |
bluehood_build_info | जानकारी | संस्करण जानकारी |