Google is committed to advancing racial equity for Black communities. See how.

شم الحزم مع Pyspinel

و Pyspinel يربط أداة الشم إلى الموضوع NCP أو جهاز الحزب الشيوعي الثوري ويحوله إلى علبة الشم منحل، وتوليد تمويله (التقاط حزم) تيار ليتم حفظها أو الأنابيب مباشرة إلى إيثار ريال.

Wireshark هي أداة مفتوحة المصدر يمكنها فك تشفير بروتوكولات الشبكة في مكدس الخيط ، مثل IEEE 802.15.4 و 6LoWPAN و IPv6 و MLE (إنشاء ارتباط الشبكة) و UDP و CoAP.

يغطي هذا الدليل كيفية تكوين Wireshark وتشغيل Pyspinel لاستنشاق الحزم من شبكة Thread.

لاستخدام البرنامج المساعد للإيثار ريال extcap لعلبة استنشاق، انظر حزم الشم باستخدام extcap .

متطلبات

المعدات:

  • آلة مضيفة لتكون بمثابة نقطة اتصال وتشغيل Pyspinel و Wireshark:
    • macOS - 64 بت OS X 10.6 أو أحدث
    • أوبونتو
  • 1 جهاز OpenThread تومض مع ot-ncp-ftd أو ot-rcp البناء.

برمجة:

التركيب

قم بإعداد بيئة الشم

استنساخ وتثبيت Pyspinel والتبعيات:

  1. تثبيت تبعيات:
    sudo apt install python3-pip
    pip3 install --user pyserial ipaddress
  2. استنساخ مستودع Pyspinel:
    git clone https://github.com/openthread/pyspinel
  3. تثبيت Pyspinel:
    cd pyspinel
    python3 setup.py install

بدلا من ذلك، إعداد البيئة عن طريق تثبيت pyspinel الحزمة. علما بأن هذه الحزمة تستخدم Pyspinel الإفراج v1.0.0a3 وليس الأخير Pyspinel الرئيسية.

pip3 install --user pyspinel

قم بتثبيت Wireshark

لينكس

افتح Terminal وقم بتشغيل الأوامر التالية لتنزيل Wireshark وتثبيته:

sudo add-apt-repository ppa:wireshark-dev/stable
sudo apt-get update
sudo apt-get install wireshark

نوصي بتشغيل Wireshark كمستخدم غير جذر. للقيام بذلك ، أعد تكوين الحزمة:

sudo dpkg-reconfigure wireshark-common

عندما تحصل على الحوار يسأل "سوفت غير مستخدم خارق، تكون قادرة على التقاط حزم؟"، حدد نعم، ثم قم بإضافة wireshark أذونات المستخدم وملف التحديث:

sudo adduser $USER wireshark
sudo chmod +x /usr/bin/dumpcap

macOS

تحميل وتثبيت إيثار ريال لماك.

بناء الشم

بناء وفلاش جهاز حزب المؤتمر الوطني لتكون بمثابة الشم، وذلك باستخدام ot-rcp الناتج ثنائي.

الشمال nRF52840

لإعداد مثال Nordic nRF52840 لاستخدامه كشم:

  1. استنساخ openthread / OT-nrf528xx وإعداد بيئة بناء:
    git clone https://github.com/openthread/ot-nrf528xx --recursive
    ./script/bootstrap
    
  2. مجموعة بالباود كما 460800. العثور على خط #define UART_BAUDRATE NRF_UARTE_BAUDRATE_115200 في src/nrf52840/transport-config.h ، واستبدالها مع #define UART_BAUDRATE NRF_UARTE_BAUDRATE_460800 .
  3. بناء ثنائي:
    ./script/build nrf52840 UART_trans
    
  4. تحويل ot-rcp الناتج ثنائي إلى عرافة:
    arm-none-eabi-objcopy -O ihex build/bin/ot-rcp ot-rcp.hex
    
  5. وميض ot-rcp.hex الملف إلى مجلس nRF52840 على النحو المفصل في فلاش وnRF52840 .
  6. تعطيل قداس جهاز تخزين (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 sniffer.

البادئة المحلية المعشقة

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

  1. باستخدام OpenThread CLI:
    dataset active
    Mesh Local Prefix: fd33:3333:3344:0/64
    
  2. باستخدام wpanctl مع حزب المؤتمر الوطني:
    wpanctl getprop IPv6:MeshLocalPrefix
    IPv6:MeshLocalPrefix = "fd33:3333:3344:0::/64"
    
  3. استخدام الانترنت واجهة المستخدم الرسومية OTBR، حدد الحالة. يتم سرد شبكة البادئة المحلية كما الإصدار IPv6: MeshLocalPrefix مماثلة ل wpanctl .

قناة

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

  1. باستخدام OpenThread CLI:
    channel
    15
    
  2. باستخدام wpanctl مع حزب المؤتمر الوطني:
    wpanctl getprop NCP:Channel
    NCP:Channel = 15
    
  3. استخدام الانترنت واجهة المستخدم الرسومية OTBR، حدد الحالة. يتم سرد القناة كما NCP: قناة مشابهة ل wpanctl .

مفتاح الشبكة

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

  1. باستخدام OpenThread CLI:
    networkkey
    33334444333344443333444433334444
    
  2. باستخدام wpanctl مع حزب المؤتمر الوطني:
    wpanctl getprop Network:Key
    Network:Key = [33334444333344443333444433334444]
    

مفتاح شبكة الخيط غير متوفر في OTBR Web GUI.

تكوين Wireshark - البروتوكولات

يجب تكوين Wireshark لعرض حزم الموضوع بشكل صحيح.

اختر التفضيلات ... في إيثار ريال وتوسيع قسم البروتوكولات.

6LoWPAN

اختر 6LoWPAN من قائمة البروتوكولات والتحقق من صحة أو تغيير الإعدادات التالية:

  1. قم بإلغاء التحديد ID ينحدر وفقا لRFC 4944.
  2. تحديث السياق 0 مع بادئة المحلية شبكة لشبكة الهدف الموضوع.
OT Sniffer Wireshark 6LoWPAN

يستخدم Wireshark تكوينات السياق لتحليل عنوان IPv6 المضغوط وعرض عناوين IPv6 المصدر والوجهة بشكل صحيح.

لإظهار عناوين البادئات الأخرى الموجودة على الشبكة التي تم تكوينها على البوابة ، قم بتحديث معرفات السياق الأخرى بهذه البادئات.

للحصول على معرّف السياق لبادئة محددة على الشبكة ، اعرض مؤشر ترابط بيانات الشبكة TLV في أي رسالة استجابة لبيانات MLE. على سبيل المثال:

Context 1: fd00:7d03:7d03:7d03::/64

CoAP

اختر CoAP من قائمة البروتوكولات ووضع UDP ميناء CoAP إلى 61631. هذا يضمن الرسائل TMF (مثل عنوان اجتذاب) يتم عرضها.

IEEE 802.15.4

اختر IEEE 802.15.4 من قائمة البروتوكولات والتحقق من صحة أو تغيير الإعدادات التالية:

  1. تعيين 802.15.4 EtherType أو (في ست عشري) إلى "0x809a".
  2. تعيين جناح الأمن "AES-128 التشفير، حماية النزاهة 32 بت".
  3. انقر على تحرير ... الزر بجانب فك مفاتيح، والذي حيث يمكنك إضافة شبكة الموضوع ماجستير مفتاح لفك التشفير الحزمة.
    1. انقر علامة + لإضافة مفتاح فك التشفير.
    2. أدخل شبكة الموضوع ماجستير مفتاح في العمود مفتاح فك التشفير.
    3. أدخل "1" حيث أن مؤشر مفتاح فك التشفير.
    4. اختر التجزئة الموضوع من مفتاح مربع القائمة عمود التجزئة.
    5. OT Sniffer Wireshark IEEE 802.15.4
    6. انقر فوق موافق لحفظ مفتاح فك التشفير.

خيط

اختر الموضوع من قائمة البروتوكولات والتحقق من صحة أو تغيير الإعدادات التالية:

  1. أدخل "00000000" لتسلسل الموضوع العداد.
  2. قم بإلغاء التحديد من استخدام ID PAN كما الأولين الثمانية من المفتاح الرئيسي.
  3. تحقق تلقائيا الحصول الموضوع تسلسل العداد.

انقر على زر موافق لحفظ أية تغييرات البروتوكول.

قد يتم تحليل بعض حركة مرور مؤشر الترابط على أنها بروتوكول ZigBee. لعرض هذين البروتوكولين بشكل صحيح ، قم بتحرير البروتوكولات الممكّنة في Wireshark:

  1. في إيثار ريال، انتقل إلى تحليل> البروتوكولات الممكنة.
  2. قم بإلغاء تحديد البروتوكولات التالية:
    1. LwMesh
    2. زيجبي
    3. زيجبي جرين باور

تكوين Wireshark - RSSI

لعرض RSSI في Wireshark:

  1. الذهاب إلى تفضيلات> بروتوكولات> IEEE 802.15.4.
  2. تعيين تنسيق FCS:
    • إذا IEEE 802.15.4 TAP المعوقين: TI CC24xx الفوقية.
    • إذا IEEE 802.15.4 مكنت TAP: ITU-T CRC-16. انظر --tap العلم لمزيد من المعلومات.
  3. انقر فوق موافق لحفظ والعودة إلى القائمة تفضيلات.
  4. من تفضيلات، حدد المظهر> أعمدة.
  5. إضافة إدخال جديد:
    • العنوان: RSSI
    • النوع: مخصص
    • الحقول: wpan.rssi
OT Sniffer Wireshark RSSI

خيارات الشم

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

قم بتشغيل برنامج الشم

تأكد من استخدام مسار الجهاز المحدد لـ NCP الخاص بك والقناة لشبكة Thread التي تحاول شمها.

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

على سبيل المثال، إلى شم على قناة 15 باستخدام جهاز شنت في /dev/ttyACM0 مع آر إس إس آي المدرجة في إخراج يريشارك:

cd <path-to-pyspinel>
python sniffer.py -c 15 -u /dev/ttyACM0 --crc --rssi -b 460800 | wireshark -k -i -

يجب أن تكون الآن قادرًا على رؤية الحزم والبروتوكولات ذات الصلة لهذا التكوين في Wireshark:

Wireshark Capture

انظر المرجع الإسبنيل الشم لمزيد من المعلومات حول تشغيل Pyspinel الشم.

اتصال USB أصلي

يستخدم المنفذ USB nRF52840 DK يتطلب OpenThread 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 -

موارد

لمزيد من المعلومات حول كيفية استخدام Pyspinel و Wireshark ، راجع ما يلي: