Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
btrpa-scan — Resolvable Private Address (RPA) समाधान हेतु Identity Resolving Keys (IRKs) का उपयोग करने वाला Bluetooth Low Energy (BLE) स्कैनर | Kitploit
उपकरण/GitHubGitHub/hackingdave/btrpa-scan
OSINT (खुला स्रोत खुफिया)टोहीब्लूटूथ सुरक्षाजानकारी एकत्र करनावायरलेस सुरक्षा
GitHubhackingdave/btrpa-scan

btrpa-scan

Resolvable Private Address (RPA) समाधान हेतु Identity Resolving Keys (IRKs) का उपयोग करने वाला Bluetooth Low Energy (BLE) स्कैनर

रिपॉजिटरी देखें
351506 महीने पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

btrpa-scan

उन्नत रिज़ॉल्वेबल प्राइवेट एड्रेस (RPA) रिज़ॉल्यूशन के साथ एक ब्लूटूथ लो एनर्जी (BLE) स्कैनर। आस-पास के BLE डिवाइसों को खोजें, MAC एड्रेस द्वारा किसी विशेष डिवाइस को ट्रैक करें, या आइडेंटिटी रिज़ॉल्विंग की (IRK) का उपयोग करके प्राइवेसी-रैंडमाइज़्ड एड्रेस को रिज़ॉल्व करें।

लेखक: डेविड कैनेडी (@HackingDave) कंपनी: TrustedSec

विशेषताएँ

  • सभी डिवाइस खोजें - सिग्नल स्ट्रेंथ, अनुमानित दूरी, निर्माता डेटा और सर्विस UUID के साथ रेंज में प्रसारण करने वाले सभी BLE डिवाइसों को स्कैन करें
  • लक्षित खोज - MAC एड्रेस द्वारा किसी विशेष डिवाइस को खोजें और हर डिटेक्शन की निगरानी करें
  • IRK रिज़ॉल्यूशन - प्राइवेसी के लिए रैंडमाइज़्ड एड्रेस का उपयोग करने वाले डिवाइसों की पहचान करने हेतु एक या अधिक आइडेंटिटी रिज़ॉल्विंग कीज़ के विरुद्ध रिज़ॉल्वेबल प्राइवेट एड्रेस को रिज़ॉल्व करें
  • एकाधिक IRK - एक फ़ाइल से कई IRK लोड करें और एक ही स्कैन में कई डिवाइसों के एड्रेस रिज़ॉल्व करें
  • RSSI फ़िल्टरिंग - न्यूनतम RSSI थ्रेशोल्ड के साथ कमज़ोर सिग्नलों को फ़िल्टर करें
  • RSSI औसत - स्लाइडिंग विंडो औसत शोर-युक्त BLE RSSI रीडिंग को सुचारू करके अधिक स्थिर दूरी अनुमान देता है
  • नाम फ़िल्टरिंग - केस-असंवेदनशील सबस्ट्रिंग मिलान के साथ नाम द्वारा डिवाइस फ़िल्टर करें
  • सक्रिय स्कैनिंग - अतिरिक्त सर्विस UUID और डिवाइस नाम पाने के लिए SCAN_REQ भेजें, जो पैसिव स्कैनिंग से छूट जाते हैं
  • पर्यावरण प्रीसेट - अधिक सटीक दूरी अनुमान के लिए इनडोर, आउटडोर और फ्री-स्पेस पाथ-लॉस मॉडल
  • निकटता अलर्ट - जब डिवाइस किसी कॉन्फ़िगर करने योग्य दूरी के भीतर हो तो श्रव्य/दृश्य अलर्ट
  • वेब GUI - एनिमेटेड स्वीप, दूरी विज़ुअलाइज़ेशन, GPS मानचित्र, पिन/अनपिन के साथ सिग्नल-स्ट्रेंथ डिवाइस सूची और होवर टूलटिप्स के साथ ब्राउज़र-आधारित रडार इंटरफ़ेस
  • लाइव TUI - सिग्नल स्ट्रेंथ द्वारा क्रमबद्ध कर्सेस-आधारित लाइव-अपडेट होने वाली तालिका
  • रीयल-टाइम CSV लॉग - प्रत्येक डिटेक्शन को होते ही CSV फ़ाइल में स्ट्रीम करें
  • बैच निर्यात - स्कैन के अंत में परिणाम CSV, JSON या JSONL में निर्यात करें (stdout के लिए -o - समर्थित है)
  • GPS स्थान स्टैम्पिंग - gpsd के माध्यम से प्रत्येक डिटेक्शन को GPS निर्देशांक के साथ टैग करें; प्रति-डिवाइस सर्वोत्तम स्थान ट्रैक करता है (सबसे मज़बूत RSSI = सबसे निकट निकटता)। डिफ़ॉल्ट रूप से चालू, gpsd अनुपलब्ध होने पर सामान्य रूप से कार्य करता रहता है
  • मल्टी-अडैप्टर - एक साथ कई ब्लूटूथ अडैप्टर के साथ स्कैन करें (Linux)
  • वर्बोज़/क्वाइट मोड - वर्बोज़ मोड अतिरिक्त विवरण दिखाता है (जैसे IRK मोड में गैर-मेल खाने वाले RPA); क्वाइट मोड प्रति-डिवाइस आउटपुट दबा कर केवल सारांश दिखाता है

आवश्यकताएँ

  • Python 3.9+
  • ब्लूटूथ हार्डवेयर
  • OS समर्थन: macOS, Linux, Windows
  • gpsd (वैकल्पिक) — GPS स्थान स्टैम्पिंग के लिए आवश्यक

gpsd स्थापित करना

GPS स्थान स्टैम्पिंग के लिए कनेक्टेड GPS रिसीवर के साथ चल रहे gpsd डेमन की आवश्यकता होती है। यदि gpsd नहीं चल रहा है, तो btrpa-scan GPS के बिना सामान्य रूप से कार्य करता रहता है।

gpsd काम कर रहा है यह सत्यापित करने के लिए:

root@kitploit:~
# जाँचें कि gpsd सुन रहा है
gpspipe -w -n 5
# या कर्सेस मॉनिटर का उपयोग करें
cgps

प्लेटफ़ॉर्म नोट्स

स्थापना

यह प्रोजेक्ट pyproject.toml (PEP 621) — आधुनिक Python पैकेजिंग मानक का उपयोग करता है। यह प्रोजेक्ट को पंजीकृत CLI कमांड के साथ एक इंस्टॉल करने योग्य पैकेज के रूप में परिभाषित करता है — .py फ़ाइलों को सीधे चलाने की आवश्यकता नहीं है।

त्वरित रन (बिना इंस्टॉल)

root@kitploit:~
uvx btrpa-scan --all

GitHub से चलाएँ (बिना इंस्टॉल)

root@kitploit:~
uvx --from git+https://github.com/hackingdave/btrpa-scan.git btrpa-scan --all

टूल के रूप में इंस्टॉल करें

root@kitploit:~
uv tool install btrpa-scan

या सीधे GitHub से:

root@kitploit:~
uv tool install git+https://github.com/hackingdave/btrpa-scan.git

pip के माध्यम से इंस्टॉल करें

root@kitploit:~
pip install btrpa-scan

GUI समर्थन के लिए (Flask-आधारित रडार इंटरफ़ेस):

root@kitploit:~
pip install btrpa-scan[gui]

स्रोत से

root@kitploit:~
git clone https://github.com/hackingdave/btrpa-scan.git
cd btrpa-scan
pip install .

उपयोग

root@kitploit:~
usage: btrpa-scan [-h] [-a] [--irk HEX] [--irk-file PATH] [-t TIMEOUT]
                     [--output {csv,json,jsonl}] [-o FILE] [--log FILE]
                     [-v | -q] [--min-rssi DBM] [--rssi-window N] [--active]
                     [--environment {free_space,indoor,outdoor}]
                     [--ref-rssi DBM] [--name-filter PATTERN]
                     [--alert-within METERS] [--tui] [--gui] [--gui-port PORT]
                     [--no-gps] [--adapters LIST] [mac]

BLE स्कैनर — सभी डिवाइस खोजें या किसी विशेष की खोज करें

positional arguments:
  mac                   खोजने के लिए लक्षित MAC एड्रेस (सभी स्कैन करने के लिए छोड़ दें)

optional arguments:
  -h, --help            यह सहायता संदेश दिखाएँ और बाहर निकलें
  -a, --all             सभी प्रसारण करने वाले डिवाइसों के लिए स्कैन करें
  --irk HEX             इस आइडेंटिटी रिज़ॉल्विंग की का उपयोग करके RPA रिज़ॉल्व करें (32 हेक्स वर्ण)
  --irk-file PATH       फ़ाइल से IRK पढ़ें (प्रति पंक्ति एक, हेक्स प्रारूप)
  -t, --timeout TIMEOUT स्कैन टाइमआउट सेकंड में (डिफ़ॉल्ट: 30, या --irk के लिए अनंत)
  --output {csv,json,jsonl}
                        स्कैन के अंत में लिखा जाने वाला बैच आउटपुट प्रारूप
  -o, --output-file FILE
                        आउटपुट फ़ाइल पथ (डिफ़ॉल्ट: btrpa-scan-results.<format>;
                        stdout के लिए - उपयोग करें)
  --log FILE            डिटेक्शन को रीयल टाइम में CSV फ़ाइल में स्ट्रीम करें
  -v, --verbose         वर्बोज़ मोड — अतिरिक्त विवरण दिखाएँ
  -q, --quiet           क्वाइट मोड — प्रति-डिवाइस आउटपुट दबाएँ, केवल सारांश दिखाएँ
  --min-rssi DBM        न्यूनतम RSSI थ्रेशोल्ड (जैसे -70) — कमज़ोर सिग्नलों को अनदेखा करें
  --rssi-window N       औसत के लिए RSSI स्लाइडिंग विंडो आकार (डिफ़ॉल्ट: 1 = कोई औसत नहीं)
  --active              सक्रिय स्कैनिंग का उपयोग करें (अतिरिक्त डेटा के लिए SCAN_REQ भेजता है)
  --environment {free_space,indoor,outdoor}
                        दूरी अनुमान पाथ-लॉस मॉडल (डिफ़ॉल्ट: free_space)
  --ref-rssi DBM        दूरी अनुमान के लिए 1 मीटर पर कैलिब्रेटेड RSSI
  --name-filter PATTERN नाम द्वारा डिवाइस फ़िल्टर करें (केस-असंवेदनशील सबस्ट्रिंग मिलान)
  --alert-within METERS निकटता अलर्ट जब डिवाइस इस दूरी के भीतर हो
  --tui                 स्क्रॉलिंग आउटपुट के बजाय लाइव-अपडेट होने वाली टर्मिनल तालिका
  --gui                 ब्राउज़र में वेब-आधारित रडार इंटरफ़ेस लॉन्च करें
  --gui-port PORT       GUI वेब सर्वर के लिए पोर्ट (डिफ़ॉल्ट: 5000)
  --no-gps              GPS स्थान स्टैम्पिंग अक्षम करें (GPS डिफ़ॉल्ट रूप से gpsd के माध्यम से चालू है)
  --adapters LIST       अल्पविराम-पृथक ब्लूटूथ अडैप्टर नाम (जैसे hci0,hci1)

मोड 1: सभी डिवाइस खोजें

सभी प्रसारण करने वाले BLE डिवाइसों के लिए स्कैन करें (डिफ़ॉल्ट 30-सेकंड टाइमआउट):

root@kitploit:~
btrpa-scan --all

कस्टम टाइमआउट के साथ:

root@kitploit:~
btrpa-scan --all -t 60

मोड 2: लक्षित खोज

MAC एड्रेस द्वारा किसी विशेष डिवाइस को खोजें:

root@kitploit:~
btrpa-scan AA:BB:CC:DD:EE:FF

मोड 3: IRK रिज़ॉल्यूशन

आइडेंटिटी रिज़ॉल्विंग की का उपयोग करके रिज़ॉल्वेबल प्राइवेट एड्रेस रिज़ॉल्व करें। यह मोड डिफ़ॉल्ट रूप से अनिश्चित काल तक चलता है जब तक Ctrl+C से रोका न जाए:

root@kitploit:~
btrpa-scan --irk 0123456789ABCDEF0123456789ABCDEF

IRK कई प्रारूपों में प्रदान की जा सकती है:

प्रारूपउदाहरण
सादा हेक्स0123456789ABCDEF0123456789ABCDEF
कोलन-पृथक01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF

फ़ाइल से IRK

फ़ाइल से एक या अधिक IRK लोड करें। प्रत्येक पंक्ति में किसी भी समर्थित हेक्स प्रारूप में एक IRK होनी चाहिए। # से शुरू होने वाली पंक्तियाँ टिप्पणियाँ मानी जाती हैं:

root@kitploit:~
btrpa-scan --irk-file keys.txt

उदाहरण keys.txt:

root@kitploit:~
# ऐलिस का फ़ोन
0123456789ABCDEF0123456789ABCDEF
# बॉब की घड़ी
FEDCBA9876543210FEDCBA9876543210

जब कई IRK लोड की जाती हैं, तो प्रत्येक पता लगाया गया RPA सभी कीज़ के विरुद्ध जाँचा जाता है। सारांश सभी कीज़ में कुल मिलान दिखाता है।

पर्यावरण चर से IRK

कमांड लाइन पर की पास करने से बचने के लिए BTRPA_IRK पर्यावरण चर सेट करें:

root@kitploit:~
export BTRPA_IRK=0123456789ABCDEF0123456789ABCDEF
btrpa-scan

प्राथमिकता: --irk > --irk-file > BTRPA_IRK

RSSI फ़िल्टरिंग

केवल उन डिवाइसों को दिखाएँ जिनकी सिग्नल स्ट्रेंथ थ्रेशोल्ड से ऊपर है:

root@kitploit:~
btrpa-scan --all --min-rssi -70

RSSI औसत

BLE RSSI स्वाभाविक रूप से शोर-युक्त होता है। अधिक स्थिर दूरी अनुमानों और स्पूरियस कमज़ोर डिटेक्शनों को फ़िल्टर करने के लिए स्लाइडिंग विंडो औसत का उपयोग करें:

root@kitploit:~
btrpa-scan --all --rssi-window 5

जब विंडोइंग सक्रिय होती है, तो डिस्प्ले कच्चा और औसत RSSI दोनों दिखाता है (जैसे RSSI: -65 dBm (avg: -62 dBm over 5 readings)), और दूरी अनुमान औसत मान का उपयोग करता है। --min-rssi फ़िल्टर भी औसत RSSI पर लागू होता है, जिससे एक अकेला शोर स्पाइक किसी डिवाइस को हटाने से रोकता है।

नाम फ़िल्टरिंग

केस-असंवेदनशील सबस्ट्रिंग मिलान का उपयोग करके नाम द्वारा डिवाइस फ़िल्टर करें:

root@kitploit:~
btrpa-scan --all --name-filter "AirPods"

केवल वे डिवाइस दिखाए जाएँगे जिनके विज्ञापित नाम में दिया गया पैटर्न शामिल है। नाम फ़िल्टर सक्रिय होने पर बिना नाम वाले डिवाइस बाहर कर दिए जाते हैं।

सक्रिय स्कैनिंग

पैसिव स्कैनिंग (डिफ़ॉल्ट) केवल विज्ञापन देखती है। सक्रिय स्कैनिंग SCAN_REQ भेजती है और SCAN_RSP प्राप्त करती है, जो अतिरिक्त सर्विस UUID और डिवाइस नाम प्रकट कर सकती है:

root@kitploit:~
btrpa-scan --all --active

नोट: macOS पर, CoreBluetooth इस फ़्लैग की परवाह किए बिना हमेशा सक्रिय रूप से स्कैन करता है। Linux/BlueZ पर, सक्रिय स्कैनिंग के लिए root या CAP_NET_ADMIN की आवश्यकता हो सकती है।

पर्यावरण प्रीसेट

