الاطّلاع على المصدر على GitHub
يتناول هذا الدليل طريقة ضبط Wireshark وتشغيل Pyspinel لاصطحاب حِزم البيانات من شبكة Thread.
لاستخدام المكوّن الإضافي Wireshark extcap الخاص بالتعرّف على حِزم البيانات، يُرجى الرجوع إلى مقالة التقاط حِزم البيانات. باستخدام extcap.
إعداد بيئة الالتقاط
قبل البدء، أكمِل الخطوات التالية:
أنشِئ قصّتَي الشرطة
أنشِئ جهاز NCP وشغِّله ليكون بمثابة أداة الرصد، وذلك باستخدام إخراج ot-rcp
الثنائي.
شمال nRF52840
لإعداد مثال 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. .
بادئة الشبكة المحلية المتداخلة
للحصول على "بادئة الشبكة المتداخلة" المحلية من جهاز في شبكة سلسلة المحادثات المستهدَفة:
استخدام واجهة سطر الأوامر 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، حدد الحالة. تم إدراج بادئة الشبكة المحلية بصيغة IPv6:MeshLocalPrefix مماثلة لـ
wpanctl
.
القناة
للحصول على القناة من جهاز في شبكة Thread المستهدَفة:
استخدام واجهة سطر الأوامر OpenThread:
channel
15استخدام
wpanctl
مع NCP:wpanctl getprop NCP:Channel
NCP:Channel = 15باستخدام واجهة المستخدم الرسومية على الويب OTBR، حدد الحالة. القناة مدرجة على أنها NCP:قناة مشابهة لـ
wpanctl
.
مفتاح الشبكة
يستخدم Wireshark مفتاح شبكة Thread لفك تشفير الحزم بعد الحصول عليها. للحصول على مفتاح الشبكة من جهاز في شبكة Thread المستهدَفة:
استخدام واجهة سطر الأوامر OpenThread:
networkkey
33334444333344443333444433334444استخدام
wpanctl
مع NCP: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:
راجِع أداة استقصاء Spinnel. المرجع الخاص بـ مزيد من المعلومات حول تشغيل أداة التقاط Pyspinel.
اتصال USB الأصلي
لاستخدام منفذ USB بتنسيق nRF52840 DK، يجب توفُّر برنامج ثنائي OpenThread ot-rcp
.
سيتم إنشاؤها باستخدام USB_trans
:
./script/build nrf52840 USB_trans
--no-reset
.
ولكن سيتم حذف العلامة -b
عند تشغيل أداة الالتقاط:
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -
الموارد
للحصول على المزيد من أدوات شمال أوروبا، راجِع أشباه الموصلات — Thread تعتمد Sniffer على nRF52840 مع Wireshark.