يتناول هذا الدليل كيفية ضبط Wireshark وتشغيل Pyspinel لرصد الحِزم من شبكة Thread.
لاستخدام المكوّن الإضافي extcap في Wireshark لاختبار الحزم، يُرجى الاطّلاع على مقالة اختبار الحزم باستخدام extcap.
إعداد بيئة أداة الاستماع
قبل البدء، عليك إكمال الخطوات التالية:
إنشاء أداة الاستكشاف
أنشئ جهاز NCP وفلشّه ليستخدم كمجسِّم بيانات، باستخدام الإخراج الثنائي ot-rcp
.
Nordic nRF52840
لإعداد مثال Nordic nRF52840 لاستخدامه كجهاز تحليل، يمكنك استنساخ
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
قبل المتابعة، احصل على السمات التالية لشبكة Thread التي تريد التنصت إليها. ستحتاج إلى هذه البرامج لضبط إعدادات Wireshark وتشغيل أداة التتبُّع Pyspinel.
بادئة Mesh المحلية
للحصول على بادئة Mesh Local من جهاز في شبكة Thread المستهدَفة:
باستخدام واجهة سطر أوامر OpenThread:
dataset active
Mesh Local Prefix: fd33:3333:3344:0/64استخدام
wpanctl
مع وحدة تحكّم في حدود الشبكة:wpanctl getprop IPv6:MeshLocalPrefix
IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"باستخدام واجهة المستخدم الرسومية على الويب لبرنامج OTBR، اختَر الحالة. يتم إدراج بادئة Mesh Local (الشبكة المحلية) بالتنسيق IPv6:MeshLocalPrefix، تمامًا مثل
wpanctl
.
القناة
للحصول على القناة من جهاز في شبكة Thread المستهدفة:
باستخدام واجهة سطر الأوامر OpenThread:
channel
15استخدام
wpanctl
مع وحدة تحكّم في حدود الشبكة:wpanctl getprop NCP:Channel
NCP:Channel = 15باستخدام واجهة المستخدم الرسومية على الويب لبرنامج OTBR، اختَر الحالة. تم إدراج القناة على النحو التالي: NCP:Channel، تمامًا مثل
wpanctl
.
مفتاح الشبكة
يستخدم Wireshark مفتاح شبكة Thread لفك تشفير الحِزم بعد التقاطها. للحصول على مفتاح الشبكة من جهاز في شبكة Thread المستهدفة:
باستخدام واجهة سطر أوامر OpenThread:
networkkey
33334444333344443333444433334444استخدام
wpanctl
مع وحدة تحكّم في حدود الشبكة:wpanctl getprop Network:Key
Network:Key = [33334444333344443333444433334444]
لا يتوفّر مفتاح شبكة Thread في واجهة المستخدم الرسومية على الويب لبروتوكول OTBR.
خيارات أداة التتبُّع
الخيارات | |||||
---|---|---|---|---|---|
-u or --uart |
|
||||
-c or --channel |
|
||||
--no-reset |
|
||||
--crc |
|
||||
-b or --baudrate |
|
||||
--rssi |
|
||||
--tap |
|
تشغيل أداة الاستكشاف
احرص على استخدام مسار الجهاز المحدّد لوحدة التحكّم في الطاقة (NCP) والقناة لشبكة Thread التي تحاول اعتراضها.
في حال اتّباع هذا الدليل، يجب إرفاق لوحة nRF52840 DK بالجهاز المضيف من خلال
منفذ تصحيح الأخطاء، كما هو موضّح في مقالة فلاش برمجة
nRF52840. لتشغيل أداة التتبُّع Pyspinel،
استخدِم العلامة -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 للحصول على مزيد من المعلومات حول تشغيل أداة فحص Pyspinel.
اتصال USB أصلي
يتطلب استخدام منفذ USB في nRF52840 DK ot-rcp
ثنائي الترميز
أن يتم إنشاؤه باستخدام USB_trans
:
./script/build nrf52840 USB_trans
فلش جهاز nRF52840 DK، وربطه بالجهاز المضيف من خلال منفذ USB، ثم استخدام العلامة --no-reset
وحذف العلامة -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.