दूरी अनुमान एक पाथ-लॉस एक्सपोनेंट का उपयोग करता है जो पर्यावरण के अनुसार भिन्न होता है। डिफ़ॉल्ट (free_space, n=2.0) बिना किसी अवरोध के मानता है। इनडोर अधिक यथार्थवादी अनुमानों के लिए:

root@kitploit:~
btrpa-scan --all --environment indoor
प्रीसेटपाथ-लॉस एक्सपोनेंट (n)उपयोग केस
free_space2.0खुली हवा, दृष्टि रेखा

समान RSSI के लिए उच्च n मान बड़े दूरी अनुमान उत्पन्न करते हैं, जो दीवारों और बाधाओं से सिग्नल क्षीणन को दर्शाता है।

संदर्भ RSSI कैलिब्रेशन

डिफ़ॉल्ट रूप से btrpa-scan अनुभवजन्य रूप से मान्य 59 dB ऑफ़सेट (iBeacon मानक) का उपयोग करके विज्ञापित TX पावर से 1 मीटर पर अपेक्षित RSSI प्राप्त करता है। और भी बेहतर सटीकता के लिए आप अपने स्वयं के वातावरण में मापा गया कैलिब्रेटेड मान प्रदान कर सकते हैं:

  1. लक्षित डिवाइस को स्कैनर से ठीक 1 मीटर दूर रखें।
  2. एक छोटा स्कैन चलाएँ और औसत RSSI नोट करें।
  3. वह मान --ref-rssi के साथ पास करें:
root@kitploit:~
btrpa-scan --all --ref-rssi -55

जब --ref-rssi सेट होता है, तो TX पावर को पूरी तरह से अनदेखा किया जाता है। यह उन डिवाइसों के लिए भी दूरी अनुमान सक्षम करता है जो TX पावर का विज्ञापन नहीं करते।

निकटता अलर्ट

जब कोई डिवाइस किसी दी गई दूरी के भीतर होने का अनुमान लगाया जाता है तो श्रव्य घंटी और दृश्य अलर्ट ट्रिगर करें। इसके लिए लक्षित डिवाइस को TX पावर का विज्ञापन करना आवश्यक है:

root@kitploit:~
btrpa-scan AA:BB:CC:DD:EE:FF --alert-within 5.0

IRK रिज़ॉल्यूशन सहित सभी मोड में काम करता है:

root@kitploit:~
btrpa-scan --irk <key> --alert-within 3.0

लाइव TUI

स्क्रॉलिंग आउटपुट को सिग्नल स्ट्रेंथ द्वारा क्रमबद्ध लाइव-अपडेट होने वाली टर्मिनल तालिका से बदलें:

root@kitploit:~
btrpa-scan --all --tui

TUI सभी पता लगाए गए डिवाइसों को एड्रेस, नाम, RSSI, औसत RSSI, अनुमानित दूरी, डिटेक्शन गणना और अंतिम-देखे जाने के समय के साथ एक संक्षिप्त तालिका में दिखाता है। रिज़ॉल्व किए गए IRK मिलान बोल्ड में दिखाए जाते हैं, और --alert-within थ्रेशोल्ड के भीतर के डिवाइस हाइलाइट किए जाते हैं।

अन्य फ़्लैग के साथ संयोजित करें:

root@kitploit:~
btrpa-scan --irk <key> --tui --rssi-window 5 --environment indoor --alert-within 5.0

वेब GUI

एनिमेटेड स्वीप, रीयल-टाइम डिवाइस ट्रैकिंग और GPS मानचित्र के साथ ब्राउज़र-आधारित रडार इंटरफ़ेस लॉन्च करें:

root@kitploit:~
btrpa-scan --all --gui

