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中间人, 嵌入式开发, 硬件键盘记录器, 逆向工具