מדריך זה מסביר כיצד להגדיר Wireshark ולהריץ את Pyspinel כדי לסרוק חבילות מרשת של פרוטוקול Thread.
כדי להשתמש בפלאגין extcap של Wireshark ל-sniffing של חבילות, אתם יכולים לקרוא את המאמר לכידת חבילות באמצעות extcap.
הגדרה של סביבת Sniffer
לפני שמתחילים, צריך לבצע את השלבים הבאים:
בונים את המטווח
יצירה ופלאש של מכשיר NCP שישמש כמאגר הרחה, באמצעות הפלט הבינארי של ot-rcp
.
nRF52840 נורדי
כדי להגדיר את הדוגמה nRF52840 הנורדית לשימוש כמצולם, שכפול
openthread/ot-nrf528xx
ומגדירים את סביבת ה-build:
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
Flash את הקובץ 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
לפני שנמשיך, עליך להשיג את המאפיינים הבאים של רשת פרוטוקול Thread הרצויה להריח. יהיה לך צורך בהם עבור הגדרת Wireshark והפעלת Pyspinel מעורפל.
קידומת מקומית של Mesh
כדי לקבל את הקידומת המקומית של Mesh ממכשיר ברשת היעד של פרוטוקול Thread:
באמצעות ה-CLI של OpenThread:
dataset active
Mesh Local Prefix: fd33:3333:3344:0/64שימוש ב-
wpanctl
עם NCP:wpanctl getprop IPv6:MeshLocalPrefix
IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"באמצעות OTBR Web GUI, בוחרים באפשרות Status. הקידומת המקומית של Mesh מופיעה בתור IPv6:MeshLocalPrefix כמו
wpanctl
.
ערוץ
כדי לאחזר את הערוץ ממכשיר ברשת היעד של פרוטוקול Thread:
באמצעות ה-CLI של OpenThread:
channel
15שימוש ב-
wpanctl
עם NCP:wpanctl getprop NCP:Channel
NCP:Channel = 15באמצעות OTBR Web GUI, בוחרים באפשרות Status. הערוץ רשום בתור NCP:Channel, בדומה ל-
wpanctl
.
מפתח רשת
מפתח רשת פרוטוקול Thread משמש את Wireshark לפענוח חבילות לאחר וצילום. כדי לקבל את מפתח הרשת ממכשיר ברשת היעד של פרוטוקול Thread:
באמצעות ה-CLI של OpenThread:
networkkey
33334444333344443333444433334444שימוש ב-
wpanctl
עם NCP:wpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
מפתח רשת פרוטוקול Thread לא זמין ב-OTBR Web GUI.
אפשרויות סינון
אפשרויות | |||||
---|---|---|---|---|---|
-u or --uart |
|
||||
-c or --channel |
|
||||
--no-reset |
|
||||
--crc |
|
||||
-b or --baudrate |
|
||||
--rssi |
|
||||
--tap |
|
הפעלת המכין
צריך להשתמש בנתיב המכשיר הספציפי עבור ה-NCP ובערוץ של רשת ה-thread שניסית לסרוק.
אם מבצעים את המדריך הזה, צריך לחבר את ה-nRF52840 DK למכונה המארחת באמצעות
את יציאת ניפוי הבאגים, כפי שמתואר בהסבר על Flash
nRF52840. כדי להריץ את מגרדת פיסיננל,
להשתמש בדגל -b
כדי לציין את קצב הבאוד (אם הוא השתנה מברירת המחדל)
ומשמיטים את הדגל --no-reset
.
אם מגדירים את Wireshark להצגת RSSI, צריך לכלול גם את --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:
כדאי לעיין בSpinel sniffer הפניה עבור מידע נוסף על הפעלת מגרדת פיסנל.
חיבור USB מקורי
לשימוש ביציאת ה-USB מסוג nRF52840 DK יש צורך בקובץ הבינארי ot-rcp
של OpenThread כדי
שישולבו בעזרת USB_trans
:
./script/build nrf52840 USB_trans
--no-reset
אבל יש להשמיט את הדגל -b
כשמפעילים את sniffer:
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
משאבים
לכלים נורדיים נוספים, ראו מוליכים למחצה Nordic – Thread סינון נתונים על סמך nRF52840 עם Wireshark.