شم الحزم مع Pyspinel

عرض المصدر على GitHub

يتناول هذا الدليل طريقة ضبط Wireshark وتشغيل Pyspinel لاستشعار حِزم البيانات من شبكة سلاسل المحادثات.

لاستخدام المكوّن الإضافي Wireshark supcaps لاختبار حِزم البيانات، يُرجى الرجوع إلى حِزمة الحزم باستخدام 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 على النحو الموضَّح في Flash 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.

خصائص شبكة سلاسل المحادثات

قبل المتابعة، احصل على الخصائص التالية لشبكة سلسلة المحادثات التي ترغب في التعرّف عليها. ستحتاج إليهما لإعداد Wireshark وتشغيل مُبدل Pyspinel.

بادئة محلية للشبكة المتداخلة

للحصول على البادئة المحلية للشبكة المتداخلة من جهاز في شبكة سلسلة المحادثات المستهدفة:

  1. باستخدام واجهة سطر الأوامر (CLI) على Openسلاسل:

    dataset active
    Mesh Local Prefix: fd33:3333:3344:0/64
    

  2. استخدام wpanctl مع NCP:

    wpanctl getprop IPv6:MeshLocalPrefix
    IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"
    

  3. باستخدام واجهة برمجة تطبيقات الويب في OTBR، اختَر الحالة. يتم إدراج بادئة الشبكة المتداخلة على أنها IPv6:MeshLocalPrefix مثل wpanctl.

القناة

للحصول على القناة من جهاز في شبكة سلاسل المحادثات المستهدفة:

  1. باستخدام واجهة سطر الأوامر (CLI) على Openسلاسل:

    channel
    15
    

  2. استخدام wpanctl مع NCP:

    wpanctl getprop NCP:Channel
    NCP:Channel = 15
    

  3. باستخدام واجهة برمجة تطبيقات الويب في OTBR، اختَر الحالة. تكون القناة مدرجة على أنها NCP:Channel مثل wpanctl.

مفتاح الشبكة

يستخدم Wireshark مفتاح مفتاح سلاسل المحادثات لفك تشفير الحِزَم بعد الالتقاط. للحصول على مفتاح الشبكة من جهاز في شبكة سلسلة المحادثات المستهدفة:

  1. باستخدام واجهة سطر الأوامر (CLI) على Openسلاسل:

    networkkey
    33334444333344443333444433334444
    

  2. استخدام wpanctl مع NCP:

    wpanctl getprop Network:Key
    Network:Key = [33334444333344443333444433334444]
    

لا يتوفر مفتاح شبكة سلاسل المحادثات في واجهة المستخدم التصويرية على الويب في OTBR.

خيارات السنفرة

الخيارات
-u or --uart
القيمة التلقائية
بلا - يجب تقديم هذا الخيار إذا كنت تستخدم جهازًا يستخدم اتصالاً تسلسليًا وليس من خلال مقبس.
الوصف
العلامة -u أو --uart متبوعة بمسار جهاز مثل /dev/ttyUSB0.
-c or --channel
القيمة التلقائية
11
الوصف
العلامة -c أو --channel متبوعة بالقناة التي تم إعدادها على شبكة سلاسل المحادثات، والتي يجب وفقًا لها اكتشاف حِزم البيانات.
--no-reset
القيمة التلقائية
تلغي هذه العلامة السلوك التلقائي.
الوصف
تكون علامة --no-reset مطلوبة إذا كان جهاز NCP متصلاً بالمضيف باستخدام اتصال USB الأصلي.
--crc
القيمة التلقائية
تلغي هذه العلامة السلوك التلقائي.
الوصف
العلامة --crc مطلوبة للمنصّات مثل TI وBoard Noconductor Thread. تعيد العلامة احتساب CRC لتجنّب التحذير "Bad FCS" (تسلسل التحقق من الإطار) في Wireshark.
-b or --baudrate
القيمة التلقائية
115200
الوصف
تُستخدَم العلامة -b أو --baudrate لإلغاء معدّل نقل البيانات التلقائي التلقائي. اضبط هذه القيمة على معدل الباود نفسه المُستخدَم مع إصدار NCP (ننصح باستخدام 460800).
--rssi
القيمة التلقائية
تلغي هذه العلامة السلوك التلقائي.
الوصف
يتم استخدام العلامة --rssi لضمان تضمين RSSI في ناتج pcap. يجب استخدام هذه العلامة في حال تفعيل الخيار تنسيق TI CC24xx FCS في Wireshark.
--tap
القيمة التلقائية
تلغي هذه العلامة السلوك التلقائي.
الوصف
تحدّد العلامة --tap تنسيق DLT_IEEE802_15_4_TAP(283) لشكل الإطار، مع رأس بديل يحتوي على بيانات TLV ذات بيانات وصفية (مثل FCS وRSSI وLQI والقناة). إذا لم يتم تحديده، سيتم استخدام DLT_IEEE802_15_4_WITHFCS(195) بشكل تلقائي مع RSSI وLQI الإضافي بعد إطار PHY مباشرة، كما هو في تنسيق TI CC24xx FCS. يجب استخدام هذه العلامة في حال تفعيل الخيار ITU-T CRC-16 في Wireshark. إذا لم يتم تفعيل هذا الخيار في Wireshark، لا تستخدم هذه العلامة.

تشغيل الشطيرة

تأكد من استخدام مسار الجهاز المحدد لبروتوكول NCP والقناة لشبكة سلاسل المحادثات التي تحاول التعرّف عليها.

في حال اتّباع هذا الدليل، يجب إرفاق nRF52840 DK مع الجهاز المضيف من خلال منفذ تصحيح الأخطاء، كما هو موضّح في Flash nRF52840. لتشغيل البندقية Pyspinel، استخدم العلامة -b لتحديد معدل الباود (إذا تم تغييره من الإعداد التلقائي) واحذف العلامة --no-reset.

إذا ضبطت Wireshark لعرض RSSI، عليك أيضًا تضمين العلامة --rssi عند تشغيل أداة sniffer. على سبيل المثال، للشعرة على القناة 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:

التقاط Wireshark

يُرجى الرجوع إلى مرجع مُوصّل Spinel للحصول على مزيد من المعلومات حول تشغيل مُعدّل Pyspinel.

اتصال USB أصلي

في حال استخدام منفذ USB nRF52840 DK، يجب استخدام OpenString.ot-rcp برامج ثنائية يتم إنشاؤها باستخدامUSB_trans :

./script/build nrf52840 USB_trans
Flash nRF52840 DK،توصيله بالجهاز المضيف من خلال منفذ USB ، ثم استخدِم--no-reset ثم احذف-b الإبلاغ عند تشغيل السنفرة:

python sniffer.py -c 15 -u /dev/ttyACM0 --crc --no-reset --rssi | wireshark -k -i -

المراجع

للحصول على أدوات إضافية لبلدان الشمال الأوروبي، يُرجى الاطّلاع على الموصّل الشمالي - سلسلة المحادثات استنادًا إلى nRF52840 مع Wireshark.