
نفّذ جهاز USB الخاص بك بلغة Python، مدعومًا بطرفية عتادية مثل Cynthion أو GreatFET
يضم هذا المستودع الجيل التالي من برمجيات Facedancer. ينحدر من Facedancer الأصلي القائم على GoodFET، ويوفر هذا المستودع وحدة Python تقدّم دعمًا موسّعًا لـ Facedancer -- بما في ذلك دعم لوحات متعددة وبعض الميزات الجديدة المهمة جدًا.
توثيق Facedancer متاح على Read the Docs. مصادر التوثيق الخام موجودة في مجلد docs/.
ثبّت هذه الحزمة بالأمر التالي:
pip install facedancer
بعد ذلك يمكنك استيراد حزمة facedancer كالمعتاد:
$ python
>>> import facedancer
Facedancer 3.0 هو إعادة كتابة كاملة من الصفر لنواة المحاكاة الأصلية ولا يدعم السكربتات القديمة.
إذا كنت تستخدم سكربتات أو مواد تدريبية تعتمد على ميزات
أو واجهات برمجية مهجورة في v3.0.x، يمكنك تثبيت أحدث إصدار
v2.9.x من Facedancer باستخدام:
pip install "facedancer<=3"
يمكن العثور على التطبيقات والأمثلة القديمة في فرع v2.9.x.
لوحات Facedancer هي أجهزة عتادية بسيطة تعمل كوحدات تحكم USB "تُتحكَّم عن بُعد". باستخدام البرمجيات المناسبة، يمكنك استخدام هذه اللوحات لمحاكاة أجهزة USB بسرعة وسهولة -- ولاختبار (fuzz) وحدات تحكم مضيف USB!
يتيح لك هذا المستودع البرمجي تحديدًا إنشاء محاكاة لأجهزة USB في Python بسهولة. التحكم دقيق بما يكفي لتتمكن من إحداث جميع أنواع السلوكيات الخاطئة في USB. :)
لمزيد من المعلومات، راجع:
من الميزات الجديدة الرئيسية في قاعدة شيفرة Facedancer الأحدث هي القدرة على تنفيذ MITM (Meddler-In-The-Middle) على اتصالات USB -- لتحل محل أحد مشاريع المؤلفين الأصلية USBProxy. يفتح هذا عالمًا جديدًا بالكامل من التطبيقات -- بما في ذلك تحليل البروتوكولات والتلاعب المباشر بحزم USB -- وهو مفيد بشكل خاص عندما لا تتحكم بالبرمجيات التي تعمل على الجهاز الهدف (مثل الأنظمة المدمجة أو أجهزة الألعاب).
+-----------------------------------------------------------------------+
+------------+ | +--------------------------------+ +---------------------------+ | +--------------+
| | | | | | | | | |
| PROXIED | | | HOST COMPUTER | | FACEDANCER DEVICE | | | TARGET USB |
| DEVICE <------> running Facedancer software <---> acts as USB-Controlled <------> HOST |
| | | | | | USB Controller | | | |
| | | | | | | | | |
+------------+ | +--------------------------------+ +---------------------------+ | +--------------+
| |
| MITM Setup (HOST + FACEDANCER) |
+-----------------------------------------------------------------------+
هذه الميزة مكتملة، لكنها تحتاج إلى مزيد من التوثيق. طلبات السحب (Pull requests) مرحّب بها. :)
أولًا، ستحتاج على الأرجح إلى تعيين متغير البيئة BACKEND، الذي يُعلِم
البرمجيات بنوع لوحة Facedancer التي تريد استخدامها. إذا لم يُعيَّن هذا المتغير،
ستحاول البرمجيات التخمين نيابةً عنك بناءً على ما هو متصل. لا تكون
تخميناتها الأفضل دائمًا، لذا من الأفضل على الأرجح تعيينه بنفسك.
بعد ذلك، ستحتاج على الأرجح إلى الاطلاع على أحد الأمثلة، أو أحد السكربتات الجاهزة.
توجد الأمثلة بالصيغة الجديدة تحت examples. أما سكربتات Facedancer الأساسية
بالصيغة "القديمة" فتوجد في legacy-applets.
على سبيل المثال:
export BACKEND=greatfet
./examples/rubber-ducky.py
BACKEND=cynthion)BACKEND=greatfet)BACKEND=greatfet)BACKEND=greatfet)BACKEND=goodfet)BACKEND=raspdancer)BACKEND=hydradancer)لاحظ أن قيود العتاد تمنع لوحات MAX3420/MAX3421 من محاكاة أجهزة أكثر تعقيدًا -- فهناك قيود على عدد/نوع نقاط النهاية (endpoints) التي يمكن إعدادها. أما لوحات LPC4330 -- مثل GreatFET -- فلها قيود أقل.
ولسبب مشابه، لا يمكن حاليًا استخدام لوحات MAX3420/MAX3421 (BACKEND=goodfet أو BACKEND=raspdancer)
كأجهزة USBProxy-nv MITM. أما جميع اللوحات الحديثة (BACKEND=greatfet، BACKEND=hydradancer)
فيُفترض أن تكون فعّالة بالكامل.
لاحظ أن لوحات HydraDancer و HydraUSB3 (BACKEND=hydradancer) لا تدعم حاليًا وضع المضيف (host-mode).
كما أن FaceDancer 3.0 الفعلي لا يعمل على Windows (بعض المشكلات في pyusb...) وعلى GNU/Linux فقط
خارطة الطريق قيد التطوير، لكن بالإضافة إلى دعم اللوحات المتعددة، سيضم هذا المستودع في النهاية بعض الميزات الجديدة الرائعة، بما في ذلك:
هناك الكثير من الأشخاص الذين نُحمّلهم مسؤولية الروعة التي يمثلها هذا المستودع، بمن فيهم:
... مرحّب بها دائمًا. أرسل لنا PR!