تقصير الحزمة باستخدام Extcap

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

يتناول هذا الدليل كيفية ضبط extcap لبرنامج Wireshark لرصد الحِزم من شبكة Thread.

لاستخدام Pyspinel في التقاط حِزم البيانات بدون extcap، يُرجى الاطّلاع على مقالة التقاط حِزم البيانات باستخدام Pyspinel.

إعداد بيئة أداة الاستماع

قبل البدء، عليك إكمال الخطوات التالية:

التحقّق

تم التحقّق من صحة هذا الدليل باستخدام Zolertia Firefly (Texas Instruments CC2538 SoC) على الأنظمة المستضافة التالية:

  • ‫Debian 4.19.37 - Wireshark 3.0.4
  • ‫macOS Mojave 10.14.6 - Wireshark 3.0.5
  • الإصدار 17134 من نظام التشغيل Windows 10‏ (64 بت) - الإصدار 3.0.6 من Wireshark

إنشاء أداة الاستماع وفلاشها

تختلف تعليمات الإنشاء والفلاش باختلاف المنصة.

للحصول على تعليمات حول إنشاء ملف CC2538 وبرمجته، يُرجى الرجوع إلى مثال ملف CC2538 README على GitHub.

للحصول على تعليمات عامة حول عملية الإنشاء، يُرجى الاطّلاع على كيفية إنشاء OpenThread.

استخدام أداة التتبُّع

تظهر شاشة تسجيل Wireshark عند تشغيل Wireshark لأول مرة. ومن المفترض أن يعرض واجهات الأجهزة المتصلة بجهاز استشعار OpenThread.

الالتقاط من واجهة واحدة

إذا كانت هذه هي المرة الأولى التي تستخدم فيها واجهة، انقر على الزر الخيارات على يمين الواجهة:

OT Sniffer Wireshark Extcap Capture

  1. اضبط القناة على القيمة المطلوبة.
  2. تحقَّق من IEEE 802.15.4 TAP للتأكّد من أنّه تم تضمين معلومات القناة في إخراج pcap ويمكن عرضها في واجهة مستخدم Wireshark.
  3. ضَع علامة في المربّع بجانب حفظ المَعلمات عند بدء الالتقاط لضمان حفظ هذه المَعلمات بعد بدء الالتقاط، وذلك لتجنّب الحاجة إلى ضبطها مرة أخرى في المرة التالية التي تستخدم فيها الواجهة (ما لم تكن بحاجة إلى تغيير القناة).
  4. انقر على بدء.

خيارات OT Sniffer Wireshark Extcap

إذا سبق أن حفظت المَعلمات، ابدأ عملية التقاط البيانات عن طريق اختيار واجهة الصعِد والنزول والنقر على رمز Wireshark في أعلى يمين الشاشة.

الالتقاط من واجهات متعددة

اختَر جميع واجهات الأجهزة المدرَجة في شاشة التسجيل وانقر على رمز Wireshark في أعلى يمين الشاشة.

استخدِم هذه الحقول لتحديد أجهزة الاستشعار الفردية عند التسجيل من عدة واجهات:

  • رقم تعريف الواجهة (frame.interface_id): معرّف الواجهة المستخدَم في Wireshark لتحديد واجهة الالتقاط
  • اسم الواجهة (frame.interface_name)‏: اسم الواجهة المستخدَم في Wireshark لتحديد واجهة الالتقاط
  • القناة (wpan-tap.ch_num)‏: قناة الالتقاط وفقًا لمعيار IEEE 802.15.4 (النطاق: من 11 إلى 26)

حِزم OT Sniffer Wireshark Extcap

تحديد المشاكل وحلّها

عدم إدراج أداة فحص OpenThread كواجهة Wireshark

  1. إذا كان لديك عدة مفسّرات Python مثبّتة، تأكَّد من أنّ نص extcap البرمجي يستخدم مفسّر Python 3. لا يتوافق Pyspinel مع Python 2.
  2. تحقَّق مما إذا كان قد تم إدراج الجهاز على منفذ USB وتم تحميل برامج التشغيل.
  3. تأكَّد من أنّه تم فلاش الإصدار الصحيح من البرامج الثابتة (NCP أو RCP) على الأجهزة.
  4. تأكَّد من أنّ النص البرمجي Python المتوفّر في مسار extcap قابل للتنفيذ.
    • بالنسبة إلى نظامَي التشغيل OS X وLinux:
      1. تأكَّد من توفّر إذن التنفيذ لملف extcap_ot.py :
        ls -l extcap_ot.py
        
      2. إذا لم يكن إذن التنفيذ (x) متوفّرًا، عدِّل الأذونات:
        chmod +x extcap_ot.py
        
      3. تأكَّد من إدراج الواجهة:
        extcap_ot.py --extcap-interfaces
        
    • بالنسبة إلى نظام التشغيل Windows:
      1. تأكَّد من إدراج الواجهة:
        extcap_ot.bat --extcap-interfaces
        
      2. إذا خرج هذا الأمر بخطأ في Python، تأكَّد من أنّ إصدار Python هو 3.x:
        py -3 --version
        

لا يسمح Wireshark إلا لمستخدم الجذر بتسجيل الحِزم.

أثناء تثبيت Wireshark على Ubuntu، سيُطلَب من المستخدم اختيار أحد الخيارات التالية:

  1. أنشئ مجموعة مستخدمين wireshark واسمح لجميع أعضاء هذه المجموعة بتسجيل الحِزم.
  2. السماح لمستخدم root فقط بتسجيل الحِزم

لا يُنصح باستخدام Wireshark كمستخدم root. إذا اخترت هذا الخيار، غيِّر الإعدادات:

sudo dpkg-reconfigure wireshark-common

إذا تم ضبط Wireshark على حصر عملية الالتقاط بأعضاء مجموعة wireshark، قد تحتاج إلى إضافة المستخدم الصحيح إلى المجموعة:

sudo usermod -a -G wireshark user

أضِف أيضًا المستخدم الصحيح إلى مجموعة dialout:

sudo usermod -a -G dialout user

أغلِق Wireshark وأعِد تشغيله لتطبيق إعدادات مجموعة المستخدمين الجديدة.

خطأ في تنسيق Wireshark عند التسجيل على واجهات USB متعددة على نظام التشغيل Windows

هذه مشكلة معروفة في بعض الإصدارات القديمة من Wireshark. تأكَّد من استخدام Wireshark 3.0.6 أو إصدار أحدث.