
किसी भी ESP32 बोर्ड जितना सस्ता सक्रिय ब्लूटूथ BR/EDR स्निफ़र/इंजेक्टर। Scapy के साथ काम करता है ;-)
ब्लूटूथ क्लासिक के लिए सरल "मॉनिटर मोड"। ESP32 BT कनेक्शनों में BR/EDR बेसबैंड पैकेट स्निफ़ या इंजेक्ट करें।
यह एक रिवर्स इंजीनियर्ड सक्रिय BR/EDR स्निफर और ESP32 पैचिंग फ्रेमवर्क है, जिसका उपयोग ESP32 कंट्रोलर और रिमोट टारगेट के बीच ब्लूटूथ (BT) BR/EDR इंटरैक्शन का पता लगाने के लिए किया जा सकता है।
निष्क्रिय स्निफरों से अलग, जो BT नेटवर्क (piconet) के साथ इंटरैक्ट नहीं करते, सक्रिय स्निफर स्वयं को रिमोट BT डिवाइस (BR/EDR टारगेट) से जोड़ता है और BT होस्ट स्टैक जैसे blue-kitchen द्वारा निर्देशित होते हुए बेसबैंड परत तक BT प्रोटोकॉल का परीक्षण करने की अनुमति देता है। BrakTooth स्निफर सस्ते बोर्डों जैसे ESP32-DOIT ($4) या ESP32-DevKitC ($10) का समर्थन करता है।
git clone https://github.com/Matheus-Garbelini/esp32_bluetooth_classic_sniffer
cd esp32_bluetooth_classic_sniffer
./requirements.sh # (sudo required) Installs latest wireshark and standalone python3 runtime
./build.sh # Build BT Host programs and Wireshark h4bcm dissector
BrakTooth स्निफर का उपयोग शुरू करने से पहले, आपको अपने ESP32 बोर्ड पर एक कस्टम फर्मवेयर अपलोड करना होगा:
sudo chown $USER:$USER /dev/ttyUSB0 # Give user permission to serial port to avoid using sudo
./firmware.py flash /dev/ttyUSB0 # Change ttyUSB0 to match your port name
# Note: ESP-WROVER-KIT or ESP-ETHERNET-KIT uses /dev/ttyUSB1 instead as the first port is for the FTDI JTAG circuit.
महत्वपूर्ण: कुछ बोर्डों पर ESP32 को फ्लैशिंग मोड में ठीक से डालने के लिए आपको BOOT बटन दबाए रखना आवश्यक है।
Usage: BTSnifferBREDR.py [OPTIONS]
Options:
--port TEXT Serial port name (/dev/ttyUSBx for Linux)
--host TEXT BDAddress of local host (default: E0:D4:E8:19:C7:68)
--target TEXT BDAddress of remote target (ex: a8:96:75:25:c2:ac)
--live-wireshark Opens Wireshark live session
--live-terminal Show a summary of each packet on terminal
--bridge-only Starts the HCI bridge without connecting any BT Host stack
--help Show this message and exit.
आप स्निफर को मास्टर या स्लेव भूमिका में से किसी एक में शुरू कर सकते हैं। यदि आप --target तर्क जोड़ते हैं, तो स्निफर आपके रिमोट टारगेट से कनेक्शन का प्रयास करेगा। अन्यथा, यह किसी के कनेक्ट होने की प्रतीक्षा करेगा।
अंत में, --bridge-only केवल HCI स्यूडो टर्मिनल (/dev/pts/x) बनाता है ताकि ESP32 एक मानक HCI BT नियंत्रक के रूप में काम कर सके। आप इस सुविधा का उपयोग किसी भी अन्य BT होस्ट स्टैक को ESP32 से जोड़ने के लिए कर सकते हैं।
./BTSnifferBREDR.py --port=/dev/ttyUSB0 --target=E0:D4:E8:19:C7:69 --live-terminal --live-wireshark
./BTSnifferBREDR.py --port=/dev/ttyUSB0 --live-terminal --live-wireshark
./BTSnifferBREDR.py --port=/dev/ttyUSB0 --bridge-only --live-terminal --live-wireshark
स्रोत कोड को सीधे ESP32 फर्मवेयर पैचिंग फ्रेमवर्क रिपॉजिटरी से निम्नानुसार बनाया जा सकता है:
cd firmware
./build_from_source.sh # clone submodule & build firmware with platformio environment 'sniffer-serial'
./firmware.py flash <serial port> # flash built firmware to ESP32 via serial port
सफल बिल्ड के बाद ESP32 फर्मवेयर बाइनरी (firmware.bin, bootloader.bin, partitions.bin) को firmware फ़ोल्डर में कॉपी किया जाता है। फिर, आप चरण 1.B) में वर्णित अनुसार फर्मवेयर फ्लैश करने के लिए आगे बढ़ सकते हैं।
चूंकि BrakTooth स्निफर कनेक्टिविटी को निर्देशित करने के लिए BT होस्ट स्टैक का उपयोग करता है, निम्नलिखित संशोधित BlueKitchen उदाहरण उपयोग किए जाते हैं:
आप BlueKitchen के आधिकारिक दस्तावेज़ीकरण का पालन करके वर्तमान प्रोग्रामों में BT प्रोफाइल संशोधित या जोड़ सकते हैं। ध्यान दें कि host_stack/bluekitchen/example/ फ़ोल्डर में पहले से ही कुछ प्रोफाइल उदाहरण मौजूद हैं।
कस्टम ESP32 BR/EDR स्निफर/इंजेक्टर फर्मवेयर होस्ट सिस्टम के साथ USB सीरियल पोर्ट के माध्यम से संचार करता है और कस्टम कमांड या HCI कमांड प्राप्त करने की प्रतीक्षा करता है। स्टार्टअप पर, BrakTooth कस्टम प्रोटोकॉल को ESP32 से भेजे या प्राप्त मानक HCI कमांड से अलग करने के लिए एक HCI ब्रिज बनाया जाता है। एक बार ESP32 फर्मवेयर पर "RX/TX स्निफर" सुविधा सक्षम हो जाने पर, बेसबैंड पैकेट सीधे BTSnifferBREDR.py स्क्रिप्ट पर अग्रेषित किए जाते हैं, जो कस्टम प्रोटोकॉल पर स्निफ किए गए पैकेट को डीकोड करती है और उन्हें Scapy के माध्यम से प्रिंट करती है और/या लाइव कैप्चर के माध्यम से Wireshark में तथा logs फ़ोल्डर में डंप करती है।
बेसबैंड पैकेट का विच्छेदन InternalBlue Broadcom Wireshark डिसेक्टर का विस्तार करता है। विशेष रूप से, विच्छेदन ने h4bcm Wireshark प्लगइन को कुछ और BT परतों और हमारे कस्टम ESP32 मेटाडेटा हेडर का समर्थन करने के लिए विस्तारित किया। धन्यवाद @jiska2342।
निम्नलिखित सभी ओपन-सोर्स परियोजनाओं के लिए धन्यवाद: