Wireshark הוא כלי בקוד פתוח שיכול לפענח פרוטוקולי רשת ב-Thread stack, כמו IEEE 802.15.4, 6LoWPAN, IPv6, MLE (יצירת קישורים לרשתות תלת-ממדיות), UDP ו-CoAP.
כלי הסניפר של Pyspinel מתחבר למכשיר Thread NCP או RCP וממיר אותו לסניפר חבילות פרומזואלי, יוצר שידור pcap (תיעוד חבילות) שאפשר לשמור או להעביר ישירות ל-Wireshark.
כדי להשתמש ב-Wireshark עם Pyspinel, אפשר לעיין בהמלצות להתקנה בשלב הבא. צריך גם להגדיר את Wireshark כך שיציג בצורה נכונה את חבילות ה-Thread ויקבל מדידות RSSI.
התקנת Wireshark
Linux
פותחים טרמינל ומריצים את הפקודות הבאות כדי להוריד ולהתקין את Wireshark:
sudo add-apt-repository ppa:wireshark-dev/stable
sudo apt-get update
sudo apt-get install wireshark
מומלץ להריץ את Wireshark כמשתמש שאינו root
. כדי לעשות זאת, צריך להגדיר מחדש את החבילה:
sudo dpkg-reconfigure wireshark-common
בתיבת הדו-שיח 'האם משתמשים שאינם סופר-משתמשים יוכלו לצלם חבילות?', בוחרים באפשרות כן, מוסיפים את המשתמש wireshark
ומעדכנים את הרשאות הקובץ:
sudo adduser $USER wireshark
sudo chmod +x /usr/bin/dumpcap
macOS ו-Windows
מורידים ומתקינים את Wireshark. כדי לבצע אופטימיזציה של האבטחה למערכת ההפעלה, אפשר לעיין במאמר Wireshark – מידע ספציפי לפלטפורמה על הרשאות לכידת נתונים.
הגדרת פרוטוקולים של Wireshark
כדי להגדיר את הפרוטוקולים, בוחרים באפשרות Preferences… ב-Wireshark ומרחיבים את הקטע Protocols.
6LoWPAN
בוחרים באפשרות 6LoWPAN מרשימת הפרוטוקולים ומאמתים או משנים את ההגדרות הבאות:
- מבטלים את הסימון של האפשרות Derive ID according to RFC 4944.
- מעדכנים את Context 0 בתחילית המקומית של רשת Mesh היעד ב-Thread.
Wireshark משתמש בהגדרות הקשר כדי לנתח את כתובת ה-IPv6 המצומצמת ולהציג בצורה נכונה את כתובות המקור והיעד של ה-IPv6.
כדי להציג את הכתובות של תחיליות אחרות ברשת שהוגדרן בשער, צריך לעדכן את מזהי ההקשר האחרים עם התחיליות האלה.
כדי לקבל את מזהה ההקשר של קידומת ספציפית ברשת, בודקים את ה-TLV של נתוני רשת השרשור בכל הודעת תגובה של נתוני MLE. לדוגמה:
Context 1: fd00:7d03:7d03:7d03::/64
CoAP
בוחרים באפשרות CoAP מרשימת הפרוטוקולים ומגדירים את CoAP UDP Port לערך 61631. כך מוודאים שהודעות TMF (כמו בקשה לקבלת כתובת) יוצגו.
IEEE 802.15.4
בוחרים באפשרות IEEE 802.15.4 מרשימת הפרוטוקולים ומאמתים או משנים את ההגדרות הבאות:
- מגדירים את 802.15.4 Ethertype (ב-hex) לערך '0x809a'.
- מגדירים את Security Suite ל-'AES-128 Encryption, 32-bit Integrity Protection'.
לוחצים על הלחצן Edit… (עריכה) לצד Decryption Keys (מפתחות פענוח), שבו מוסיפים את מפתח המאסטר של רשת Thread לפענוח חבילות.
- לוחצים על + כדי להוסיף מפתח פענוח.
- מזינים את מפתח המאסטר של רשת Thread בעמודה Decryption key.
- מזינים '1' כמפתח לפענוח.
בוחרים באפשרות Thread hash (גיבוב של שרשור) מתיבת הסימון של העמודה Key hash (גיבוב מפתח).
לוחצים על OK כדי לשמור את מפתח הפענוח.
שרשור
בוחרים באפשרות Thread מרשימת הפרוטוקולים ומאמתים או משנים את ההגדרות הבאות:
- מזינים '00000000' בשדה Thread sequence counter.
- מבטלים את הסימון של התיבה Use PAN ID as first two octets of master key.
- מסמנים את האפשרות קבלת מונה רצף של שרשור באופן אוטומטי.
לוחצים על הלחצן OK כדי לשמור את השינויים בפרוטוקול.
יכול להיות שחלק מתעבורת הנתונים ב-Thread תנותח כפרוטוקול ZigBee. כדי להציג בצורה נכונה את שני הפרוטוקולים האלה, צריך לערוך את הפרוטוקולים המופעלים ב-Wireshark:
- ב-Wireshark, עוברים אל Analyze (ניתוח) ולוחצים על Enabled Protocols (פרוטוקולים מופעלים).
מבטלים את הסימון של הפרוטוקולים הבאים:
- LwMesh
- ZigBee
- ZigBee Green Power
הגדרת RSSI ב-Wireshark
כדי להציג את RSSI ב-Wireshark:
- בוחרים באפשרות Preferences… (העדפות…) ומרחיבים את הקטע Protocols (פרוטוקולים), ואז לוחצים על IEEE 802.15.4.
מגדירים את פורמט ה-FCS:
- אם ה-TAP של IEEE 802.15.4 מושבת: מטא-נתונים של TI CC24xx.
- אם ה-TAP של IEEE 802.15.4 מופעל: ITU-T CRC-16. אם פועלים לפי המדריך לניפוי חבילות עבור Nordic Semiconductor nRF52840 DK, אפשר לעיין בדגל
--tap
לקבלת מידע נוסף.
לוחצים על אישור כדי לשמור את ההגדרות ולחזור לתפריט העדפות.
בקטע העדפות, בוחרים באפשרות מראה ואז באפשרות עמודות.
הוספת רשומה חדשה:
- Title: RSSI
- טיפוס: Custom
- שדות: wpan.rssi