RafaelDiasCampos/PiLogger

GitHub: RafaelDiasCampos/PiLogger

基于 Raspberry Pi Pico 与 Pi Zero 2W 的硬件键盘记录器,在键盘与计算机之间透明转发并记录所有按键输入。

Stars: 3 | Forks: 0

# PiLogger 使用 Raspberry Pi Pico + Raspberry Pi Zero 2W 的硬件键盘记录器 ## 功能 - 从连接的键盘克隆 vendorId 和 productId 到目标机器。 - 将所有按键操作转发到目标机器。 - 记录按下的按键。 - 将 LED 状态(Capslock、Numlock、Scrolllock)转发到键盘。 ## 使用方法 ### 配置 Raspberry Pi Pico Pi Pico 的代码可以使用 Arduino IDE 按照以下步骤进行构建: - 添加 URL 并为 RP2040 开发板安装软件包: ``` https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json ``` - 安装 Adafruit TinyUSB 库 - 选择你的 RP2040/RP2350 开发板,并将 USB Stack 更改为 "Adafruit TinyUSB Host (native)" - 编译并将代码刷入开发板 你可以通过将 UART 读取器连接到 Serial1(GP0 TX 和 GP1 RX,波特率 115200)来检查 Pico 是否工作,并查看将 USB 键盘连接到开发板时发送的消息。 ### 配置 Raspberry Pi Zero 2W 必须将 Pi Zero 2W 配置为 USB Gadget 设备。 - 编辑文件 `/boot/firmware/config.txt` 并在末尾添加以下几行: ``` enable_uart=1 dtoverlay=dwc2,dr_mode=peripheral ``` - 将所需的模块添加到 `/etc/modules`: ``` libcomposite dwc2 uinput ``` - 克隆仓库,创建 venv 并安装所需的软件包: ``` git clone https://github.com/RafaelDiasCampos/PiLogger.git cd PiLogger python -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ### 连接 Raspberry Pi 设备 Pi Pico 使用 Serial1 端口发送和接收数据。 将其与 Raspberry Pi Zero 2W 像这样连接: ``` Pico GP0 (TX) -> Zero 2W GPIO 15 (UART RX) Pico GP1 (RX) -> Zero 2W GPIO 14 (UART TX) Pico GND -> Any Zero 2W GND pin Pico 5V -> Any Zero 2W 5V pin ``` ### 启动键盘记录器 要启动键盘记录器,请以 root 用户身份运行 `Zero2W Logger/main.py`。 将键盘连接到 Pi Pico 后,你应该能看到按下的键被记录在 `keyboard_log.raw` 和 `keyboard_log.txt` 文件中。 ## 工作原理 本项目在 USB host 模式下使用 RP2040/RP2350 开发板,以连接键盘并接收按下的按键。 它们通过 UART 发送到 Zero 2 W,并由 Python 脚本进行解析,该脚本会将其打印到控制台,并可以选择将输入的文本记录到文件中。 Zero 2 W 配置为 USB 设备模式,以模拟键盘并将按下的键发送到计算机。 切换键盘 LED 时发送的 USB IN 命令会被 Zero 2 W 接收,然后通过 UART 发送到 Pi Pico,最后发送到 USB 键盘。 总而言之,数据的传输流程如下: USB 键盘 <-> 处于 Host 模式的 Pi Pico (RP2040/RP2350) <-> UART <-> 处于 USB gadget 模式的 Pi Zero 2 W <-> 计算机
标签:USB Gadget, USB中间人, 嵌入式开发, 硬件键盘记录器, 逆向工具