如何用树莓派Pico打造终极USB Rubber Ducky:零基础5分钟上手教程
你是否曾经想过拥有一个能够自动执行键盘操作的神奇设备?一个可以帮你自动化重复任务、测试系统安全性的小工具?现在,只需要一个不到50元的树莓派Pico开发板,你就能制作出功能强大的USB Rubber Ducky设备!pico-ducky项目让你轻松实现这个梦想。
为什么选择树莓派Pico打造USB Rubber Ducky?
传统的USB Rubber Ducky设备价格昂贵,动辄数百元,而pico-ducky项目彻底改变了这一现状。利用开源的树莓派Pico开发板,你可以以极低的成本获得相同的功能。这个项目不仅价格亲民,而且完全开源,让你可以自由定制和扩展功能。
核心优势:低成本高性能
- 超低价格:树莓派Pico开发板价格仅需几十元,相比商业设备节省90%以上
- 完全开源:所有代码和设计完全开放,你可以自由修改和优化
- 易于使用:无需复杂的编程知识,5分钟即可完成设置
- 高度灵活:支持多种payload脚本和键盘布局,满足不同需求
快速开始:5分钟制作你的第一个USB Rubber Ducky
第一步:准备材料
开始之前,你需要准备以下物品:
- 树莓派Pico开发板(Pico、Pico W、Pico 2、Pico 2W均可)
- 微型USB数据线(用于连接电脑和供电)
- 电脑(Windows、macOS或Linux系统)
- 可选:杜邦线或跳线帽(用于设置模式切换)
第二步:获取项目文件
首先,克隆项目仓库到本地:
git clone https://gitcode.com/gh_mirrors/pi/pico-ducky
第三步:安装CircuitPython固件
根据你的Pico型号,下载对应的CircuitPython固件:
- 树莓派Pico:adafruit-circuitpython-raspberry_pi_pico-en_US-9.2.1.uf2
- 树莓派Pico W:adafruit-circuitpython-raspberry_pi_pico_w-en_US-9.2.1.uf2
- 树莓派Pico 2:adafruit-circuitpython-raspberry_pi_pico2-en_US-9.2.1.uf2
- 树莓派Pico 2W:adafruit-circuitpython-raspberry_pi_pico2_w-en_US-9.2.1.uf2
第四步:进入Boot模式并刷写固件
按住Pico开发板上的BOOTSEL按钮,同时将其通过USB连接到电脑。此时电脑会识别到一个名为"RPI-RP2"的可移动存储设备。
将下载的.uf2文件复制到"RPI-RP2"设备的根目录。Pico会自动重启,并以"CIRCUITPY"设备重新连接。
第五步:安装必要库文件
- 下载最新的Adafruit CircuitPython库bundle
- 解压后,将以下文件夹和文件复制到Pico的"lib"目录:
- adafruit_hid文件夹
- adafruit_debouncer.mpy文件
- adafruit_ticks.mpy文件
- asyncio文件夹
- adafruit_wsgi文件夹
第六步:复制项目核心文件
将pico-ducky项目中的以下文件复制到Pico根目录:
- boot.py - 启动配置文件
- code.py - 主程序文件
- duckyinpython.py - Ducky Script解析器
- webapp.py - Web管理界面
- wsgiserver.py - Web服务器
第七步:添加你的第一个Payload
创建一个简单的Ducky Script脚本,保存为"payload.dd"并复制到Pico根目录。这里有一个简单的示例:
REM 这是一个简单的Hello World脚本
DELAY 1000
GUI r
DELAY 500
STRING notepad
ENTER
DELAY 1000
STRING Hello from pico-ducky!
安全设置:如何安全地编辑Payload
为了避免在编辑脚本时意外触发执行,pico-ducky提供了设置模式。进入设置模式非常简单:
- 断开Pico与电脑的连接
- 使用跳线连接GP0(引脚1)和GND(引脚3)
- 重新连接Pico到电脑
在设置模式下,Pico不会执行任何payload脚本,让你可以安全地编辑和测试脚本内容。
高级功能:让你的USB Rubber Ducky更强大
多Payload支持
pico-ducky支持存储多个payload脚本,通过接地不同的引脚来选择执行哪个脚本:
- GP4(引脚6):执行payload.dd
- GP5(引脚7):执行payload2.dd
- GP10(引脚14):执行payload3.dd
- GP11(引脚15):执行payload4.dd
这意味着你可以为不同的场景准备不同的脚本,只需通过简单的硬件切换即可选择。
USB存储模式切换
为了提高隐蔽性,你可以禁用Pico的USB存储功能:
- 进入设置模式
- 复制payload脚本到Pico
- 断开Pico与电脑的连接
- 使用跳线连接GND(引脚18)和GPIO15(引脚20)
启用此模式后,Pico在目标设备上不会显示为USB存储设备,大大提高了隐蔽性。
注意:Pico默认启用USB存储模式,而Pico W默认禁用USB存储模式。
支持多种键盘布局
pico-ducky默认使用美式键盘布局,但你可以轻松更改为其他语言布局:
- 下载对应语言的布局文件(如德语为keyboard_layout_win_de.mpy和keycode_win_de.mpy)
- 复制到Pico的"lib"目录
- 编辑duckyinpython.py文件,注释掉美式布局导入,取消注释并修改为你的语言布局
例如,改为德语布局:
# 注释掉这两行
# from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS as KeyboardLayout
# from adafruit_hid.keycode import Keycode
# 取消注释并修改为德语布局
from keyboard_layout_win_de import KeyboardLayout
from keycode_win_de import Keycode
实际应用场景:pico-ducky能做什么?
自动化办公任务
- 自动登录系统:设置开机后自动输入用户名和密码
- 批量文件处理:自动执行重复的文件操作任务
- 数据备份:定时执行备份脚本
系统安全测试
- 漏洞测试:自动化测试系统安全漏洞
- 权限提升:测试系统权限配置
- 安全审计:自动化安全审计流程
教育学习
- 编程教学:学习自动化脚本编写
- 硬件实验:了解USB HID设备工作原理
- 网络安全:学习基本的渗透测试技术
常见问题与解决方案
问题1:Pico无法被电脑识别
解决方案:
- 确保使用数据线而不是充电线
- 尝试不同的USB端口
- 检查BOOTSEL按钮是否正常工作
问题2:Payload脚本不执行
解决方案:
- 检查是否处于设置模式(GP0连接到GND)
- 验证payload.dd文件格式是否正确
- 检查脚本语法是否有错误
问题3:键盘布局不匹配
解决方案:
- 下载正确的键盘布局文件
- 按照上述步骤修改duckyinpython.py文件
- 重新测试脚本执行
问题4:Pico W无法显示为USB存储设备
解决方案:这是正常现象,Pico W默认禁用USB存储以提高隐蔽性。如果需要编程,请使用设置模式。
进阶技巧:优化你的pico-ducky体验
使用Web管理界面(仅限Pico W)
Pico W型号支持Web服务功能,你可以通过浏览器访问192.168.4.1:80来管理设备。Web界面提供以下功能:
- 查看和编辑payload脚本
- 上传新的脚本文件
- 远程执行脚本
- 设备状态监控
创建复杂的Payload脚本
学习Ducky Script语法,创建更强大的自动化脚本:
REM 打开命令提示符并执行命令
GUI r
DELAY 500
STRING cmd
ENTER
DELAY 1000
STRING echo "Hello from pico-ducky!"
ENTER
结合其他硬件扩展
你可以为pico-ducky添加更多功能:
- 添加显示屏:显示当前执行状态
- 连接按钮:手动触发脚本执行
- 添加LED指示灯:显示设备状态
- 集成传感器:根据环境条件触发脚本
安全使用建议
虽然pico-ducky功能强大,但请负责任地使用:
- 仅在自己的设备上测试:不要在未经授权的设备上使用
- 了解法律法规:确保你的使用符合当地法律法规
- 用于教育和研究:最好用于学习和安全研究目的
- 保护自己的设备:不要让他人随意接触你的pico-ducky设备
学习资源与进一步探索
官方文档与资源
- CircuitPython官方文档:学习CircuitPython编程基础
- Ducky Script语法参考:掌握脚本编写技巧
- pico-ducky项目示例:查看examples目录中的示例脚本
社区与支持
- GitHub仓库:查看最新更新和提交问题
- 技术论坛:与其他用户交流经验
- 视频教程:观看实际操作演示
下一步学习方向
- 深入学习CircuitPython:掌握更多硬件控制技巧
- 学习网络安全知识:了解USB HID攻击原理
- 开发自定义功能:为pico-ducky添加新特性
- 参与开源贡献:为项目提交改进和修复
开始你的pico-ducky之旅
现在你已经掌握了使用树莓派Pico制作USB Rubber Ducky的全部知识。从简单的自动化脚本到复杂的系统测试,pico-ducky为你打开了一个全新的可能性世界。
记住,技术本身是中性的,关键在于如何使用。用你的新技能创造有价值的东西,解决实际问题,享受DIY的乐趣!
准备好开始了吗?拿起你的树莓派Pico,按照本教程的步骤,在5分钟内制作出你的第一个USB Rubber Ducky设备吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




