
متشمم/حاقن Bluetooth BR/EDR نشِط بأقل تكلفة يمكن أن تقدّمها أي لوحة ESP32. يعمل مع Scapy ;-)
وضع "المراقبة" بسيط لبلوتوث الكلاسيكي. اعترض أو احقن حزم النطاق الأساسي BR/EDR في اتصالات بلوتوث ESP32.
هذا متشمم BR/EDR نشط مُهندَس عكسيًا وإطار تصحيح ESP32، ويمكن استخدامه لاستكشاف تفاعل بلوتوث (BT) BR/EDR بين وحدة تحكم ESP32 والهدف البعيد.
بخلاف المتشممات السلبية، التي لا تتفاعل مع شبكة البلوتوث (piconet)، يقوم المتشمم النشط بتوصيل نفسه بجهاز البلوتوث البعيد (هدف BR/EDR) ويتيح اختبار بروتوكول البلوتوث وصولًا إلى طبقة النطاق الأساسي (Baseband) بينما يتم توجيهه بواسطة حزمة مضيف بلوتوث مثل blue-kitchen.
يدعم متشمم 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.
مهم: تتطلب بعض اللوحات الضغط باستمرار على زر BOOT لوضع ESP32 بشكل صحيح في وضع الوميض.
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 قياسية. يمكنك استخدام هذه الميزة لتوصيل أي حزمة مضيف بلوتوث أخرى بـ 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 يستخدم حزمة مضيف بلوتوث لتوجيه الاتصال، يتم استخدام أمثلة BlueKitchen المعدلة التالية:
يمكنك تعديل أو إضافة بروفيلات بلوتوث إلى البرامج الحالية باتباع التوثيق الرسمي لـ BlueKitchen. لاحظ أن مجلد host_stack/bluekitchen/example/ يحتوي بالفعل على بعض الأمثلة للبروفيلات.
يتواصل البرنامج الثابت لمتشمم/حاقن ESP32 BR/EDR المخصص مع النظام المضيف عبر منفذ تسلسلي USB وينتظر استقبال أوامر مخصصة أو أوامر HCI. عند بدء التشغيل، يتم إنشاء جسر HCI لفصل بروتوكول BrakTooth المخصص عن أوامر HCI القياسية المُرسلة أو المستلمة من ESP32. بمجرد تمكين ميزة "RX/TX Sniffer" في البرنامج الثابت لـ ESP32، يتم إعادة توجيه حزم النطاق الأساسي مباشرةً إلى سكربت BTSnifferBREDR.py الذي يقوم ببساطة بفك ترميز الحزم المُلتقطة عبر البروتوكول المخصص وطباعتها عبر Scapy و/أو تفريغها إلى Wireshark عبر الالتقاط المباشر وإلى مجلد logs.
يقوم تحليل حزم النطاق الأساسي بتوسيع مفكك InternalBlue Broadcom لـ Wireshark. على وجه التحديد، تم توسيع إضافة h4bcm الخاصة بـ Wireshark لدعم المزيد من طبقات البلوتوث وترويسة بيانات ESP32 المخصصة لدينا. شكرًا @jiska2342.
شكرًا لجميع المشاريع مفتوحة المصدر التالية: