أداة USB Raw ، وهي وحدة نمطية لـ Kernel تسمح بمحاكاة أجهزة USB

أداة USB Raw

بالفعل في بعض المناسبات تحدثنا هنا في المدونة عن العمل الذي قام به أندري كونوفالوف (أحد مطوري Google) في Linux ، من عمله في الكشف عن الأعطال في الوقت المناسب في برامج تشغيل USB لنظام Linux Kernel وأيضًا في أجهزة Wifi.

الآن هو يعمل حاليا على تطوير وحدة نمطية جديدة لـ Linux Kernel والتي أطلق عليها اسم "أداة USB Raw" التي توصف بأنها أداة تسمح بمحاكاة أجهزة USB في مساحة المستخدم.

إلى جانب ذلك يذكر أنه يتم النظر في أحد التطبيقات لتضمين هذه الوحدة في نواة Linux الرئيسية. يتم استخدام Google Raw Gadget بالفعل من قبل Google لتبسيط الاختبار الضبابي لمكدس USB kernel باستخدام مجموعة أدوات syzkaller.

في البداية كنت أستخدم GadgetFS (جنبًا إلى جنب مع وحدة Dummy HCD / UDC) لمحاكاة أجهزة USB للتشويش ، ولكن بعد ذلك تم تحويلها إلى واجهة مكتوبة مخصصة.

كان الحافز لتنفيذ واجهة مختلفة هو توفير وصول مباشر إلى حد ما إلى طبقة USB Gadget لمساحة المستخدم ، حيث يتم تمرير كل طلب USB إلى مساحة المستخدم للرد.

حول أداة USB Raw

تهتم الوحدة بإضافة واجهة جديدة البرمجة إلى النظام الفرعي kernel تسمى "أداة USB" والتي يتم تطويرها كبديل لـ GadgetFS.

يرجع إنشاء واجهة برمجة تطبيقات جديدة إلى الحاجة إلى الوصول المباشر ومنخفض المستوى إلى النظام الفرعي Gadget USB من مساحة المستخدم ، مما يسمح بمعالجة جميع طلبات USB المحتملة (تعالج GadgetFS بعض الطلبات من تلقاء نفسها ، دون نقلها إلى مساحة المستخدم).

يتم التحكم في أداة USB Raw عبر جهاز / dev / raw-gadget عن طريق القياس مع / dev / gadget في GadgetFS ، ولكن يتم استخدام واجهة تعتمد على ioctl () ، بدلاً من pseudo-FS ، للتفاعل.

بالإضافة إلى المعالجة المباشرة لجميع طلبات USB من خلال عملية في مساحة المستخدم ، تتمتع الواجهة الجديدة أيضًا بالقدرة على إرجاع أي بيانات استجابة لطلب USB (يتحقق GadgetFS من صحة واصفات USB وتصفية استجابات معينة ، مما يتداخل مع اكتشاف الخطأ أثناء اختبار مسح مكدس USB).

تتيح لك أداة USB Raw أيضًا تحديد جهاز UDC محدد (برنامج تشغيل جهاز USB) ومحرك للاتصال ، بينما يتصل GadgetFS بأول جهاز UDC متاح.

بالنسبة إلى UDCs المختلفة ، يتم تعيين أسماء نقاط النهاية التي يمكن التنبؤ بها لأنواع مختلفة من قنوات الاتصال المنفصلة داخل جهاز واحد.

أخيرًا ، إذا كنت تريد معرفة المزيد عنها ، فيمكنك التحقق من التفاصيل ، بالإضافة إلى سجل التغييرات التي تم إجراؤها في USB Raw Gadget في الرابط التالي.

كيفية تثبيت وحدة USB Raw Gadget في Linux؟

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

من أجل Dummy HCD / UDC (وحدة تقوم بتكوين أجهزة USB الافتراضية ووحدات تحكم المضيف المتصلة ببعضها البعض داخل النواة). يجب أن نفتح Terminal وفيها سنكتب الأمر التالي:

svn checkout https://github.com/xairy/raw-gadget/trunk/dummy_hcd

مع هذا ، سنحصل على المجلد الذي يحتوي على الوحدات التي سنقوم بتجميعها عن طريق تنفيذ الأمر التالي في الجهاز:

cd dummy_hcd

make

ونشرع في تثبيتها بـ:

./insmod.sh

في حال أردنا تحديث الوحدة ، نقوم بذلك باستخدام:

./update.sh

الآن بالنسبة لأولئك الذين يرغبون في تثبيت وحدة kernel. في الطرفية ، سنحصل على الملفات اللازمة لذلك عن طريق تنفيذ الأمر التالي:

svn checkout https://github.com/xairy/raw-gadget/trunk/raw_gadget

مع هذا ، سنحصل على المجلد الذي يحتوي على الوحدات التي سنقوم بتجميعها عن طريق تنفيذ الأمر التالي في الجهاز:

cd dummy_hcd

make

ونشرع في تثبيتها بـ:

./insmod.sh

في حال أردنا تحديث الوحدة ، نقوم بذلك باستخدام:

./update.sh

يمكنك التحقق من العمل في الرابط التالي. 


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: AB Internet Networks 2008 SL
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.