Sunil56224972/pico-rubber-ducky

GitHub: Sunil56224972/pico-rubber-ducky

基于 Raspberry Pi Pico 打造的低成本 USB Rubber Ducky,支持 DuckyScript 脚本执行与无线控制。

Stars: 5 | Forks: 0

pico-ducky

使用 Raspberry Pi Pico 制作廉价但强大的 USB Rubber Ducky
# 空行
GitHub code size in bytes GitHub license GitHub contributors GitHub commit activity GitHub Repo stars

## 快速入门指南 在 5 分钟内完成安装并让您的 USB Rubber Ducky 开始工作。 1. 从 [Releases](https://github.com/dbisu/pico-ducky/releases) 页面下载最新版本。 2. 按住 boot 按钮的同时将设备插入 USB 端口。它将显示为一个名为 RPI-RP2 的可移动媒体设备。 3. 在 Pico 或 Pico W 上安装 CircutlPython 如果使用 Pico 开发板: 将 adafruit-circuitpython-raspberry_pi_pico-en_US-10.0.3.uf2 文件复制到 Pico (RPI-RP2) 的根目录。设备将重启,大约一秒钟后,它将重新连接为 CIRCUITPY。 如果使用 Pico W 开发板: 将 adafruit-circuitpython-raspberry_pi_pico_w-en_US-10.0.3.uf2 文件复制到 Pico (RPI-RP2) 的根目录。设备将重启,大约一秒钟后,它将重新连接为 CIRCUITPY。 如果使用 Pico 2 开发板: 将 adafruit-circuitpython-raspberry_pi_pico2-en_US-10.0.3.uf2 文件复制到 Pico (RPI-RP2) 的根目录。设备将重启,大约一秒钟后,它将重新连接为 CIRCUITPY。 如果使用 Pico 2W 开发板: 将 adafruit-circuitpython-raspberry_pi_pico2_w-en_US-10.0.3.uf2 文件复制到 Pico (RPI-RP2) 的根目录。设备将重启,大约一秒钟后,它将重新连接为 CIRCUITPY。 4. 将 lib 文件夹复制到 CIRCUITPY 的根目录 5. 将 *.py 复制到 CIRCUITPY 的根目录 6. 按照 README.md 中的说明进入设置模式 7. 将您的 payload 复制为 payload.dd 到 CIRCUITPY 的根目录 8. 从 USB 端口拔下设备并移除设置跳线。 享受您的 Pico-Ducky。 ## 设置模式 要编辑 payload,请通过将引脚 1 (`GP0`) 连接到引脚 3 (`GND`) 来进入设置模式,这将阻止 pico-ducky 在您自己的机器上注入 payload。 最简单的方法是在这些引脚之间使用一根跳线,如下所示。 ![Setup mode with a jumper](https://raw.githubusercontent.com/Sunil56224972/pico-rubber-ducky/main/images/setup-mode.png) ## USB 启用/禁用模式 如果您出于隐蔽性需要 pico-ducky 不显示为 USB 大容量存储设备,请按照以下说明操作。 - 进入设置模式。 - 将您的 payload 脚本复制到 pico-ducky。 - 将 pico 与主机 PC 断开连接。 - 在引脚 18 (`GND`) 和引脚 20 (`GPIO15`) 之间连接一根跳线。 这将阻止 pico-ducky 在插入目标计算机时显示为 USB 驱动器。 - 移除跳线并重新连接到您的 PC 以进行重新编程。 Pico:默认模式为 USB 大容量存储已启用。 Pico W:默认模式为 USB 大容量存储**已禁用** ![USB enable/disable mode](https://raw.githubusercontent.com/Sunil56224972/pico-rubber-ducky/main/images/usb-boot-mode.png) # 完整安装说明 在 5 分钟内完成安装并让您的 USB Rubber Ducky 开始工作。 1. 克隆仓库以获取文件的本地副本。 `git clone https://github.com/dbisu/pico-ducky.git` 2. 下载 [CircuitPython for the Raspberry Pi Pico](https://circuitpython.org/board/raspberry_pi_pico/)。*更新至 10.0.3 下载 [CircuitPython for the Raspberry Pi Pico W](https://circuitpython.org/board/raspberry_pi_pico_w/)。*更新至 10.0.3 下载 [CircuitPython for the Raspberry Pi Pico 2](https://circuitpython.org/board/raspberry_pi_pico2/)。*更新至 10.0.3 下载 [CircuitPython for the Raspberry Pi Pico 2W](https://circuitpython.org/board/raspberry_pi_pico2_w/)。*更新至 10.0.3 3. 按住 boot 按钮的同时将设备插入 USB 端口。它将显示为一个名为 `RPI-RP2` 的可移动媒体设备。 4. 将下载的 `.uf2` 文件复制到 Pico (`RPI-RP2`) 的根目录。设备将重启,大约一秒钟后,它将重新连接为 `CIRCUITPY`。 5. 在[此处](https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/latest)下载 `adafruit-circuitpython-bundle-10.x-mpy-YYYYMMDD.zip` 并将其解压到设备外部。 6. 导航到刚解压文件夹中的 `lib`,并将 `adafruit_hid` 复制到您的 Raspberry Pi Pico 上的 `lib` 文件夹中。 7. 将 `adafruit_debouncer.mpy` 和 `adafruit_ticks.mpy` 复制到您的 Raspberry Pi Pico 上的 `lib` 文件夹中。 8. 将 `asyncio` 复制到您的 Pico 上的 `lib` 文件夹中。 9. 将 `adafruit_wsgi` 复制到您的 Pico 上的 `lib` 文件夹中。 10. 将您克隆中的 `boot.py` 复制到 Pico 的根目录。 11. 将 `duckyinpython.py`、`code.py`、`pins.py`、`webapp.py`、`wsgiserver.py` 复制到 Pico 的根文件夹。 12. *仅适用于 Pico W* 在 Pico W 的根目录中创建 `secrets.py` 文件。这包含 Pico W 要创建的 AP 名称和密码。 `secrets = { 'ssid' : "BadAPName", 'password' : "badpassword" }` 13. 在[此处](https://github.com/hak5/usbrubberducky-payloads)查找脚本或[使用 Ducky Script 创建您自己的脚本](https://docs.hak5.org/hak5-usb-rubber-ducky/ducky-script-basics/hello-world),并将其在 Pico 中保存为 `payload.dd`。目前,pico-ducky 仅支持 DuckyScript 1.0 和部分 3.0。 14. 请注意,如果您的设备未处于[设置模式](#setup-mode),设备将重启,半秒钟后脚本将运行。 15. **请注意:** 默认情况下,Pico W 不会显示为 USB 驱动器 ### Pico W Web 服务 Pico W AP 默认 IP 地址为 `192.168.4.1`。您应该能够在 `http://192.168.4.1:80` 找到网络服务。 网络服务上提供以下端点: ``` / /new /ducky /edit/ /write/ /run/ ``` API 端点 ``` /api/run/ ``` ## 设置模式 要编辑 payload,请通过将引脚 1 (`GP0`) 连接到引脚 3 (`GND`) 来进入设置模式,这将阻止 pico-ducky 在您自己的机器上注入 payload。 最简单的方法是在这些引脚之间使用一根跳线,如下所示。 ![Setup mode with a jumper](https://raw.githubusercontent.com/Sunil56224972/pico-rubber-ducky/main/images/setup-mode.png) ## USB 启用/禁用模式 如果您出于隐蔽性需要 pico-ducky 不显示为 USB 大容量存储设备,请按照以下说明操作。 - 进入设置模式。 - 将您的 payload 脚本复制到 pico-ducky。 - 将 pico 与主机 PC 断开连接。 - 在引脚 18 (`GND`) 和引脚 20 (`GPIO15`) 之间连接一根跳线。 这将阻止 pico-ducky 在插入目标计算机时显示为 USB 驱动器。 - 移除跳线并重新连接到您的 PC 以进行重新编程。 Pico:默认模式为 USB 大容量存储已启用。 Pico W:默认模式为 USB 大容量存储**已禁用** ![USB enable/disable mode](https://raw.githubusercontent.com/Sunil56224972/pico-rubber-ducky/main/images/usb-boot-mode.png) ## 多重 Payload 可以在 Pico 和 Pico W 上存储多个 payload。 要选择一个 payload,请将以下引脚之一接地: - GP4 - payload.dd - GP5 - payload2.dd - GP10 - payload3.dd - GP11 - payload4.dd ## 更改键盘布局 复制自 [Neradoc/Circuitpython_Keyboard_Layouts](https://github.com/Neradoc/Circuitpython_Keyboard_Layouts/blob/main/PICODUCKY.md) #### 如何在 pico-ducky 仓库中使用这些布局之一。 **前往[最新发布页面](https://github.com/Neradoc/Circuitpython_Keyboard_Layouts/releases/latest),查看列表中是否有您的语言。** #### 如果您的语言/布局包含在捆绑包中 下载 `py` zip,名为 `circuitpython-keyboard-layouts-py-XXXXXXXX.zip` **注意:您可以使用针对设备上 Circuitpython 版本的 mpy 版本,但在 Raspberry Pi Pico 上您不需要它——它们仅减少文件大小和加载时的内存使用,而 Pico 拥有充足的资源。** #### 如果您的语言/布局不在捆绑包中 尝试在线生成器,它应该会为您提供一个包含您语言捆绑包的 zip 文件 https://www.neradoc.me/layouts/ #### 现在您有了一个 zip 文件 #### 在 lib 目录中找到您的语言/布局 对于语言 `LANG`,将 zip 包中 `lib` 文件夹里的以下文件复制到开发板的 `lib` 目录中。 **不要**修改 adafruit_hid 目录。您的文件直接放入 `lib` 中。 **不要**更改文件的名称或扩展名。只需选择正确的文件。 将 `LANG` 替换为您选择语言的字母。 - `keyboard_layout_win_LANG.py` - `keycode_win_LANG.py` 别忘了获取 [the adafruit_hid library](https://github.com/adafruit/Adafruit_CircuitPython_HID/releases/latest)。 **如果您的语言是法语,它应该如下所示。** ![CIRCUITPY drive screenshot](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/723d4516aa152256.png) #### 修改 pico-ducky 代码以使用您的语言文件: 在文件开头注释掉这些行: ``` from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS as KeyboardLayout from adafruit_hid.keycode import Keycode ``` 取消注释这些行: *将 `LANG` 替换为您选择语言的字母。名称必须与文件匹配(不带 py 或 mpy 扩展名)。* ``` from keyboard_layout_win_LANG import KeyboardLayout from keycode_win_LANG import Keycode ``` ##### 示例:设置为德语键盘 (WIN_DE) ``` from keyboard_layout_win_de import KeyboardLayout from keycode_win_de import Keycode ``` 将 keyboard_layout_win_de.mpy 和 keycode_win_de.mpy 文件复制到 Pico 开发板上的 /lib 文件夹中 ``` adafruit_hid/ keyboard_layout_win_de.mpy keycode_win_de.mpy ``` ## 有用的链接和资源 ### 如果 Pico 损坏或无法启动,如何恢复。 [重置说明](RESET.md) ### 安装工具 [ryo-yamada](https://github.com/ryo-yamada) 创建了一个将空白 RPi Pico 转换为 ducky 的工具。 您可以在[此处](https://github.com/ryo-yamada/PicoDuckyBuilder)找到该工具 ### 文档 [CircuitPython](https://docs.circuitpython.org/en/latest/README.html) [CircuitPython HID](https://learn.adafruit.com/circuitpython-essentials/circuitpython-hid-keyboard-and-mouse) [Ducky Script](https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Duckyscript) ### 视频教程 [pico-ducky 教程 by **NetworkChuck**](https://www.youtube.com/watch?v=e_f9p-_JWZw) [USB Rubber Ducky 播放列表 by **Hak5**](https://www.youtube.com/playlist?list=PLW5y1tjAOzI0YaJslcjcI4zKI366tMBYk) [Raspberry Pi Pico 上的 CircuitPython 教程 by **DroneBot Workshop**](https://www.youtube.com/watch?v=07vG-_CcDG0) ## 相关项目 [Defcon31-ducky](https://github.com/iot-pwn/defcon31-ducky)
标签:BadUSB, CircuitPython, DuckyScript, HID攻击, Keystroke Injection, Pico W, Raspberry Pi Pico, USB Rubber Ducky, 低成本黑客工具, 物理安全, 硬件黑客, 网络安全, 自动化攻击, 逆向工具, 键盘模拟, 隐私保护