
أدوات بحث لثغرات MouseJack في الأجهزة اللاسلكية nRF24L01، بما في ذلك اكتشاف الأجهزة، والتقاط الحزم، ورسم خرائط الشبكة، ووميض البرامج الثابتة لاختبار الأمان.
للحصول على معلومات حول ثغرات MouseJack، يرجى زيارة mousejack.com.
تثبيت التبعيات على Ubuntu:
sudo apt-get install sdcc binutils python python-pip
sudo pip install -U pip
sudo pip install -U -I pyusb
sudo pip install -U platformio
تم اختبار الأجهزة التالية ومن المعروف أنها تعمل.
git submodule init
git submodule update
cd nrf-research-firmware
make
تأتي شرائح nRF24LU1+ مع مُحمّل إقلاع مبرمج في المصنع يشغل أعلى 2KB من ذاكرة الفلاش. يدعم برنامج CrazyRadio الثابت وبرنامج RFStorm البحثي الثابت أوامر USB للدخول إلى مُحمّل إقلاع Nordic.
يمكن برمجة الدونجل ولوحات التطوير عبر USB إذا كانت تعمل بأحد البرامج الثابتة التالية:
لوميض البرنامج الثابت عبر USB:
cd nrf-research-firmware
sudo make install
معظم دونجل Unifying الشائعة مبنية على nRF24LU1+، لكن بعضها يستخدم شرائح من Texas Instruments. هذا البرنامج الثابت مدعوم فقط على إصدارات nRF24LU1+، والتي تحمل رقم الطراز C-U0007. سيكتشف سكربت الوميض تلقائيًا نوع الدونجل المتصل، وسيحاول فقط وميض إصدارات nRF24LU1+.
لوميض البرنامج الثابت عبر USB على دونجل Logitech Unifying:
cd nrf-research-firmware
sudo make logitech_install
قم بتنزيل واستخراج صورة برنامج Logitech الثابت، والتي ستُسمى RQR_012_005_00028.hex أو ما شابه ذلك. ثم قم بتشغيل الأمر التالي لوميض برنامج Logitech الثابت على الدونجل:
cd nrf-research-firmware
sudo ./prog/usb-flasher/logitech-usb-restore.py [path-to-firmware.hex]
إذا كان الدونجل أو لوحة التطوير لديك معطلة، يمكنك بدلاً من ذلك برمجتها عبر SPI باستخدام Teensy.
تم اختبار هذا فقط مع Teensy 3.1/3.2، لكن من المرجح أن يعمل مع إصدارات Arduino الأخرى أيضًا.
cd nrf-research-firmware/prog
platformio run --project-dir teensy-flasher --target upload
| Teensy | CrazyRadio PA | Sparkfun nRF24LU1+ Breakout |
|---|---|---|
| GND | 9 | GND |
| 8 | 3 | RESET |
| 9 | 2 | PROG |
| 10 | 10 | P0.3 |
| 11 | 6 | P0.1 |
| 12 | 8 | P0.2 |
| 13 | 4 | P0.0 |
| 3.3V | 5 | VIN |
cd nrf-research-firmware
sudo make spi_install
أداة اكتشاف الأجهزة بوضع شبه-الاستقبال العشوائي، والتي تمسح قائمة من القنوات وتطبع حزم Enhanced Shockburst المفكوكة.
usage: ./nrf24-scanner.py [-h] [-c N [N ...]] [-v] [-l] [-p PREFIX] [-d DWELL]
optional arguments:
-h, --help show this help message and exit
-c N [N ...], --channels N [N ...] RF channels
-v, --verbose Enable verbose output
-l, --lna Enable the LNA (for CrazyRadio PA dongles)
-p PREFIX, --prefix PREFIX Promiscuous mode address prefix
-d DWELL, --dwell DWELL Dwell time per channel, in milliseconds
امسح الأجهزة على القنوات 1-5
./nrf24-scanner.py -c {1..5}
امسح الأجهزة بعنوان يبدأ بـ 0xA9 على جميع القنوات
cd nrf-research-firmware
./nrf24-scanner.py -p A9
متتبع يتبع الأجهزة، والذي يتبع جهاز nRF24 محددًا أثناء تنقله بين القنوات، ويطبع حزم Enhanced Shockburst المفكوكة من الجهاز.
usage: ./nrf24-sniffer.py [-h] [-c N [N ...]] [-v] [-l] -a ADDRESS [-t TIMEOUT] [-k ACK_TIMEOUT] [-r RETRIES]
optional arguments:
-h, --help show this help message and exit
-c N [N ...], --channels N [N ...] RF channels
-v, --verbose Enable verbose output
-l, --lna Enable the LNA (for CrazyRadio PA dongles)
-a ADDRESS, --address ADDRESS Address to sniff, following as it changes channels
-t TIMEOUT, --timeout TIMEOUT Channel timeout, in milliseconds
-k ACK_TIMEOUT, --ack_timeout ACK_TIMEOUT ACK timeout in microseconds, accepts [250,4000], step 250
-r RETRIES, --retries RETRIES Auto retry limit, accepts [0,15]
تتبع الحزم من العنوان 61:49:66:82:03 على جميع القنوات
cd nrf-research-firmware
./nrf24-sniffer.py -a 61:49:66:82:03
ماسح الشبكة النجمية، والذي يحاول اكتشاف العناوين النشطة في شبكة نجمية عن طريق تغيير البايت الأخير في العنوان المعطى، وإرسال ping إلى كل من 256 عنوانًا محتملاً على كل قناة في قائمة القنوات.
usage: ./nrf24-network-mapper.py [-h] [-c N [N ...]] [-v] [-l] -a ADDRESS [-p PASSES] [-k ACK_TIMEOUT] [-r RETRIES]
optional arguments:
-h, --help show this help message and exit
-c N [N ...], --channels N [N ...] RF channels
-v, --verbose Enable verbose output
-l, --lna Enable the LNA (for CrazyRadio PA dongles)
-a ADDRESS, --address ADDRESS Known address
-p PASSES, --passes PASSES Number of passes (default 2)
-k ACK_TIMEOUT, --ack_timeout ACK_TIMEOUT ACK timeout in microseconds, accepts [250,4000], step 250
-r RETRIES, --retries RETRIES Auto retry limit, accepts [0,15]
ارسم خريطة الشبكة النجمية التي ينتمي إليها العنوان 61:49:66:82:03
cd nrf-research-firmware
./nrf24-network-mapper.py -a 61:49:66:82:03
تتضمن شرائح nRF24LU1+ آلية اختبار لإرسال نغمة مستمرة، يمكن التحقق من ترددها إذا كان لديك وصول إلى SDR. هناك احتمال أن تتسبب انحرافات التردد بين الأجهزة في سلوك غير متوقع. على سبيل المثال، إحدى لوحات تطوير SparkFun التي تم اختبارها كان لديها انحراف تردد يبلغ ~300kHz، مما تسبب في استقبالها للحزم على قناتين متجاورتين.
سيؤدي هذا السكربت إلى جعل جهاز الإرسال والاستقبال يرسل نغمة على أول قناة يتم تمريرها.
usage: ./nrf24-continuous-tone-test.py [-h] [-c N [N ...]] [-v] [-l]
optional arguments:
-h, --help show this help message and exit
-c N [N ...], --channels N [N ...] RF channels
-v, --verbose Enable verbose output
-l, --lna Enable the LNA (for CrazyRadio PA dongles)
أرسل نغمة مستمرة عند 2405MHz
cd nrf-research-firmware
./nrf24-continuous-tone-test.py -c 5