คู่มือนี้ครอบคลุมวิธีกำหนดค่า Wireshark และเรียกใช้ Pyspinel เพื่อสนิฟแพ็กเก็ตจากเครือข่ายเทรด
หากต้องการใช้ปลั๊กอิน extcap ของ Wireshark เพื่อตรวจหาแพ็กเก็ต โปรดดูการตรวจหาแพ็กเก็ตโดยใช้ extcap
ตั้งค่าสภาพแวดล้อมของโปรแกรมสนิฟเฟอร์
ก่อนเริ่มต้น ให้ทำตามขั้นตอนต่อไปนี้
- ตรวจสอบข้อกำหนดในการสนิฟแพ็กเก็ต
- ติดตั้งและกำหนดค่า Wireshark
- ติดตั้ง Pyspinel และไลบรารีที่เกี่ยวข้องโดยไม่มี extcap
สร้างโปรแกรมสนิฟเฟอร์
สร้างและแฟลชอุปกรณ์ NCP เพื่อใช้เป็น Sniffer โดยใช้เอาต์พุตไบนารี ot-rcp
Nordic 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
เป็นฐาน 16
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.
พร็อพเพอร์ตี้เครือข่ายเทรด
ก่อนดำเนินการต่อ ให้รับพร็อพเพอร์ตี้ต่อไปนี้สำหรับเครือข่ายเทรดที่ต้องการสนิฟ คุณต้องใช้ข้อมูลนี้ในการกําหนดค่า Wireshark และเรียกใช้เครื่องมือสํารวจ Pyspinel
Prefix ของ Mesh ในพื้นที่
วิธีรับ Mesh Local Prefix จากอุปกรณ์ในเครือข่ายเทรดเป้าหมาย
การใช้ CLI ของ OpenThread
dataset active
Mesh Local Prefix: fd33:3333:3344:0/64การใช้
wpanctl
กับ NCPwpanctl getprop IPv6:MeshLocalPrefix
IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"เลือกสถานะโดยใช้ GUI ของเว็บ OTBR คำนำหน้า Mesh Local จะแสดงเป็น IPv6:MeshLocalPrefix ซึ่งคล้ายกับ
wpanctl
ช่อง
วิธีรับแชแนลจากอุปกรณ์ในเครือข่ายเทรดเป้าหมาย
การใช้ CLI ของ OpenThread
channel
15การใช้
wpanctl
กับ NCPwpanctl getprop NCP:Channel
NCP:Channel = 15เลือกสถานะโดยใช้ GUI ของเว็บ OTBR ช่องแสดงเป็น NCP:Channel คล้ายกับ
wpanctl
คีย์เครือข่าย
Wireshark จะใช้คีย์เครือข่ายเทรดเพื่อถอดรหัสแพ็กเก็ตหลังจากบันทึก วิธีรับคีย์เครือข่ายจากอุปกรณ์ในเครือข่ายเทรดเป้าหมาย
การใช้ CLI ของ OpenThread
networkkey
33334444333344443333444433334444การใช้
wpanctl
กับ NCPwpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
รหัสเครือข่ายเทรดไม่พร้อมใช้งานใน GUI ของเว็บ OTBR
ตัวเลือกเครื่องมือวิเคราะห์แพ็กเก็ต
ตัวเลือก | |||||
---|---|---|---|---|---|
-u or --uart |
|
||||
-c or --channel |
|
||||
--no-reset |
|
||||
--crc |
|
||||
-b or --baudrate |
|
||||
--rssi |
|
||||
--tap |
|
เรียกใช้โปรแกรมวิเคราะห์แพ็กเก็ต
ตรวจสอบว่าคุณใช้เส้นทางอุปกรณ์ที่เฉพาะเจาะจงสำหรับ NCP และช่องสำหรับเครือข่ายเทรดที่คุณพยายามสนิฟ
หากทำตามคำแนะนำนี้ คุณควรต่อ nRF52840 DK เข้ากับเครื่องโฮสต์ผ่านพอร์ตแก้ไขข้อบกพร่อง ตามที่อธิบายไว้ในแฟลช nRF52840 หากต้องการเรียกใช้โปรแกรมสนิฟเฟอร์ Pyspinel ให้ใช้ Flag -b
เพื่อระบุอัตราบอด (หากมีการเปลี่ยนแปลงจากค่าเริ่มต้น) และละเว้น Flag --no-reset
หากกำหนดค่า Wireshark ให้แสดง RSSI คุณต้องใส่ Flag --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
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเรียกใช้โปรแกรมสนิฟเตอร์ Pyspinel ได้ในข้อมูลอ้างอิงเกี่ยวกับโปรแกรมสนิฟเตอร์ Spinel
การเชื่อมต่อ USB โดยตรง
การใช้พอร์ต USB ของ nRF52840 DK กำหนดให้ต้องสร้างไบนารี ot-rcp
ของ OpenThread ด้วย USB_trans
ดังนี้
./script/build nrf52840 USB_trans
แฟลช nRF52840 DK, เชื่อมต่อกับเครื่องโฮสต์ผ่านพอร์ต USB จากนั้นใช้ Flag --no-reset
แต่ไม่ต้องใส่ Flag -b
เมื่อเรียกใช้โปรแกรมสนิฟเฟอร์
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
แหล่งข้อมูล
ดูเครื่องมืออื่นๆ ของ Nordic ได้ที่ Nordic Semiconductor — Thread Sniffer based on nRF52840 with Wireshark