TapDucky - أداة حقن ضغطات المفاتيح عبر USB HID لنظام Android
مشغل DuckyScript مفتوح المصدر لأجهزة Android المجذّرة مع دعم USB Gadget (ConfigFS)
TapDucky يتيح لك إنشاء وتخصيص وجدولة وتشغيل DuckyScript على Android عن طريق محاكاة لوحة مفاتيح أو فأرة أو جهاز HID مركب لأغراض الاختبار المصرح به والأتمتة. يتضمن معاملات الحمولات، ومشغلات جدولة متعددة، وسجلات تنفيذ، ومكتبة حمولات مدعومة من GitHub مع التحقق التلقائي من DuckyScript وتحويل Digispark .ino الاختياري.
نظرة عامة
- ملفات تعريف أجهزة USB HID (بدون الحاجة إلى دونجل USB خارجي على الأجهزة المدعومة/المجذّرة):
- ملفات تعريف لوحة المفاتيح والفأرة والمركب مع VID/PID قابل للتعديل، وسلاسل الشركة المصنعة/المنتج، واستهلاك الطاقة.
- خط أنابيب DuckyScript:
- تحقق مباشر مع مشكلات/تحذيرات قابلة للقراءة البشرية، ومعاملات عنصر نائب، ومضاعف تأخير، وارتعاش اختياري لتوقيت يشبه البشر.
- إدارة الحمولات:
- إنشاء/تعديل الحمولات مع الاسم/الوصف/العلامات/المعاملات، ومشاركة/تصدير سريع، وقوالب/معالج مدمج.
- متجر حمولات GitHub:
- إضافة مصادر، تصفح المستودعات، معاينة الملفات مع التحقق، استيراد البرامج النصية المدعومة؛ الكشف التلقائي عن DuckyScript وتحويل رسومات Digispark
.ino عند الإمكان.
- المجدول:
- مرة واحدة في تاريخ/وقت، عند بدء التطبيق البارد، عند ظهور التطبيق في المقدمة، أو عند تجهيز جلسة HID (device_connected)، مع نافذة زمنية يومية اختيارية.
- التنفيذ والسجلات:
- عرض تنفيذ مبوب، مطالبات المعاملات، تشغيل/إلغاء، سجل التنفيذ، وسجلات منظمة مع التصدير والمسح وفلتر المستوى.
- تشخيص الجهاز:
- لقطة سريعة للجهاز، حالة kernel/gadget، معلومات UDC، تخطيطات لوحة المفاتيح؛ نسخ إلى الحافظة؛ ملاحظة كشف المُحاكي.
ملاحظة: يلزم وجود جهاز مجذّر مع دعم USB gadget (ConfigFS) في Linux. استخدم جهازًا فعليًا لأن المحاكيات لا يمكنها التحقق من سلوك HID.
الميزات
-
محرر الحمولات والمعاملات
- إنشاء حمولات بالاسم/الوصف/العلامات.
- إضافة معاملات مكتوبة بقيم افتراضية، علامات إلزامية، وتجاوزات لكل تنفيذ.
- مدقق DuckyScript مدمج مع ربط السطر/المشكلة وعدد الأوامر.
- مشاركة حمولة واحدة أو تصدير حزمة.
-
متجر حمولات GitHub
- إدارة مصادر GitHub متعددة (المستخدم/المستودع/الفرع/المسار).
- تصفح الدلائل ومعاينة الملفات مع كشف التنسيق (DuckyScript، TapDucky JSON، نص Digispark (.ino) المحول).
- استيراد البرامج النصية المُتحقق منها مباشرة إلى مكتبتك؛ تظهر حالات الفشل في التحقق معاينة مسببة.
-
التنفيذ والاختبار
- التحقق قبل التشغيل؛ طلب قيم المعاملات؛ تشغيل أو إلغاء مع معرفات التنفيذ.
- اختبارات HID سريعة: ضغط مفتاح لوحة المفاتيح، تحريك الفأرة، وCtrl+Alt+Del.
- تقدير وقت التشغيل استنادًا إلى المحرك (يطابق نموذج التوقيت الفعلي).
- التحكم في Wakelock للحفاظ على الجلسات نشطة أثناء التنفيذ.
-
المجدول والمشغلات
- المشغلات: one_time (مرة واحدة)، app_cold_start (بدء التطبيق البارد)، app_foreground (ظهور التطبيق)، device_connected (تجهيز الجلسة).
- نافذة زمنية يومية اختيارية (HH:MM → HH:MM)، بما في ذلك الالتفاف عند منتصف الليل.
- تمكين/تعطيل، تعديل، وحذف الجداول؛ تتبع آخر تشغيل.
- ربط اختصارات الاتصال عبر رموز سرية (تجهيز تلقائي + تنفيذ في الخلفية).
- الرموز المدعومة: ##38250##, ##38251##, ##38252##, ##38253##
- مفاتيح الربط لكل رمز: ممكّن، الوضع (آخر تنفيذ | حمولة محددة)، الحمولة (عندما يكون الوضع = حمولة محددة)
-
الجهاز وملفات تعريف HID
- تفعيل ملفات تعريف لوحة المفاتيح أو الفأرة أو المركب مع المعرفات/السلاسل/الطاقة القابلة للتعديل.
- اختيار تخطيط لوحة المفاتيح وحل الرمز/المعرف.
- تيار الحالة يُظهر ACTIVE/IDLE، جاهزية الكاتب، وطلبات تكوين المضيف.
-
السجلات والسجل
- علامة تبويب السجلات مع فلتر المستوى (الكل/معلومات/تصحيح/تحذير/خطأ)، تصدير للمشاركة، مسح الكل.
- تفاصيل سجل التنفيذ مع البيانات الوصفية والمشاركة.
موجه للمستخدم
- لوحة القيادة مع بطاقات الحالة السريعة، إحصائيات الحمولات/المكتبة، وملخص المجدول.
- حالات فارغة واضحة ومعالجات خطوة بخطوة للإعداد الأولي/الاستيراد.
- سمة Material 3، أنظمة ألوان ديناميكية فاتحة/داكنة.
تقني/معماري
- قنوات المنصة (Android):
- قناة الطريقة:
org.kaijinlab.tap_ducky/gadget
checkRoot, checkSupport, listUdcs, getStatus, getDiagnostics
getKeyboardLayouts, setKeyboardLayout, resolveKeyboardLayoutId, setKeyboardLayoutByCode
activateProfile, deactivate, panicStop, retryOpenHidWriters
محرك DuckyScript / ضغطات المفاتيح
TapDucky يتضمن محركًا كاملاً بأسلوب DuckyScript مطبقًا أصليًا على Android (Kotlin) مع تقييم التعبيرات والتحكم في التدفق المنظم. يدعم لوحة المفاتيح، الفأرة/المؤشر، التوقيت، المتغيرات/التعاريف، الدوال، وأدوات عشوائية بسيطة.
مجموعات الأوامر المدعومة (مستوى عالٍ):
- النص والتوقيت: STRING, STRINGLN, STRING_DELAY, DELAY, DEFAULTDELAY/DEFAULT_DELAY, REM (و REM_BLOCK)
- المفاتيح والتركيبات: ENTER, TAB, ESC, SPACE, BACKSPACE, الأسهم، مفاتيح التنقل (HOME/END/PGUP/PGDN/INS/DEL)، F1–F24، مفاتيح الوسائط، مفاتيح لوحة الأرقام
- تركيبات المفاتيح المعدلة: GUI/WIN/COMMAND, CTRL/CONTROL, ALT/OPTION, SHIFT مع رموز مفاتيح إضافية (مثال: GUI r, CTRL ALT DEL)
- الضغط/الإفلات والمعدلات المحقونة: HOLD, RELEASE, INJECT_MOD (تعيين/مسح قناع المعدل المستمر عبر ضغطات المفاتيح اللاحقة)
- المؤشر/الفأرة: MOUSE/POINTER CLICK, HOLD, DRAG, MOVE, SCROLL مع أزرار LEFT/RIGHT/MIDDLE وdx/dy نسبي وعدد التكرارات
- التحكم في التدفق: IF / ELSE IF / ELSE / END_IF، WHILE / END_WHILE
- الدوال والاستدعاءات: FUNCTION / END_FUNCTION، CALL_FUNCTION، RETURN
- المتغيرات والثوابت: VAR $name = expr، DEFINE NAME value؛ $?(رمز الخروج) محفوظ كعدد غير موقع 16 بت
- مولدات عشوائية: RANDOM_LOWERCASE_LETTER، RANDOM_UPPERCASE_LETTER، RANDOM_LETTER، RANDOM_NUMBER، RANDOM_SPECIAL، RANDOM_CHAR
- تمرير وضع الهجوم: ATTACKMODE (يُمرر إلى طبقة مدير gadget عند الإمكان)
ملاحظات حول السلوك:
- التأخير الافتراضي: DEFAULTDELAY/DEFAULT_DELAY يحدد تأخيرًا أساسيًا يُطبق بعد كل أمر قابل للتنفيذ (مُقيس بواسطة مضاعف تأخير وقت التشغيل).
- مُقيِّم التعبيرات: العمليات الحسابية والمقارنات والتعبيرات المنطقية مدعومة في IF/WHILE وتعيينات VAR؛ غير الصفري يعتبر صحيحًا.
- التكرار: REPEAT N يكرر الأمر السابق N مرة أثناء المعالجة المسبقة.
- تخطيط لوحة المفاتيح: تخطيط كامل لاستخدام HID مع اختيار التخطيط؛ الأسماء المستعارة الشائعة مدعومة (ESC/ESCAPE, BKSP/BACKSPACE, إلخ).
- تيارات التنفيذ: تُصدر أحداث الخطوة/البدء/الانتهاء/الخطأ مع التقدم، لتحديث واجهة المستخدم والسجلات في الوقت الفعلي.
مرجع سريع لصيغة الفأرة/المؤشر:
- MOUSE CLICK [LEFT|RIGHT|MIDDLE] [num]
- MOUSE HOLD [LEFT|RIGHT|MIDDLE] [dx] [dy] [num]
- MOUSE DRAG [LEFT|RIGHT|MIDDLE] [dx] [dy] [num]
- MOUSE MOVE [dx] [dy] [num]
- MOUSE SCROLL [UP|DOWN] [num]
مصفوفة القدرات (مختارة):
ملاحظة: يُظهر المدقق أخطاء الصيغة والأوامر غير المعروفة وأخطاء البنية قبل التنفيذ. راجع محرر الحمولات للحصول على نتائج التحقق داخل واجهة المستخدم مع أرقام الأسطر.
تفاصيل التوقيت في التنفيذ:
- مضاعف تأخير تنفيذ منفصل وعامل سرعة الكتابة (مع وضع سريع محفوف بالمخاطر اختياري).
- تفريغ دوري أثناء تشغيل STRING الطويل لتقليل تجاوزات مخزن المفاتيح المؤقت للمضيف.
- تراجع مستند إلى المضيف ونافذة سماح للانقطاعات المؤقتة لـ HID.
- معايرة تقديرية مستندة إلى الأجهزة عندما يكون النوم الدقيق غير متوفر.
دعم المفاتيح الصريحة والأسماء المستعارة
ملاحظة: بالإضافة إلى الأسماء المستعارة المدرجة، يقبل TapDucky أشكال snake_case مثل down_arrow, up_arrow, left_arrow, right_arrow, page_up, page_down, print_screen, scroll_lock, num_lock, caps_lock, string_delay, default_delay، إلخ. يتم تسويتها داخليًا.
-
المعدلات (المتغيرات اليسرى/اليمنى مدعومة حيثما أشار):
- يسار: CTRL/CONTROL, SHIFT, ALT/OPTION, GUI/WINDOWS/COMMAND/WIN
- يمين: RCTRL/RCONTROL, RSHIFT, RALT, RGUI/RWINDOWS/RCOMMAND
-
مفاتيح النظام/التنقل (الأسماء المستعارة مضمنة):
- ENTER
- ESC/ESCAPE
- BACKSPACE/BKSP
- TAB
- SPACE
- DELETE/DEL
- INSERT/INS
- HOME, END
- PAGEUP, PAGEDOWN
- الأسهم: UP/UPARROW, DOWN/DOWNARROW, LEFT/LEFTARROW, RIGHT/RIGHTARROW
- الأقفال: CAPSLOCK, NUMLOCK, SCROLLLOCK
- PRINTSCREEN/PRINTSCRN/PRTSCN
- PAUSE/BREAK
- MENU/APP
-
مفاتيح الوظائف:
-
مفاتيح لوحة الأرقام (الأسماء المستعارة مضمنة):
- NUMPAD_0/KP0, NUMPAD_1/KP1, NUMPAD_2/KP2, NUMPAD_3/KP3, NUMPAD_4/KP4,
NUMPAD_5/KP5, NUMPAD_6/KP6, NUMPAD_7/KP7, NUMPAD_8/KP8, NUMPAD_9/KP9
- NUMPAD_PLUS/KPPLUS, NUMPAD_MINUS/KPMINUS, NUMPAD_MULTIPLY/KPASTERISK,
NUMPAD_DIVIDE/KPSLASH, NUMPAD_ENTER/KPENTER, NUMPAD_PERIOD/KPDOT
-
مفاتيح الوسائط (الأسماء المستعارة مضمنة):
- MEDIA_PLAYPAUSE/PLAYPAUSE
- MEDIA_STOP/STOPCD
- MEDIA_PREV/PREVIOUSSONG
- MEDIA_NEXT/NEXTSONG
- MEDIA_VOLUMEUP/VOLUMEUP
- MEDIA_VOLUMEDOWN/VOLUMEDOWN
- MEDIA_MUTE/MUTE
-
اختصارات أبجدية رقمية:
- الأحرف الفردية A–Z والأرقام 0–9 تُعيّن إلى رموز استخدام HID المقابلة.
أمثلة
- CTRL ALT DEL
- GUI r
- SHIFT TAB
- STRING_DELAY 15 Hello world
- MOUSE CLICK LEFT 2
- MOUSE MOVE 40 0 3
مشغلات المجدول (تفاصيل)
- مرة واحدة
- يتم تشغيله مرة واحدة في تاريخ/وقت محدد، إذا كان ضمن النافذة الزمنية الاختيارية.
- بدء التطبيق (بدء بارد)
- يتم تشغيله مرة واحدة عند بدء التطبيق من بداية باردة حقيقية (ليس عند الاستئناف من الخلفية).
- فتح التطبيق (مقدمة)
- يتم تشغيله في كل مرة يظهر فيها التطبيق في المقدمة؛ يمكن تشغيله عدة مرات.
- الجلسة مجهزة
- يتم تشغيله عند تجهيز جلسة HID (ربط USB gadget بـ UDC) — عادةً عند النقر على "تجهيز الجلسة".
إدارة الحمولات
- إنشاء/تعديل الحمولات مع المعاملات والقيم الافتراضية.
- التحقق من البرامج النصية مباشرة؛ افتح مرجع صيغة DuckyScript.
- مشاركة حمولات فردية أو تصدير حزمة؛ استيراد من متجر GitHub.
تشخيص الجهاز
- عرض قائمة kernel/UDC، جاهزية كتاب HID، حالة الملف الشخصي النشط، عدد طلبات تكوين المضيف، والمزيد.
- نسخ القيم إلى الحافظة وتحديث اللقطة/التشخيص بشكل مستقل.
ملاحظات للمطورين
- جميع إجراءات HID ذات الامتيازات تتطلب صلاحيات الجذر ونواة تدعم ConfigFS gadget.
- على Android 8+، تستخدم الإشعارات قناة مخصصة؛ الخدمة الأمامية تبقي جلسة HID نشطة.
- يتجنب التطبيق ربط سلاسل واجهة المستخدم في وقت التشغيل بموارد Android في طبقة الخدمة لتقليل مخاطر دمج الموارد.
المتطلبات
- جهاز Android مجذّر مع دعم Linux USB Gadget (ConfigFS)
- Android 11+
- جهاز فعلي (لا تستطيع المحاكيات التحقق من سلوك USB gadget)
التثبيت
- قم بتنزيل أحدث APK من الإصدارات:
-
قم بتثبيت التطبيق:
- قم بتمكين التثبيت من مصادر غير معروفة إذا لزم الأمر.
- امنح صلاحيات الجذر عند الطلب من مدير الجذر الخاص بك.
-
قم بتشغيله وتكوينه:
- افتح TapDucky.
- في الإعدادات المتقدمة، اختر/اضبط ملف تعريف HID (لوحة مفاتيح/فأرة/مركب) وVID/PID وتخطيط لوحة المفاتيح.
- قم بتجهيز جلسة وتشغيل أمر اختباري من شاشة التنفيذ.
الاستخدام
تشغيل حمولة
- أنشئ أو استورد حمولة (علامة تبويب الحمولات).
- تحقق منها وأضف معاملات إذا لزم الأمر.
- اذهب إلى التنفيذ، اختر الحمولة، املأ المعاملات، واضغط على تشغيل.
- تحقق من السجلات وسجل التنفيذ للحصول على النتائج.
جدولة حمولة
- افتح المجدول.
- أنشئ جدولاً، اختر المشغل (مرة واحدة، بدء بارد، مقدمة، مجهز).
- اختياريًا، عيّن نافذة زمنية يومية وتجاوزات للمعاملات.
- احفظ وتأكد من تمكين الجدول.
الاستيراد من متجر GitHub
- افتح متجر الحمولات.
- إدارة المصادر (أضف
owner/repo أو رابط كامل مع الفرع/المسار).
- معاينة الملفات؛ يقوم TapDucky بالتحقق من DuckyScript ويمكنه تحويل رسومات Digispark.
- استيراد الملفات المدعومة مباشرة إلى حمولاتك.
لقطات الشاشة
المساهمة
نرحب بالمساهمات! إذا كنت ترغب في المساعدة في تحسين TapDucky:
- قم بعمل Fork للمستودع.
- أنشئ فرعًا جديدًا لميزتك أو إصلاح الخلل.
- أرسل طلب سحب مع تغييراتك المقترحة.
الترخيص
هذا المشروع مرخص بموجب رخصة GNU GPLv3. راجع LICENSE.
الدعم
إذا واجهت أي مشكلات أو كان لديك أسئلة، يرجى فتح مشكلة في مستودع GitHub أو الاتصال بالمشرف.
المزيد من التطبيقات من KaijinLab!