用于已 Root 安卓设备的开源 DuckyScript 执行器,支持 USB Gadget (ConfigFS)
TapDucky 允许您通过模拟 USB 键盘、鼠标或复合 HID 设备,在 Android 上创建、自定义、调度和运行 DuckyScript,用于授权测试和自动化。它包括有效载荷参数化、多个调度器触发器、执行日志以及一个由 GitHub 支持的有效载荷库,具有自动 DuckyScript 验证和可选的 Digispark .ino 转换功能。
.ino 草图。注意:需要已 Root 且支持 Linux USB 小工具 (ConfigFS) 的设备。请使用物理设备,因为模拟器无法验证 HID 行为。
有效载荷编辑器和参数
GitHub 有效载荷商店
执行与测试
调度器与触发器
设备和 HID 配置文件
日志与历史
org.kaijinlab.tap_ducky/gadget
checkRoot、checkSupport、listUdcs、getStatus、getDiagnosticsgetKeyboardLayouts、setKeyboardLayout、resolveKeyboardLayoutId、setKeyboardLayoutByCodeactivateProfile、deactivate、panicStop、retryOpenHidWritersTapDucky 包含一个完整的 DuckyScript 风格引擎,在 Android(Kotlin)上原生实现,支持表达式求值和结构化控制流。它支持键盘、鼠标/指针、时序、变量/定义、函数和简单的随机工具。
支持的命令系列(高级):
行为说明:
鼠标/指针语法快速参考:
能力矩阵(精选):
注意:验证器会在执行前报告语法错误、未知命令和结构错误。请参阅有效载荷编辑器以查看带行号的 UI 内验证结果。
执行时序重点:
注意:除了列出的别名外,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 等。这些在内部被归一化。
修饰键(支持左右变体):
系统/导航键(包括别名):
功能键:
数字键盘键(包括别名):
媒体键(包括别名):
字母数字快捷键:
安装应用程序:
启动并配置:
owner/repo 或包含分支/路径的完整 URL)。
欢迎贡献!如果您想帮助改进 TapDucky:
本项目采用 GNU GPLv3 许可证许可。请参阅 LICENSE。
如果您遇到任何问题或有疑问,请在 GitHub 仓库上提出 issue 或联系维护者。
executeDuckyScript(script, delayMultiplier, executionId?)、cancelExecution(executionId)testKeyboardKey(label)、testMouseMove(dx,dy,wheel,buttons)、testCtrlAltDel()org.kaijinlab.tap_ducky/gadget_logsorg.kaijinlab.tap_ducky/gadget_statusorg.kaijinlab.tap_ducky/gadget_exec| 功能组 | 子功能 | 支持 | 备注 |
|---|
| 文本/时序 | STRING / STRINGLN / STRING_DELAY | ✅ | STRING_DELAY 的逐字符时序;通过 DEFAULTDELAY 实现全局延迟 |
| 文本块 | STRING/STRINGLN 块 | ✅ | 由 END_STRING / END_STRINGLN 终止的多行块 |
| 时序 | DELAY、DEFAULTDELAY/DEFAULT_DELAY | ✅ | DEFAULT 在每个可执行步骤后应用 |
| 重复 | REPEAT N | ✅ | 将前一条命令复制 N 次 |
| 注释 | REM、REM_BLOCK/END_REM | ✅ | 不可执行 |
| 修饰键 | GUI/WIN、CTRL、ALT、SHIFT 组合 | ✅ | 解析为单个组合键步骤 |
| 键命令 | 显式键名 | ✅ | “显式键和别名支持”中列出的所有键/别名 |
| 按住/释放 | HOLD、RELEASE | ✅ | 追踪按住集;与 INJECT_MOD 配合使用 |
| 显式键状态 | KEYDOWN、KEYUP | ✅ | 直接按键/释放控制,用于组合键和按住的键 |
| 注入修饰 | INJECT_MOD | ✅ | 持续到清除的修饰掩码 |
| 鼠标/指针 | MOUSE/POINTER CLICK/HOLD/DRAG/MOVE/SCROLL | ✅ | 带重复次数的相对移动 |
| 控制流 | IF/ELSE IF/ELSE/END_IF | ✅ | 支持嵌套链 |
| 循环 | WHILE/END_WHILE | ✅ | 使用表达式引擎求值条件 |
| 函数 | FUNCTION/END_FUNCTION、CALL/CALL_FUNCTION、RETURN | ✅ | 支持参数;RETURN 设置 $? |
| 变量 | VAR $name = expr | ✅ | 整数,0..65535 存储;$? 为退出码;作用域局部变量 |
| 定义 | DEFINE NAME value | ✅ | 解析前的简单文本替换 |
| 错误处理 | TRY/CATCH/END_TRY | ✅ | 可恢复故障,不会中止脚本 |
| 等待 | WAIT_FOR、SLEEP_UNTIL | ✅ | 主机/UDC/键盘就绪 + 定时等待 |
| 随机 | RANDOM_* 生成器 | ✅ | 小写/大写/字母/数字/特殊/字符 |
| 攻击模式 | ATTACKMODE | ⚠️ | 已解析,但尚未实现后端处理器 |
| 应用 | 功能描述 |
|---|
| IR Blaster | 控制和测试兼容设备的红外功能。 |
| USBDevInfo | 检查 USB 设备详情和行为,了解连接的是什么。 |
| GadgetFS | 实验 USB 小工具功能(硬件邻近层,低级别)。 |
| TapDucky | 用于受控击键注入工作流程的安全/测试工具。 |
| HIDWiggle | 基于 USB 小工具功能的鼠标抖动器。 |
| AKTune | 自适应 Android 内核自动调节器,用于 CPU/GPU/调度器/内存/I/O。 |