مرشحات USB في Wireshark: إيجاد الجهاز الصحيح مع USBPcap وusbmon وBus Scope
كيفية تصفية التقاطات USB حسب الجهاز ونقطة النهاية ونوع النقل وحزمة الإعداد والواجهة والتوقيت عندما يلتقط USBPcap أو usbmon حركة مرور كثيرة جدًا.
يمكن أن تصبح التقاطات USB ساحقة بسرعة. قد يحتوي الجهاز على لوحة مفاتيح وفأرة وكاميرا ويب ومحول بلوتوث وجهاز تخزين ومحول تسلسلي ورمز أمان وموزع داخلي نشط في نفس الوقت. عندما يبحث المستخدمون عن "مرشح USB في Wireshark"، أو "جهاز مرشح USBPcap"، أو "نقطة نهاية مرشح usbmon"، أو "كيف أجد جهاز USB الخاص بي في الالتقاط"، عادة ما يكون لديهم نفس المشكلة: "يحتوي الالتقاط على حركة مرور كثيرة جدًا وبنية غير كافية." تم بناء Bus Scope لجعل فحص USB أكثر مباشرة، لكن فهم مشكلة التصفية لا يزال مفيدًا. سواء جاء الالتقاط من USBPcap على Windows، أو usbmon على Linux، أو مصدر التقاط USB آخر، المفتاح هو تحديد الجهاز ثم تضييق التتبع حسب العنوان ونقطة النهاية ونوع النقل وطلب التحكم.
ابدأ بالتعداد
أسهل طريقة لتحديد جهاز USB هي الالتقاط من التوصيل. يحتوي التعداد على واصفات تسمى الجهاز ومعرّف البائع ومعرّف المنتج والتهيئات والواجهات ونقاط النهاية والتفاصيل الخاصة بالفئة.
ابحث عن:
- معرّف البائع
- معرّف المنتج
- واصف الجهاز
- واصف التهيئة
- واصفات الواجهة
- واصفات نقطة النهاية
- واصفات السلسلة
SET_ADDRESSSET_CONFIGURATION
إذا بدأت الالتقاط بعد أن يكون الجهاز قيد التشغيل بالفعل، قد ترى فقط حركة نقطة النهاية دون سياق الواصف. هذا يجعل التصفية أصعب لأن أرقام نقطة النهاية وحدها ليست كافية.
يمكن أن يتغير عنوان الجهاز
يعين المضيف عناوين جهاز USB أثناء التعداد. إذا انفصل الجهاز وأعاد الاتصال، قد يتغير العنوان. مرشح يعمل للاتصال الأول قد يفوت الاتصال الثاني.
هذا مهم عند تصحيح حلقات إعادة الضبط. إذا أعاد الجهاز تعداده بشكل متكرر، قد تحتاج إلى تتبع عناوين متعددة في التقاط واحد. تكشف واصفات المنتج/البائع أن تلك العناوين تنتمي إلى نفس الجهاز الفعلي.
يمكن لـ Bus Scope المساعدة في الحفاظ على تلك العلاقة مرئية بدلاً من إجبارك على خياطة تغييرات العنوان ذهنيًا.
تصفية حسب نقطة النهاية
بعد التهيئة، تستخدم معظم حركة البيانات نقاط النهاية. نقطة النهاية الصفرية هي التحكم. قد تكون نقاط النهاية الأخرى bulk أو interrupt أو isochronous.
معاني نقطة النهاية الشائعة:
0x00: control OUT على نقطة النهاية الصفرية0x80: control IN على نقطة النهاية الصفرية0x81: نقطة النهاية 1 IN0x01: نقطة النهاية 1 OUT0x82: نقطة النهاية 2 IN0x02: نقطة النهاية 2 OUT
بت الاتجاه مهم. 0x81 و0x01 ليسا نفس اتجاه نقطة النهاية. قد يستخدم المحول التسلسلي، على سبيل المثال، نقطة نهاية bulk OUT واحدة لبيانات المضيف إلى الجهاز ونقطة نهاية bulk IN واحدة لبيانات الجهاز إلى المضيف.
مرشحات نقطة النهاية مفيدة بعد أن تعرف بالفعل أي نقطة نهاية تحمل الحركة التي تهتم بها.
تصفية حسب نوع النقل
تعيش مشكلات USB المختلفة في أنواع نقل مختلفة:
- عمليات نقل التحكم: الواصفات، التهيئة، طلبات الفئة، أوامر البائع.
- عمليات نقل Bulk: التخزين، البيانات التسلسلية، بيانات البائع، العديد من أجهزة الالتقاط.
- عمليات نقل المقاطعة: إدخال HID، إشعارات الحالة، تقارير الكمون المنخفض.
- عمليات نقل Isochronous: الصوت، الفيديو، البث الحساس للتوقيت.
إذا فتح جهاز USB التسلسلي لكن لا يرسل بيانات، افحص عمليات نقل التحكم لترميز الخط وحالة خط التحكم، ثم نقاط نهاية bulk للحمولة. إذا بدأت كاميرا الويب لكن الفيديو فاسد، افحص عمليات نقل isochronous والإعدادات البديلة. إذا تصرف جهاز HID بشكل سيئ، افحص عمليات نقل المقاطعة وواصفات التقرير.
تصفية حسب نوع النقل تقلل الضوضاء مع الحفاظ على فئة الأدلة ذات الصلة.
تصفية حسب حزمة الإعداد
تتضمن عمليات نقل التحكم حزم إعداد. حزم الإعداد مفيدة للغاية لأنها تحدد اتجاه الطلب ونوعه ومستلمه ورمز الطلب وقيمته وفهرسه وطوله.
تشمل الأمثلة المهمة:
GET_DESCRIPTORSET_ADDRESSSET_CONFIGURATIONSET_INTERFACECLEAR_FEATURE- HID
GET_REPORT - HID
SET_REPORT - CDC
SET_LINE_CODING - CDC
SET_CONTROL_LINE_STATE - أوامر خاصة بالبائع
عندما يفشل الجهاز أثناء الإعداد، غالبًا ما تخبرك حزمة الإعداد بالضبط أي طلب أثار المشكلة.
اختيار التقاط USBPcap على Windows
على Windows، يلتقط USBPcap من وحدات تحكم مضيف USB. إذا كان لدى الجهاز وحدات تحكم متعددة، فإن اختيار وحدة التحكم الخاطئة قد ينتج التقاطًا بدون حركة مرور الجهاز المستهدف.
سير عمل عملي:
- افصل الجهاز المستهدف.
- ابدأ الالتقاط على وحدة التحكم المحتملة.
- وصّل الجهاز.
- ابحث عن واصفات التعداد.
- إذا لم يظهر شيء، جرب التقاط وحدة تحكم أخرى.
- بمجرد العثور على الجهاز، احتفظ بالالتقاط كمرجع.
قيمة Bus Scope هي جعل سير العمل هذا أقل غموضًا: الهدف هو محادثة جهاز USB، وليس مجرد قائمة حزم ضخمة.
التقاط usbmon على Linux
على Linux، يكشف usbmon عن حركة ناقل USB. رقم الناقل مهم. جهاز مدرج كـ Bus 003 Device 012 ينتمي إلى الناقل 3 في تلك اللحظة. بعد إعادة الاتصال، قد يتغير رقم الجهاز.
أكثر التقاط فائدة يبدأ قبل التوصيل، لأن التعداد يكشف هوية الجهاز. إذا كان الإذن يحظر الالتقاط، فحل ذلك أولاً؛ وإلا قد ترى فقط فشل على مستوى التطبيق ولا ترى أدلة USB أبدًا.
أخطاء التصفية الشائعة
تجنب هذه الأخطاء:
- التصفية فقط بعد الفشل، وفقدان التعداد.
- افتراض أن عنوان الجهاز مستقر عبر إعادة الاتصالات.
- الخلط بين اتجاه نقطة النهاية.
- تجاهل حركة التحكم لنقطة النهاية الصفرية.
- النظر فقط إلى حزم الحمولة وفقدان طلبات الفئة.
- معاملة جميع طلبات البائع كضوضاء.
- تصفية إعادة الضبط والأخطاء في وقت مبكر جدًا.
- تجاهل سياق الموزع والمنفذ.
المرشح النظيف مفيد فقط إذا كان يحافظ على الفشل.
ما يجب الاحتفاظ به في التقاط التحقيق
لتقرير يمكنك مشاركته مع فريق البرامج الثابتة أو برنامج التشغيل أو QA، احتفظ بـ:
- التعداد الأولي.
- واصفات الجهاز المستهدف.
- التهيئة والواجهة المحددة بواسطة المضيف.
- طلبات الفئة أو البائع قبل الفشل.
- حركة نقطة النهاية المشاركة في الفشل.
- حدث إعادة الضبط أو التوقف أو المهلة أو الانفصال.
- سياق توقيت كافٍ لإظهار ما إذا كان الفشل فوريًا، أم مرتبطًا بالخمول، أم مرتبطًا بالحمل.
هذا الدليل أقوى من لقطة شاشة لـ "الجهاز غير معروف".
التشخيص النهائي
تصفية USB ليست فقط حول إخفاء الضوضاء. إنها حول الحفاظ على تسلسل الحزم الذي يشرح الفشل. ابدأ من التعداد، وحدد الجهاز، وتابع تغييرات العنوان، وضيّق حسب نقطة النهاية ونوع النقل، وحافظ على طلبات التحكم مرئية.
يهدف Bus Scope إلى دعم سير العمل هذا: إيجاد محادثة USB الحقيقية بسرعة، ثم فحص أدلة مستوى الناقل التي تشرح لماذا يعمل الجهاز، أو يتوقف، أو يعيد الضبط، أو يختفي.