במדריך הזה נסביר איך להגדיר את Wireshark ולהריץ Pyspinel לחבילות נתונים מרשת של Thread.
כדי להשתמש בפלאגין extcaper של Wireshark, כולל 'הברקת חבילות', תוכלו לקרוא את המאמר מידע על חבילות באמצעות extcap.
הגדרת סביבת הריח
לפני שנתחיל, עליך להשלים את השלבים הבאים:
- כדאי לעיין בדרישות למעקף של חבילות.
- התקנה והגדרה של Wireshark.
- התקנה של פיזלין ויחסי תלות ללא extext.
בניית הסנייף
יצירה והבזק של מכשיר NCP לשימוש בתור ה-N6F, באמצעות הפלט הבינארי של ot-rcp
.
נורדי nRF52840
כדי להגדיר את הדוגמה nRF52840 הנורדית לשימוש כ-nnipper, יש לשכפל את 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
הבליט את הקובץ ot-rcp.hex
ללוח nRF52840 כפי שמפורט ב-Flash את ה-nRF52840.
יש להשבית את Mass Storage Device (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.
קידומת של רשת מקומית
כדי לקבל את הקידומת של רשת מקומית ממכשיר ברשת של רשת 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"באמצעות ה-GUI של האינטרנט, בוחרים באפשרות סטטוס. הקידומת של Mesh Local מופיעה בתור IPv6:MeshLocalPrefix באופן דומה ל-
wpanctl
.
ערוץ
כדי לקבל את הערוץ ממכשיר ברשת היעד של Thread:
באמצעות CLI של OpenThread:
channel
15שימוש ב-
wpanctl
עם NCP:wpanctl getprop NCP:Channel
NCP:Channel = 15באמצעות ה-GUI של האינטרנט, בוחרים באפשרות סטטוס. הערוץ מופיע בתור NCP:Channel באופן דומה ל-
wpanctl
.
מפתח רשת
מפתח רשת Thread משמש את Wireshark לפענוח החבילות לאחר הצילום. כדי לקבל את מפתח הרשת ממכשיר ברשת Thread היעד:
באמצעות CLI של OpenThread:
networkkey
33334444333344443333444433334444שימוש ב-
wpanctl
עם NCP:wpanctl 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 למכונה המארחת באמצעות יציאת ניפוי הבאגים, כפי שמתואר בקטע יצירת Flash עם nRF52840. כדי להריץ את סניפי Pyspinel, השתמשו בסימון -b
כדי לציין את קצב החשיפה (אם הוא השתנה מברירת המחדל) והשמיטו את הדגל --no-reset
.
אם הגדרת Wireshark להצגת RSSI, עליך לכלול גם את הדגל --rssi
בעת הפעלת כלי ה-niffer. לדוגמה, כדי לבצע 'ריח' בערוץ 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:
בחומר העזר בנושא סנפיר סנפיר תוכלו לעיין בחומר העזר בנושא סנפיר מסתובב.
חיבור USB מקורי
כדי להשתמש ביציאת ה-USB מסוג nRF52840 DK, צריך ליצור את הקובץ הבינארי ot-rcp
OpenThread ot-rcp
עם USB_trans
:
./script/build nrf52840 USB_trans
ניתן להעביר את ה-nRF52840 DK לפלאש, לחבר אותו למכונה המארחת באמצעות יציאת ה-USB, ואז להשתמש בסימון --no-reset
בזמן השמטת הדגל -b
בזמן הפעלת ה-nifffer:
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
משאבים
לכלים נורדיים נוספים, כדאי לעיין במאמר Nordic Semiconductor — Thread Cniffer based on nRF52840 with Wireshark.