पिस्पिनल के साथ पैकेट स्निफ़िंग

GitHub पर सोर्स देखें

इस गाइड में Wireshark को कॉन्फ़िगर करने और पैकेट स्निफ़ करने के लिए Pyspinel को चलाने का तरीका बताया गया है Thread नेटवर्क से लिया गया है.

पैकेट स्निफ़िंग के लिए, Wireshark एक्सटेंशन प्लगिन का इस्तेमाल करने के लिए, पैकेट स्निफ़िंग” देखें extcap का इस्तेमाल करके.

स्निफ़र एनवायरमेंट को सेट अप करें

शुरू करने से पहले, नीचे दिए गए चरणों को पूरा करें:

स्निफ़र तैयार करें

ot-rcp बाइनरी आउटपुट का इस्तेमाल करके, स्निफ़र के तौर पर काम करने के लिए, एक एनसीपी डिवाइस बनाएं और उसे फ़्लैश करें.

नॉर्डिक nRF52840

स्निफ़र के तौर पर इस्तेमाल करने के लिए, नॉर्डिक nRF52840 का उदाहरण सेट अप करने के लिए, क्लोन करें openthread/ot-nrf528xx और बिल्ड एनवायरमेंट सेट अप करें:

git clone https://github.com/openthread/ot-nrf528xx --recursive
./script/bootstrap

बॉड रेट को 460800 के तौर पर सेट करें. #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200 लाइन ढूंढें src/nrf52840/transport-config.h में अपलोड करें और इसे #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.

Thread की नेटवर्क प्रॉपर्टी

आगे बढ़ने से पहले, अपनी पसंद के Thread नेटवर्क के लिए ये प्रॉपर्टी पाएं सूंघने के लिए. Wireshark कॉन्फ़िगरेशन और Pyspinel चलाने के लिए, आपको इनकी ज़रूरत होगी स्निफ़र.

मेश लोकल प्रीफ़िक्स

टारगेट किए गए Thread नेटवर्क के किसी डिवाइस से मेश लोकल प्रीफ़िक्स पाने के लिए:

  1. OpenThread सीएलआई का इस्तेमाल करके:

    dataset active
    Mesh Local Prefix: fd33:3333:3344:0/64
    

  2. एनसीपी के साथ wpanctl का इस्तेमाल करना:

    wpanctl getprop IPv6:MeshLocalPrefix
    IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"
    

  3. OTBR वेब GUI का इस्तेमाल करके, स्थिति चुनें. मेश लोकल प्रीफ़िक्स सूची में शामिल है wpanctl के समान IPv6:MeshLocalPrefix के तौर पर.

चैनल

टारगेट Thread नेटवर्क में मौजूद किसी डिवाइस से चैनल पाने के लिए:

  1. OpenThread सीएलआई का इस्तेमाल करके:

    channel
    15
    

  2. एनसीपी के साथ wpanctl का इस्तेमाल करना:

    wpanctl getprop NCP:Channel
    NCP:Channel = 15
    

  3. OTBR वेब GUI का इस्तेमाल करके, स्थिति चुनें. चैनल इस रूप में सूचीबद्ध है wpanctl से मिलता-जुलता NCP:चैनल.

नेटवर्क कुंजी

Thread नेटवर्क कुंजी का इस्तेमाल Wireshark बाद में पैकेट को डिक्रिप्ट करने के लिए करता है कैप्चर करें. टारगेट Thread नेटवर्क में मौजूद किसी डिवाइस से नेटवर्क कुंजी पाने के लिए:

  1. OpenThread सीएलआई का इस्तेमाल करके:

    networkkey
    33334444333344443333444433334444
    

  2. एनसीपी के साथ wpanctl का इस्तेमाल करना:

    wpanctl getprop Network:Key
    Network:Key = [33334444333344443333444433334444]
    

OTBR वेब GUI में Thread नेटवर्क कुंजी उपलब्ध नहीं है.

स्निफ़र के विकल्प

विकल्प
-u or --uart
डिफ़ॉल्ट वैल्यू
कोई नहीं - अगर आप किसी ऐसे डिवाइस का उपयोग कर रहे हैं जिसमें सीरियल कनेक्शन है न कि सॉकेट कनेक्शन.
जानकारी
-u या --uart फ़्लैग के बाद डिवाइस पाथ, जैसे कि /dev/ttyUSB0.
-c or --channel
डिफ़ॉल्ट वैल्यू
11
जानकारी
इसके बाद, -c या --channel फ़्लैग चुना गया जिसे आपके Thread Network पर कॉन्फ़िगर किया गया हो. इसके आधार पर, पैकेट स्कैन कर लें.
--no-reset
डिफ़ॉल्ट वैल्यू
यह फ़्लैग डिफ़ॉल्ट व्यवहार को ओवरराइड करता है.
जानकारी
अगर आपका एनसीपी है, तो --no-reset फ़्लैग की ज़रूरत है डिवाइस, स्थानीय यूएसबी का इस्तेमाल करके होस्ट से कनेक्ट किया गया कनेक्शन.
--crc
डिफ़ॉल्ट वैल्यू
यह फ़्लैग डिफ़ॉल्ट व्यवहार को ओवरराइड करता है.
जानकारी
इन प्लैटफ़ॉर्म के लिए --crc फ़्लैग की ज़रूरत होती है TI और नॉर्डिक सेमीकंडक्टर Thread बोर्ड. झंडा 'खराब एफ़सीएस' से बचने के लिए, सीआरसी का फिर से हिसाब लगाता है (फ़्रेम चेक क्रम) चेतावनी जारी की गई है.
-b or --baudrate
डिफ़ॉल्ट वैल्यू
115200
जानकारी
-b या --baudrate फ़्लैग का इस्तेमाल किया गया है डिफ़ॉल्ट बॉड रेट को ओवरराइड करने के लिए. इस वैल्यू को समान वैल्यू पर सेट करें आपके एनसीपी के साथ इस्तेमाल किया गया बॉड रेट बिल्ड (हम 460800 का सुझाव देते हैं).
--rssi
डिफ़ॉल्ट वैल्यू
यह फ़्लैग डिफ़ॉल्ट व्यवहार को ओवरराइड करता है.
जानकारी
--rssi फ़्लैग का इस्तेमाल यह पक्का करने के लिए किया जाता है कि आरएसएसआई Pcap आउटपुट में शामिल किया जाता है. आपको इस फ़्लैग का इस्तेमाल तब करना होगा, जब टीआई CC24xx एफ़सीएस फ़ॉर्मैट विकल्प Wireshark में चालू करता है.
--tap
डिफ़ॉल्ट वैल्यू
यह फ़्लैग डिफ़ॉल्ट व्यवहार को ओवरराइड करता है.
जानकारी
--tap फ़्लैग बताता है कि फ़्रेम फ़ॉर्मैट के लिए DLT_IEEE802_15_4_TAP(283), एक pseudo-header के साथ जिसमें TLV शामिल हैं (जैसे कि एफ़सीएस, आरएसएसआई, एलक्यूआई, चैनल). अगर इसके बारे में नहीं बताया गया है, DLT_IEEE802_15_4_WITHFCS(195) का इस्तेमाल इन पतों पर किया जाएगा पीएचवाई के बाद अतिरिक्त आरएसएसआई और एलक्यूआई के साथ डिफ़ॉल्ट जैसा कि TI CC24xx FCS फ़ॉर्मैट में होता है. आपको इस फ़्लैग का इस्तेमाल तब करना होगा, जब आईटीयू-टी सीआरसी-16 Wireshark में विकल्प चालू है. अगर वह विकल्प चालू नहीं है वायर शार्क में, इस फ़्लैग का इस्तेमाल न करें.

स्निफ़र चलाएं

पक्का करें कि आप एनसीपी के लिए खास डिवाइस पाथ और चैनल का इस्तेमाल वह Thread नेटवर्क जिसे आपको सूंघने की कोशिश की जा रही है.

अगर इस गाइड का इस्तेमाल किया जा रहा है, तो nRF52840 DK को होस्ट मशीन से इस तरह अटैच किया जाना चाहिए की जांच करें, जैसा कि फ़्लैश nRF52840. पिनेल स्निफ़र चलाने के लिए, बॉड रेट की जानकारी देने के लिए, -b फ़्लैग का इस्तेमाल करें (अगर इसे डिफ़ॉल्ट से बदला गया था) --no-reset फ़्लैग को हटा दें.

अगर आरएसएसआई दिखाने के लिए वायर शार्क को कॉन्फ़िगर किया जाता है, तो आपको --rssi को भी शामिल करना होगा फ़्लैग करें. उदाहरण के लिए, चैनल 15 का इस्तेमाल करके /dev/ttyACM0 पर माउंट किया गया ऐसा डिवाइस जिसमें वायर शार्क आउटपुट में आरएसएसआई शामिल है:

cd path-to-pyspinel
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -

अब आपको इसके पैकेट और उनसे जुड़े प्रोटोकॉल दिखेंगे Wireshark में कॉन्फ़िगरेशन:

वायर शार्क कैप्चर

स्पिनेल स्निफ़र देखें इसके लिए रेफ़रंस Pyspinel स्निफ़र चलाने के बारे में ज़्यादा जानकारी.

नेटिव यूएसबी कनेक्शन

nRF52840 DK यूएसबी पोर्ट का इस्तेमाल करने के लिए, OpenThread ot-rcp बाइनरी की ज़रूरत होती है, ताकि USB_trans की मदद से बनाए जाएंगे:

./script/build nrf52840 USB_trans
nRF52840 DK को फ़्लैश करें, उसे USB के ज़रिए होस्ट मशीन से कनेक्ट करें पोर्ट, फिर --no-reset फ़्लैग का इस्तेमाल करें लेकिन स्निफ़र चलाते समय -b फ़्लैग को छोड़ दें:

python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -

संसाधन

अतिरिक्त नॉर्डिक टूल के लिए, Nordic सेमीकंडक्टर — Thread देखें Wireshark की मदद से, nRF52840 के आधार पर स्निफ़र करें.