इस गाइड में Wireshark कॉन्फ़िगर करने और Pyspinel को Thread नेटवर्क से स्निफ़ पैकेट चलाने का तरीका बताया गया है.
पैकेट स्निफ़िंग के लिए, Wiresha extcap प्लग इन का इस्तेमाल करने के लिए, extcap का इस्तेमाल करके पैकेट स्निफ़िंग देखें.
स्निफ़र एनवायरमेंट सेट अप करना
शुरू करने से पहले, यह तरीका अपनाएं:
- पैकेट स्निफिंग की शर्तों की समीक्षा करें.
- Wire सुझावों को इंस्टॉल और कॉन्फ़िगर करें.
- Pyspinel और डिपेंडेंसी को बिना किसी एक्सटेंशन के इंस्टॉल करें.
स्नाइफ़र बनाएं
ot-rcp
बाइनरी आउटपुट का इस्तेमाल करके, एनसीपी डिवाइस बनाएं और उसे स्निफ़र के तौर पर फ़्लैश करें.
नॉर्डिक nRF52840
Nordic nRF52840 उदाहरण को स्निफ़र के तौर पर इस्तेमाल करने के लिए, openthread/ot-nrf528xx
को क्लोन करें और बिल्ड एनवायरमेंट को सेट अप करें:
git clone https://github.com/openthread/ot-nrf528xx --recursive
./script/bootstrap
बॉड रेट को 460800 के तौर पर सेट करें. src/nrf52840/transport-config.h
में #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200
लाइन
ढूंढें और उसे #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800
से बदलें.
बाइनरी बनाएं:
./script/build nrf52840 UART_trans
ot-rcp
बाइनरी आउटपुट को हेक्स में बदलें:
arm-none-eabi-objcopy -O ihex build/bin/ot-rcp ot-rcp.hex
ot-rcp.hex
फ़ाइल को nRF52840 बोर्ड पर फ़्लैश करें जैसा कि
nRF52840 में फ़्लैश करें.
nRF52840 पर मास स्टोरेज डिवाइस (एमएसडी) को बंद करें, ताकि डीबग पोर्ट का इस्तेमाल करते समय डेटा के खराब होने या खराब होने से बचा जा सके:
expect <<EOF
spawn JLinkExe
expect "J-Link>"
send "msddisable\n"
expect "Probe configured successfully."
exit
EOF
spawn JLinkExe SEGGER J-Link Commander V6.42b (Compiled Feb 5 2019 17:35:31) DLL version V6.42b, compiled Feb 5 2019 17:35:20 Connecting to J-Link via USB...O.K. Firmware: J-Link OB-SAM3U128-V2-NordicSemi compiled Jan 7 2019 14:07:15 Hardware version: V1.00 S/N: 683411111 VTref=3.300V Type "connect" to establish a target connection, '?' for help J-Link>msddisable Probe configured successfully.
थ्रेड नेटवर्क प्रॉपर्टी
आगे बढ़ने से पहले, उस थ्रेड नेटवर्क के लिए ये प्रॉपर्टी हासिल करें जिसे आपको स्निफ़ करना है. आपको उनकी ज़रूरत Wire सुझावों को कॉन्फ़िगर करने और Pyspinel स्निफ़र को चलाने के लिए होगी.
मेश लोकल प्रीफ़िक्स
टारगेट थ्रेड नेटवर्क के किसी डिवाइस से, मेश लोकल प्रीफ़िक्स शुरू करने के लिए:
OpenThread सीएलआई का इस्तेमाल करना:
dataset active
Mesh Local Prefix: fd33:3333:3344:0/64एनसीपी के साथ
wpanctl
का इस्तेमाल करना:wpanctl getprop IPv6:MeshLocalPrefix
IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"OTBR वेब GUI का इस्तेमाल करके, स्थिति चुनें. मेश लोकल प्रीफ़िक्स,
wpanctl
की तरह IPv6:MashLocalPrefix के तौर पर सूची में मौजूद है.
चैनल
टारगेट थ्रेड नेटवर्क में, किसी डिवाइस से चैनल पाने के लिए:
OpenThread सीएलआई का इस्तेमाल करना:
channel
15एनसीपी के साथ
wpanctl
का इस्तेमाल करना:wpanctl getprop NCP:Channel
NCP:Channel = 15OTBR वेब GUI का इस्तेमाल करके, स्थिति चुनें. चैनल को
wpanctl
की तरह NCP:Channel के तौर पर सूची में शामिल किया गया है.
नेटवर्क कुंजी
वायर कैप्चर, कैप्चर की जाने वाली थ्रेड को डिक्रिप्ट करने के लिए, थ्रेड नेटवर्क कुंजी का इस्तेमाल करता है. टारगेट थ्रेड नेटवर्क में, किसी डिवाइस से नेटवर्क कुंजी पाने के लिए:
OpenThread सीएलआई का इस्तेमाल करना:
networkkey
33334444333344443333444433334444एनसीपी के साथ
wpanctl
का इस्तेमाल करना:wpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
OTBR वेब GUI में Thread नेटवर्क कुंजी उपलब्ध नहीं है.
स्निफ़र के विकल्प
विकल्प | |||||
---|---|---|---|---|---|
-u or --uart |
|
||||
-c or --channel |
|
||||
--no-reset |
|
||||
--crc |
|
||||
-b or --baudrate |
|
||||
--rssi |
|
||||
--tap |
|
स्निफ़र चलाएं
पक्का करें कि आप NCP के लिए, खास डिवाइस पाथ और उस थ्रेड नेटवर्क के चैनल का इस्तेमाल करें जिसे आप स्निफ़ करने की कोशिश कर रहे हैं.
अगर इस गाइड का पालन किया जा रहा है, तो nRF52840 DK को होस्ट मशीन से
डीबग पोर्ट के साथ अटैच किया जाना चाहिए. इसके बारे में nRF52840 में बताया गया है. पिस्पिनल स्निफ़र चलाने के लिए, बॉड रेट तय करने के लिए -b
फ़्लैग का इस्तेमाल करें (अगर इसे डिफ़ॉल्ट से बदला गया है) और --no-reset
फ़्लैग को हटा दें.
आरएसएसआई दिखाने के लिए, Wire शार्क को कॉन्फ़िगर करें. स्निफ़र टूल चलाने पर, आपको --rssi
फ़्लैग भी शामिल करना होगा. उदाहरण के लिए, /dev/ttyACM0
पर माउंट किए गए डिवाइस का इस्तेमाल करके, चैनल 15 पर स्निफ़ करने के लिए, Wire शार्क के आउटपुट में शामिल:
cd path-to-pyspinel
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -
अब आपको इस कॉन्फ़िगरेशन के पैकेट और उससे जुड़े प्रोटोकॉल, Wireshark में दिखेंगे:
Pyspinel स्निफ़र चलाने के बारे में ज़्यादा जानकारी के लिए, Spinel sniffer के बारे में ज़्यादा जानकारी का रेफ़रंस देखें.
नेटिव यूएसबी कनेक्शन
nRF52840 DK यूएसबी पोर्ट का इस्तेमाल करने के लिए, OpenThread ot-rcp
बाइनरी की ज़रूरत होती है. इसे USB_trans
के साथ बनाया जाना चाहिए:
./script/build nrf52840 USB_trans
nRF52840 DK को फ़्लैश करें, इसे यूएसबी पोर्ट से होस्ट मशीन से कनेक्ट करें, फिर --no-reset
फ़्लैग का इस्तेमाल करके, स्निफ़र चलाते समय -b
फ़्लैग को हटा दें:
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
रिसॉर्स
अन्य नॉर्डिक टूल के लिए, नॉर्डिक सेमीकंडक्टर — Thread स्निफ़र को Wireshark के साथ nRF52840 पर देखें.