GUI की विशेषताएँ:

  • रडार डिस्प्ले — संकेंद्रित दूरी रिंग (1m, 5m, 10m, 20m) के साथ एनिमेटेड स्वीप लाइन। डिवाइस अनुमानित दूरी के आधार पर रंग-कोडित बिंदुओं के रूप में दिखाई देते हैं (हरा = निकट, पीला = मध्यम, लाल = दूर)। मैट्रिक्स डेटा रेन पृष्ठभूमि और घोस्ट MAC फ़्लिकर प्रभावों के साथ पूर्ण-ऊंचाई लेआउट
  • डिवाइस सूची — सभी पता लगाए गए डिवाइसों की सूची वाला दायाँ पैनल, सिग्नल स्ट्रेंथ द्वारा रंग-कोडित। ट्रैकिंग के लिए किसी भी डिवाइस पर क्लिक करके उसे पिन करें
  • पिन किए गए डिवाइस — बायाँ पैनल लाइव RSSI और दूरी अपडेट के साथ पिन किए गए MAC एड्रेस दिखाता है। एक साथ कई डिवाइस पिन करें; अनपिन करने के लिए × पर क्लिक करें
  • GPS मानचित्र — स्कैनर स्थिति और डिवाइस स्थान दिखाने वाला OpenStreetMap टाइल्स वाला Leaflet.js मानचित्र। यदि GPS उपलब्ध नहीं है तो स्वचालित रूप से छिप जाता है
  • होवर टूलटिप्स — पूर्ण डिवाइस विवरण देखने के लिए किसी भी डिवाइस (रडार डॉट, सूची प्रविष्टि, या पिन की गई प्रविष्टि) पर होवर करें (एड्रेस, नाम, RSSI, TX पावर, दूरी, GPS, निर्माता डेटा, सर्विसेज़)
  • डार्क थीम — फ़ील्ड कार्य के लिए डिज़ाइन किया गया मैट्रिक्स-हरा हैकर सौंदर्य

GUI मोड डिफ़ॉल्ट रूप से निरंतर स्कैन करता है (कोई 30-सेकंड टाइमआउट नहीं)। रोकने के लिए Ctrl+C दबाएँ। विशिष्ट स्कैन अवधि सेट करने के लिए -t का उपयोग करें:

root@kitploit:~
# इनडोर पाथ-लॉस मॉडल के साथ 60 सेकंड स्कैन करें
btrpa-scan --all --gui -t 60 --environment indoor

# कस्टम पोर्ट
btrpa-scan --all --gui --gui-port 8080

# RSSI औसत और निकटता अलर्ट के साथ संयोजित करें
btrpa-scan --all --gui --rssi-window 5 --alert-within 5.0

नोट: --gui के लिए Flask और flask-socketio आवश्यक हैं (pip install btrpa-scan[gui])। --tui या --quiet के साथ संयोजित नहीं किया जा सकता।

रीयल-टाइम CSV लॉग

प्रत्येक डिटेक्शन को होते ही CSV फ़ाइल में स्ट्रीम करें (लंबे समय तक चलने वाले स्कैन के लिए उपयोगी जहाँ आप वृद्धिशील डेटा चाहते हैं):

root@kitploit:~
btrpa-scan --all --log scan.csv

इसे अलग बैच निर्यात के लिए --output के साथ संयोजित किया जा सकता है:

root@kitploit:~
btrpa-scan --all --log live.csv --output json -o results.json

बैच निर्यात

स्कैन के अंत में सभी परिणाम CSV, JSON या JSONL (JSON Lines) प्रारूप में निर्यात करें:

root@kitploit:~
btrpa-scan --all --output json -o results.json -t 30
btrpa-scan --all --output csv -t 30
btrpa-scan --all --output jsonl -o results.jsonl -t 30

JSONL प्रति पंक्ति एक JSON ऑब्जेक्ट लिखता है, जिससे jq के माध्यम से पाइप करना आसान हो जाता है:

root@kitploit:~
btrpa-scan --all --output jsonl -o results.jsonl -t 10
cat results.jsonl | jq .

पाइपिंग के लिए आउटपुट stdout पर लिखें:

root@kitploit:~
btrpa-scan --all --output json -o - -t 10 -q | jq .

मल्टी-अडैप्टर स्कैनिंग (Linux)

व्यापक कवरेज के लिए एक साथ कई ब्लूटूथ अडैप्टर के साथ स्कैन करें:

root@kitploit:~
btrpa-scan --all --adapters hci0,hci1

प्रत्येक अडैप्टर समान डिटेक्शन कॉलबैक साझा करते हुए अपना स्वयं का स्कैनर उदाहरण चलाता है। सभी डिटेक्शन एक ही आउटपुट में विलीन हो जाते हैं।

GPS स्थान स्टैम्पिंग

GPS डिफ़ॉल्ट रूप से चालू है। प्रत्येक डिटेक्शन को gpsd से वर्तमान GPS निर्देशांक के साथ टैग किया जाता है। स्कैनर प्रति डिवाइस सर्वोत्तम GPS फ़िक्स भी ट्रैक करता है — सबसे मज़बूत RSSI वाले डिटेक्शन से निर्देशांक (सबसे निकट निकटता = सबसे सटीक स्थान)।

यदि gpsd नहीं चल रहा है, तो स्कैनर एक नोट प्रिंट करता है और GPS के बिना सामान्य रूप से कार्य करता रहता है:

root@kitploit:~
# gpsd चलने के साथ — डिटेक्शन में अक्षांश/देशांतर शामिल होते हैं
btrpa-scan --all --output json

# gpsd के बिना — ठीक काम करता है, GPS फ़ील्ड खाली हैं
btrpa-scan --all

# GPS स्पष्ट रूप से अक्षम करें (कनेक्शन प्रयास छोड़ देता है)
btrpa-scan --all --no-gps

GPS निर्देशांक इनमें दिखाई देते हैं:

  • कंसोल आउटपुट — प्रति डिवाइस "Best GPS" पंक्ति
  • TUI सेटिंग्स बार — वर्तमान फ़िक्स निर्देशांक
  • GUI — डिवाइस मार्कर और स्कैनर स्थिति के साथ इंटरैक्टिव मानचित्र पैनल
  • हेडर — GPS कनेक्शन स्थिति
  • सारांश तालिकाएँ — प्रति डिवाइस "Best GPS" स्तंभ
  • सभी निर्यात (CSV, JSON, JSONL, रीयल-टाइम लॉग) — latitude, longitude, gps_altitude फ़ील्ड

क्वाइट और वर्बोज़ मोड

क्वाइट मोड में चलाएँ (केवल सारांश, कोई प्रति-डिवाइस आउटपुट नहीं — --output या --log के साथ उपयोगी):

root@kitploit:~
btrpa-scan --all -q --output json -t 30

वर्बोज़ मोड में चलाएँ (IRK मोड में गैर-मेल खाने वाले RPA दिखाएँ):

root@kitploit:~
btrpa-scan --irk 0123456789ABCDEF0123456789ABCDEF -v

RPA रिज़ॉल्यूशन कैसे काम करता है

ब्लूटूथ लो एनर्जी डिवाइस ट्रैकिंग रोकने के लिए रिज़ॉल्वेबल प्राइवेट एड्रेस (RPA) का उपयोग करते हैं। RPA एक अस्थायी MAC एड्रेस होता है जो समय-समय पर बदलता रहता है, लेकिन डिवाइस की आइडेंटिटी रिज़ॉल्विंग की (IRK) रखने वाला कोई भी व्यक्ति इसे रिज़ॉल्व कर सकता है।

RPA में निम्न शामिल होते हैं:

  • prand (3 बाइट्स) - शीर्ष दो बिट 01 पर सेट एक यादृच्छिक मान
  • hash (3 बाइट्स) - AES-128-ECB(IRK, padding || prand) के रूप में परिकलित, 3 बाइट्स तक छोटा

btrpa-scan ब्लूटूथ कोर स्पेसिफिकेशन (Vol 3, Part H, Section 2.2.2) से ah() फ़ंक्शन लागू करता है ताकि इन एड्रेसों को रीयल टाइम में रिज़ॉल्व किया जा सके।

AES-ECB पर नोट: ah() फ़ंक्शन के लिए ECB मोड में AES का उपयोग ब्लूटूथ कोर स्पेसिफिकेशन द्वारा अनिवार्य है। चूँकि केवल एक 16-बाइट ब्लॉक कभी एन्क्रिप्ट होता है, ECB की ब्लॉकों में प्रसार की कमी अप्रासंगिक है — यह एक भेद्यता नहीं है।

सुरक्षा विचार

  • कमांड लाइन पर IRK: कमांड-लाइन तर्क ps के माध्यम से सिस्टम पर अन्य उपयोगकर्ताओं को दिखाई देते हैं। IRK को उजागर करने से बचने के लिए, फ़ाइल से पढ़ने हेतु --irk-file का उपयोग करें, या BTRPA_IRK पर्यावरण चर सेट करें। कंसोल आउटपुट IRK को डिफ़ॉल्ट रूप से मास्क करता है (केवल पहले और अंतिम 4 हेक्स वर्ण दिखाता है)।
  • निर्यात में GPS निर्देशांक: सभी निर्यात प्रारूप (CSV, JSON, JSONL) और कंसोल आउटपुट में GPS निर्देशांक शामिल होते हैं जब उपलब्ध हों। यदि स्कैन परिणाम साझा कर रहे हैं, तो ध्यान रखें कि आपका स्थान प्रकट हो सकता है। GPS को पूरी तरह से अक्षम करने के लिए --no-gps का उपयोग करें।
  • आउटपुट फ़ाइल पथ: --output-file और --log विकल्प निर्दिष्ट पथ पर लिखते हैं। सुनिश्चित करें कि गंतव्य के पास आपके उपयोग के मामले के लिए उपयुक्त अनुमतियाँ हैं।

परीक्षण चलाना

root@kitploit:~
pip install pytest
python -m pytest test_btrpa_scan.py -v

उदाहरण आउटपुट

root@kitploit:~
Mode: DISCOVER ALL - showing every broadcasting device
Scanning: passive
GPS: connected (37.774929, -122.419418)
Timeout: 30s  |  Press Ctrl+C to stop
------------------------------------------------------------

============================================================
  DEVICE #1  -  seen 1x
============================================================
  Address      : AA:BB:CC:DD:EE:FF
  Name         : MyDevice
  RSSI         : -45 dBm
  TX Power     : -59 dBm
  Est. Distance: ~0.4 m
  Manufacturer : 0x004C -> 0215abcdef
  Best GPS     : 37.774929, -122.419418
  Timestamp    : 14:32:07
============================================================

------------------------------------------------------------
Scan complete - 30.0s elapsed
  Total detections : 142
  Unique devices   : 12
  Results written to btrpa-scan-results.json

स्कैन रोकना

स्कैन को सुचारू रूप से रोकने और सारांश आँकड़े प्रदर्शित करने के लिए किसी भी समय Ctrl+C दबाएँ।

टूल डाउनलोड करें
प्लेटफ़ॉर्मइंस्टॉलस्टार्ट
macOSbrew install gpsdgpsd -n /dev/tty.usbserial-*
Debian/Ubuntusudo apt install gpsd gpsd-clientssudo systemctl start gpsd
Fedora/RHELsudo dnf install gpsd gpsd-clientssudo systemctl start gpsd
Archsudo pacman -S gpsdsudo systemctl start gpsd
WindowsWSL या MSYS2 के माध्यम से gpsd का उपयोग करेंऊपर WSL निर्देश देखें
प्लेटफ़ॉर्मनोट्स
macOSCoreBluetooth का उपयोग करता है। IRK मोड UUID के बजाय वास्तविक ब्लूटूथ एड्रेस प्राप्त करने के लिए एक अप्रमाणित API का लाभ उठाता है। --active का कोई प्रभाव नहीं होता — CoreBluetooth हमेशा सक्रिय रूप से स्कैन करता है।
Linuxस्कैनिंग के लिए root या CAP_NET_ADMIN क्षमता की आवश्यकता हो सकती है।
Windowsनेटिव WinRT ब्लूटूथ API — वास्तविक MAC एड्रेस मूल रूप से उपलब्ध होते हैं। TUI के लिए pip install windows-curses आवश्यक है।
डैश-पृथक01-23-45-67-89-AB-CD-EF-01-23-45-67-89-AB-CD-EF
0x-उपसर्गित0x0123456789ABCDEF0123456789ABCDEF
outdoor2.2पार्क, पार्किंग स्थल
indoor3.0कार्यालय, घर, इमारतें