
माउसजैक (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 अनुसंधान फर्मवेयर Nordic बूटलोडर में प्रवेश करने के लिए USB कमांड का समर्थन करते हैं।
डोंगल और ब्रेकआउट बोर्ड को 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]
यदि आपका डोंगल या ब्रेकआउट बोर्ड ब्रिक हो गया है, तो आप वैकल्पिक रूप से Teensy का उपयोग करके इसे SPI के माध्यम से प्रोग्राम कर सकते हैं।
यह केवल 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
स्टार नेटवर्क मैपर, जो दिए गए पते में अंतिम बाइट बदलकर और चैनल सूची में प्रत्येक चैनल पर 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