当前位置: 首页 > news >正文

树莓派PiPico BadUSB 教程

树莓派PiPico BadUSB 教程

安装 CircuitPython for Pi Pico

过程省略

添加adafruit_hid库到Lib文件夹

过程省略

核心模块说明

模块 用途
usb_hid.devices 获取已连接的 HID 设备列表(通常只有 1 个)
adafruit_hid.keyboard.Keyboard 模拟键盘按键
adafruit_hid.keycode.Keycode 定义按键常量(如 Keycode.A, Keycode.ENTER
adafruit_hid.mouse.Mouse 模拟鼠标移动/点击
adafruit_hid.consumer_control.ConsumerControl 控制音量、播放等
adafruit_hid.consumer_control_code.ConsumerControlCode 多媒体按键常量

具体操作

模拟键盘

先导入以下库

import time
import usb_hid  # 提供对USB HID设备(如键盘、鼠标)的底层访问接口
import digitalio  # 用于控制数字输入/输出引脚(如LED、按钮等)
import board  # 提供对开发板引脚的标准化访问(如 board.D13)
from adafruit_hid.keyboard import Keyboard  # 用于创建虚拟USB键盘,模拟按键操作
from adafruit_hid.keycode import Keycode  # 提供标准键盘按键的常量(如 ENTER、CTRL 等)
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS  #键盘布局类,可以自动处理字母、数字、常见符号和大小写

可以先time.sleep(2)来等待系统识别设备

接下来,定义主程序函数

# === 主程序函数 ===
def main():keyboard = Keyboard(usb_hid.devices)  # 初始化键盘layout = KeyboardLayoutUS(keyboard)  #初始化文本# keyboard.send(Keycode.CAPS_LOCK)# 示例:打开记事本并输入文本(完全可见、无害)keyboard.send(Keycode.GUI, Keycode.R)time.sleep(0.3)layout.write("notepad\n")time.sleep(1)layout.write("This is a safe demo from Raspberry Pi Pico!\n")layout.write("Time: " + str(time.monotonic()) + "\n")# keyboard.send(Keycode.CAPS_LOCK)

配置紧急停止引脚(使用 GP1)

# === 配置紧急停止引脚(使用 GP1)===
# 用杜邦线将 GP1 短接到 GND 表示“停止”
emergency_stop = digitalio.DigitalInOut(board.GP1)
emergency_stop.direction = digitalio.Direction.INPUT
emergency_stop.pull = digitalio.Pull.UP  # 上拉:未短接时为 True,短接 GND 时为 Falsedef wait_with_abort(seconds, abort_pin):"""倒计时,期间检测是否触发紧急停止"""print(f"倒计时 {seconds} 秒... (短接 GP1 到 GND 可取消)")for i in range(seconds, 0, -1):if not abort_pin.value:  # 检测到短接(低电平)print("⚠️ 检测到紧急停止!程序终止。")return False  # 中止print(f"{i}...")time.sleep(1)return True  # 正常完成

然后就是主程序

# === 主程序 ===
print("程序启动!")
if not wait_with_abort(2, emergency_stop):# 用户在 2 秒内短接了 GP1 → 安全退出print("已安全退出,未执行任何操作。")
else:# 超时未停止 → 执行自动化print("开始执行自动化任务...")try:main()print("✅ 任务完成!")except Exception as e:print("❌ 执行出错:", e)

演示代码

# code.py - 带紧急停止的自动化脚本import time
import usb_hid
import digitalio
import board
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS# === 配置紧急停止引脚(使用 GP1)===# 用杜邦线将 GP1 短接到 GND 表示“停止”emergency_stop = digitalio.DigitalInOut(board.GP1)
emergency_stop.direction = digitalio.Direction.INPUT
emergency_stop.pull = digitalio.Pull.UP  # 上拉:未短接时为 True,短接 GND 时为 Falsedef wait_with_abort(seconds, abort_pin):"""倒计时,期间检测是否触发紧急停止"""print(f"倒计时 {seconds} 秒... (短接 GP1 到 GND 可取消)")for i in range(seconds, 0, -1):if not abort_pin.value:  # 检测到短接(低电平)print("⚠️ 检测到紧急停止!程序终止。")return False  # 中止print(f"{i}...")time.sleep(1)return True  # 正常完成# === 主程序函数 ===def main():keyboard = Keyboard(usb_hid.devices)layout = KeyboardLayoutUS(keyboard)# keyboard.send(Keycode.CAPS_LOCK)# 示例:打开记事本并输入文本(完全可见、无害)keyboard.send(Keycode.GUI, Keycode.R)time.sleep(0.3)layout.write("notepad\n")time.sleep(1)layout.write("This is a safe demo from Raspberry Pi Pico!\n")layout.write("Time: " + str(time.monotonic()) + "\n")# keyboard.send(Keycode.CAPS_LOCK)# === 主程序 ===print("程序启动!")
if not wait_with_abort(2, emergency_stop):# 用户在 2 秒内短接了 GP1 → 安全退出print("已安全退出,未执行任何操作。")
else:# 超时未停止 → 执行自动化print("开始执行自动化任务...")try:main()print("✅ 任务完成!")except Exception as e:print("❌ 执行出错:", e)print("程序结束。")
http://www.jsqmd.com/news/262652/

相关文章:

  • AI音轨分离|Demucs上手指南
  • 【SSM毕设全套源码+文档】基于SSM的商城系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 【SSM毕设全套源码+文档】基于SSM的手机商城管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 【SSM毕设源码分享】基于SSM+vue的学生作业管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 最新知名的非标钣金定制产品选哪家,非标钣金定制源头厂家哪个好技术领航,品质之选 - 品牌推荐师
  • 2026年诚信的商业美陈,新年美陈,互动美陈公司选购参考名录 - 品牌鉴赏师
  • 【小程序毕设全套源码+文档】基于微信小程序的大学生体检预约小程序设计与实现(丰富项目+远程调试+讲解+定制)
  • django微信小程序-基于python的服装穿搭推荐系统
  • cdrx4安装出现时msxml6r.dll
  • 【SSM毕设全套源码+文档】基于SSM的学生干部管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 必看!2026年TOP5靠谱防火玻璃公司推荐,确保您能找到满足需求的优质产品 - 睿易优选
  • 【SSM毕设全套源码+文档】基于SSM的学生选课管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 必看!2026年正规防火卷帘门厂家推荐榜单,帮助您在市场中找到适合的产品 - 睿易优选
  • 【SSM毕设全套源码+文档】基于SSM的学生选课系统设计与实现(丰富项目+远程调试+讲解+定制)
  • AMD rocr-libhsakmt分析系列6-2:共享机制-import - 教程
  • Olib 2.4.4|免梯下载Zlibrary电子书 开源免费 需要自己的Zlib账号
  • 学霸同款2026 AI论文平台TOP9:继续教育写作全解析
  • 同昌新材料产品好用吗?在行业内地位怎样? - 工业品牌热点
  • 【SSM毕设全套源码+文档】基于SSM的疫情健康上报管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 【SSM毕设全套源码+文档】基于SSM的优选农产品销售管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 【SSM毕设源码分享】基于SSM+vue的学生干部管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 强烈安利10个论文写作工具,研究生一键生成论文工具推荐!
  • 存储--SMP(软件制作平台)语言基础知识之四十
  • 【SSM毕设源码分享】基于SSM+vue的学生选课管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 基于SpringBoot+Vue的精品在线试题库系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • CST Studio Suite Python自动化学习笔记
  • 详细介绍:【040-安全开发篇】JavaEE应用SpringBoot框架JWT身份鉴权打包部署JARWAR
  • 机械行业如何利用百度UE的JS截屏功能优化设计文档导入?
  • CSS盒子模型:网页布局的基石与艺术
  • 射频-驻波比的理解