این راهنما نحوه پیکربندی Wireshark و اجرای Pyspinel را برای شناسایی بستهها از شبکه Thread پوشش میدهد.
برای استفاده از افزونه Wireshark extcap برای sniffing بسته، به Packet Sniffing با استفاده از extcap مراجعه کنید.
محیط sniffer را تنظیم کنید
قبل از شروع، مراحل زیر را کامل کنید:
- نیازمندی های Packet Sniffing را مرور کنید.
- Wireshark را نصب و پیکربندی کنید .
- Pyspinel و Dependencies را بدون extcap نصب کنید .
اسنیفر را بسازید
با استفاده از خروجی باینری ot-rcp
یک دستگاه NCP بسازید و فلش کنید تا به عنوان sniffer عمل کند.
نوردیک nRF52840
برای راهاندازی مثال Nordic nRF52840 برای استفاده بهعنوان sniffer، 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 فلش کنید.
دستگاه ذخیرهسازی انبوه (MSD) را در 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 که می خواهید sniff کنید، دریافت کنید. برای پیکربندی Wireshark و اجرای sniffer Pyspinel به آنها نیاز دارید.
پیشوند محلی مش
برای دریافت پیشوند محلی Mesh از دستگاهی در شبکه Thread هدف:
با استفاده از OpenThread CLI:
dataset active
Mesh Local Prefix: fd33:3333:3344:0/64استفاده از
wpanctl
با NCP:wpanctl getprop IPv6:MeshLocalPrefix
IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"با استفاده از رابط کاربری گرافیکی وب OTBR، وضعیت را انتخاب کنید. پیشوند محلی Mesh به عنوان IPv6 فهرست شده است: MeshLocalPrefix مشابه
wpanctl
.
کانال
برای دریافت کانال از دستگاهی در شبکه موضوع هدف:
با استفاده از OpenThread CLI:
channel
15استفاده از
wpanctl
با NCP:wpanctl getprop NCP:Channel
NCP:Channel = 15با استفاده از رابط کاربری گرافیکی وب OTBR، وضعیت را انتخاب کنید. کانال به عنوان NCP:Channel مشابه
wpanctl
فهرست شده است.
کلید شبکه
کلید شبکه Thread توسط Wireshark برای رمزگشایی بسته ها پس از ضبط استفاده می شود. برای دریافت کلید شبکه از دستگاهی در شبکه موضوع هدف:
با استفاده از OpenThread CLI:
networkkey
33334444333344443333444433334444استفاده از
wpanctl
با NCP:wpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
کلید شبکه Thread در رابط کاربری گرافیکی وب OTBR موجود نیست.
گزینه های Sniffer
گزینه ها | |||||
---|---|---|---|---|---|
-u or --uart |
| ||||
-c or --channel |
| ||||
--no-reset |
| ||||
--crc |
| ||||
-b or --baudrate |
| ||||
--rssi |
| ||||
--tap |
|
اسنیفر را اجرا کنید
مطمئن شوید که از مسیر دستگاه خاص برای NCP خود و کانال شبکه Thread که میخواهید آن را اسنیف کنید استفاده کنید.
اگر این راهنما را دنبال کنید، nRF52840 DK باید توسط پورت اشکال زدایی به دستگاه میزبان متصل شود، همانطور که در Flash the nRF52840 توضیح داده شده است. برای اجرای sniffer Pyspinel، از پرچم -b
برای تعیین نرخ باود (اگر از حالت پیشفرض تغییر کرده بود) استفاده کنید و پرچم --no-reset
را حذف کنید.
اگر Wireshark را برای نمایش RSSI پیکربندی کنید ، هنگام اجرای ابزار sniffer باید پرچم --rssi
نیز اضافه کنید. به عنوان مثال، برای بو کشیدن در کانال 15 با استفاده از دستگاه نصب شده در /dev/ttyACM0
با RSSI موجود در خروجی Wireshark:
cd path-to-pyspinel
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -
اکنون باید بتوانید بسته ها و پروتکل های مربوط به این پیکربندی را در Wireshark مشاهده کنید:
برای اطلاعات بیشتر در مورد اجرای sniffer Pyspinel به مرجع Spinel Sniffer مراجعه کنید.
اتصال USB بومی
برای استفاده از پورت USB nRF52840 DK باید باینری OpenThread ot-rcp
با USB_trans
ساخته شود:
./script/build nrf52840 USB_trans
nRF52840 DK را فلش کنید، آن را از طریق پورت USB به دستگاه میزبان متصل کنید ، سپس از پرچم --no-reset
استفاده کنید اما هنگام اجرای sniffer پرچم -b
را حذف کنید: python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
منابع
برای ابزارهای Nordic اضافی، به Nordic Semiconductor — Thread Sniffer بر اساس nRF52840 با Wireshark مراجعه کنید.