BadUSB
usbexec / ux — مُنفِّذ DuckyScript
ينفّذ سكربتات حقن ضغطات المفاتيح. متوافق مع DuckyScript v1 الخاص بـ Flipper Zero. ويمكن تسليم السكربت نفسه عبر USB HID (وصّل الكابل) أو BLE HID (يعمل T-Deck لوحةَ مفاتيح Bluetooth) — انظر قسم BadBLE أدناه.
CMD> ux demo # USB، عرض مدمج (يكتشف نظام التشغيل ويرسم العنقاء)
CMD> ux /apps/badusb/scripts/payload.txt # USB، من بطاقة SD
CMD> ux ble # BLE، قائمة تفاعلية (الوضع / الهدف / الاسم / السكربت)
CMD> ux ble demo # BLE، لوحة مفاتيح جديدة
CMD> ux ble clone 3 payload.txt # BLE، انتحال الجهاز رقم 3 من آخر مسح sbl
CMD> ux ble name "Magic Keyboard" demo # BLE، اسم إعلان مخصّص
تقع السكربتات في /apps/badusb/scripts/ على بطاقة SD (تُنشَأ عند أوّل إقلاع).
العرض المدمج (ux demo) — واعٍ بنظام التشغيل
يكتب العرض عنقاء الأنقاء برسم ASCII. عبر USB يقوم أولًا باكتشاف نظام التشغيل (فحص مؤشّر NumLock، نفس طريقة ux auto) ويفتح الهدف المناسب قبل الرسم:
| النظام | ما يفتحه |
|---|---|
| Windows | Win+R ← notepad |
| macOS | Cmd+Space (Spotlight) ← TextEdit ← Cmd+N |
| Linux | Ctrl+Alt+T (طرفية) ← أمر cat (heredoc) يطبع الرسم |
لا يستطيع ux ble demo قراءة مؤشّر NumLock عبر BLE، فيرجع إلى مقدّمة Windows.
الأوامر المدعومة
| الأمر | الوصف |
|---|---|
REM / // | تعليق |
DELAY <ms> | انتظار |
DEFAULT_DELAY <ms> | تأخير بعد كل سطر |
STRING <text> | كتابة نصّ |
STRINGLN <text> | كتابة نصّ + Enter |
REPEAT <n> | تكرار السطر السابق |
HOLD <key...> | ضغط وإبقاء مفاتيح/معدّلات — لا تُطلَق |
RELEASE | إطلاق كل ما أبقاه HOLD |
WAIT_FOR_BUTTON_PRESS | إيقاف حتى نقر كرة التتبّع |
GUI CTRL ALT SHIFT | المعدّلات |
ENTER BACKSPACE TAB ESC DEL | مفاتيح خاصّة |
UP DOWN LEFT RIGHT F1–F24 | التنقّل + مفاتيح الوظائف |
تركيبات المعدّلات
الصيغتان متكافئتان:
CTRL ALT DELETE # مفصولة بمسافات
CTRL-ALT DELETE # موصولة (صيغة Flipper Zero)
الإلغاء
اضغط q على T-Deck — يتوقّف السكربت عند حدّ DELAY التالي.
BadBLE — ux عبر BLE HID
سبّق أي استدعاء ux بـ ble لتشغيل DuckyScript عبر Bluetooth LE HID بدل USB. يُعلن T-Deck نفسه لوحةَ مفاتيح BLE؛ وبمجرّد اتصال مضيف، يكتب المحرّك نفسه الحمولة. بلا كابل.
ux ble # قائمة تفاعلية (موصى به)
ux ble demo # لوحة مفاتيح جديدة، تشغيل العرض
ux ble <script> # لوحة مفاتيح جديدة، تشغيل سكربت SD
ux ble name "<Name>" <script> # انتحال اسم إعلان مخصّص
ux ble clone <mac|#> <script> # استنساخ MAC بأسلوب BLESA (انظر أدناه)
الوضع التفاعلي (ux ble)
ux ble المجرّد يفتح مسارًا موجّهًا، بلا صياغة تُحفَظ:
- الوضع — اتصال (لوحة جديدة) أو انتحال (استنساخ جهاز مرتبط)
- الهدف (للانتحال فقط) — جدول بأسلوب
sblيعرض MAC الكامل (# NAME RSSI AT MAC، مرتّبًا بـ RSSI). يعرض القائمة نفسها من آخر مسحsbl؛ و[u]يجري مسحًا جديدًا. والصفوف الخضراء*/rndقابلة للاستنساخ فعلًا (عنوان static-random)؛ أمّا الرماديةpub/RPA فبالاسم فقط. اضغط[i]لفحص GATT للجهاز المحدَّد بـbi(يكشف اسمه الحقيقي وخدماته ووضعيته الأمنية) دون مغادرة المُنتقي. - الاسم — يستخدم الانتحال تلقائيًّا اسم الهدف الحقيقي المُعلَن (لا افتراضيًّا يكشف النسخة). فإن كان الهدف بلا اسم، ظهرت قائمة أسماء معقولة (Keyboard / Magic Keyboard / … / مخصّص)؛ وإن كنت قد فحصته بـ
[i]وكشف اسمًا حقيقيًّا (GAP 0x2A00) عُرِض محدَّدًا مسبقًا(found). - السكربت — اختر ملفًّا من
/apps/badusb/scripts/أو العرض المدمج
كرة التتبّع أو 1/2 للاختيار، Enter/نقر للاختيار، q للعودة شاشة.
إن انقطع مضيف BLE في منتصف الحمولة، يُلغى التشغيل (
Host disconnected.) بدل الكتابة في وصلة ميّتة.
وضعان
| الوضع | الأمر | كيف يصل للمضيف |
|---|---|---|
| اتصال (جديد) | ux ble … | يُعلن لوحة جديدة؛ فتتّصل بها الضحية (بلا PIN، بلا ارتباط) |
| انتحال (استنساخ) | ux ble clone <mac\|#> … | ينتحل لوحة مرتبطة فيعيد المضيف الاتصال بها تلقائيًّا |
- بلا PIN، بلا ارتباط — اتصل، احقن، اقطع، لا شيء يبقى على المضيف. (يتطلّب HID-over-GATT وصلة مشفّرة، فيستخدم اقتران Just Works بلا ارتباط.)
- MAC عشوائي — عنوان عشوائي جديد كل جلسة
ux ble، فلا يترك T-Deck هويّة Bluetooth ثابتة. والاستنساخ الناجح يستخدم MAC الهدف بالضبط. - لوحة
btkbd(bk) غير متأثّرة — تبقى بعنوانها الثابت المرتبط.
الاستنساخ / BLESA — حدود (بصراحة)
ينتحل الاستنساخ MAC + نوع العنوان + الاسم المُعلَن + اسم GAP للوحة مرتبطة فيعيد المضيف المقترن بها الاتصال. ولا يعمل إلّا حين:
- يستخدم الهدف عنوان static-random — يرفض متحكّم ESP32 العناوين العامّة و RPA، فتلك بالاسم فقط (يعرض المُنتقي
*على القابلة للاستنساخ؛ وإلّا يقولMAC spoof FAILED (RPA/public)). - المضيف معرّض لـ BLESA / لا يعيد المصادقة عند إعادة الاتصال — الحُزَم المُرقَّعة تطلب المفتاح الأصلي وتُسقِط الوصلة.
- الجهاز الحقيقي مطفأ / خارج النطاق — حتى يعيد المضيف الاتصال بـ T-Deck. ولا يستطيع ESP32 تشويش الجهاز الحقيقي.
موسوم [EXP]. وهو أداة تدقيق عزل/مصادقة إعادة اتصال، لا اختطاف مضمون.