Itsmmdoha/duckLogger
GitHub: Itsmmdoha/duckLogger
一款基于 ESP32-S3 的低成本 USB 击键记录器,支持通过 Wi-Fi 远程下载日志并注入 DuckyScript Payload。
Stars: 15 | Forks: 1
# DuckLogger
DuckLogger 是一款基于 ESP32-S3 的 USB 击键记录器。它会将击键记录保存在文本文件中,并通过内置 Wi-Fi 热点提供无线访问以下载日志。
复现此项目不需要任何定制 PCB。此处使用的硬件在 Aliexpress 等地方总价不到 10 美元。
## 功能
* **击键记录**:记录击键并将其保存到内部 Flash 存储中的日志文件里。
* **双 Wi-Fi 模式**:支持 Wi-Fi Station 模式(连接到现有网络)和 Access Point(热点)模式。
* **Web 命令与控制中心**:访问内置 Web 界面来管理您的设备。控制中心允许您:
* **下载日志**:轻松下载已保存的击键日志文件。
* **远程实时键盘**:挂载一个实时虚拟键盘,并通过 WebSocket 几乎零延迟地实时发送击键。
* **DuckyScript 注入**:远程注入并执行 DuckyScript payload。
* **设备设置**:直接从 Web UI 更新 AP/Station 模式的配置。
访问 Web UI,地址为:
```
http://192.168.4.1/
```
*(处于 Access Point 模式时)*
## 所需组件
* ESP32-S3 SuperMini
* CH9350 HID 模块
* 4 根母对母杜邦线
# 快速开始
## 1. 接线图
| ESP32-S3 | CH9350 |
| -------- | ------ |
| 5V | 5V |
| GND | GND |
| GP1 | TX |
| GP2 | RX |
CH9350 支持多种工作模式,通过板载 DIP 开关进行配置。
将 `S0` 设置到 GND 位置 (0),并将所有其他开关保持在相反位置 (1)。这将启用 USB Host 模式,该模式将 USB 键盘输入转换为通过 UART 发送的串行数据,默认波特率为 115200。
## 2. 刷入 MicroPython
DuckLogger 是使用 MicroPython 编写的。请将 MicroPython 固件刷入您的开发板。
请在此处查找刷入说明[这里](https://micropython.org/download/ESP32_GENERIC_S3/)。
刷入完成后,通过 USB 断开并重新连接开发板。
## 3. 克隆仓库
```
git clone https://github.com/Itsmmdoha/duckLogger.git
cd duckLogger
```
## 4. 在开发板上安装 DuckLogger
确保您的开发板已通过 USB 连接,然后运行:
```
python flasher.py
```
刷写工具将自动:
* 在开发板上安装 `mpremote` 和所需的 MicroPython 软件包
* 压缩 `index.html` 并将所有文件复制到开发板
* 重启开发板
# 使用方法
1. 将 USB 键盘插入 CH9350 HID 模块。
2. 使用 USB-C 转 USB-A 线将 ESP32-S3 SuperMini 连接到目标 PC。
3. 设备将自动:
* 开始记录击键
* 根据您的设置连接到 Wi-Fi 或创建 Wi-Fi 热点
* 启动 HTTP 服务器
如果处于 Access Point 模式(默认),请连接到 Wi-Fi 热点(默认密码:`duckPass1234`)并打开:
```
http://192.168.4.1/
```
以访问命令与控制中心。
## 支持的 DuckyScript 语法
DuckLogger 目前支持用于 payload 注入的核心 DuckyScript 命令集:
| 命令 | 描述 | 示例 |
| :--- | :--- | :--- |
| `DELAY` | 暂停执行指定的毫秒数。 | `DELAY 500` |
| `STRING` | 按原样输入一串字符。 | `STRING Hello, World!` |
| **组合键** | 发送同时按下的按键。 | `CTRL SHIFT ESC` 或 `ALT i` |
| **单个按键** | 发送单独的特殊按键。 | `ENTER` 或 `TAB` |
# 仓库结构
```
.
├── flasher.py
├── index.html
├── lib
│ ├── access_point.py
│ ├── api.py
│ ├── duckyscript.py
│ ├── keyboard.py
│ ├── key_led.py
│ ├── logger.py
│ ├── mapper.py
│ ├── microdot
│ │ ├── helpers.py
│ │ ├── __init__.py
│ │ ├── microdot.py
│ │ └── websocket.py
│ ├── queue.py
│ ├── settings.py
│ ├── uart_buffer.py
│ ├── wifi.py
│ └── wifi_radio.py
├── LICENSE
├── main.py
├── README.md
├── resources.md
└── settings.json
```
## 第三方库
本项目包含 Miguel Grinberg 编写的 Microdot(MIT 许可证):
https://github.com/miguelgrinberg/microdot
DuckLogger 是一款基于 ESP32-S3 的 USB 击键记录器。它会将击键记录保存在文本文件中,并通过内置 Wi-Fi 热点提供无线访问以下载日志。
复现此项目不需要任何定制 PCB。此处使用的硬件在 Aliexpress 等地方总价不到 10 美元。
## 功能
* **击键记录**:记录击键并将其保存到内部 Flash 存储中的日志文件里。
* **双 Wi-Fi 模式**:支持 Wi-Fi Station 模式(连接到现有网络)和 Access Point(热点)模式。
* **Web 命令与控制中心**:访问内置 Web 界面来管理您的设备。控制中心允许您:
* **下载日志**:轻松下载已保存的击键日志文件。
* **远程实时键盘**:挂载一个实时虚拟键盘,并通过 WebSocket 几乎零延迟地实时发送击键。
* **DuckyScript 注入**:远程注入并执行 DuckyScript payload。
* **设备设置**:直接从 Web UI 更新 AP/Station 模式的配置。
访问 Web UI,地址为:
```
http://192.168.4.1/
```
*(处于 Access Point 模式时)*
## 所需组件
* ESP32-S3 SuperMini
* CH9350 HID 模块
* 4 根母对母杜邦线
# 快速开始
## 1. 接线图
| ESP32-S3 | CH9350 |
| -------- | ------ |
| 5V | 5V |
| GND | GND |
| GP1 | TX |
| GP2 | RX |
CH9350 支持多种工作模式,通过板载 DIP 开关进行配置。
将 `S0` 设置到 GND 位置 (0),并将所有其他开关保持在相反位置 (1)。这将启用 USB Host 模式,该模式将 USB 键盘输入转换为通过 UART 发送的串行数据,默认波特率为 115200。
## 2. 刷入 MicroPython
DuckLogger 是使用 MicroPython 编写的。请将 MicroPython 固件刷入您的开发板。
请在此处查找刷入说明[这里](https://micropython.org/download/ESP32_GENERIC_S3/)。
刷入完成后,通过 USB 断开并重新连接开发板。
## 3. 克隆仓库
```
git clone https://github.com/Itsmmdoha/duckLogger.git
cd duckLogger
```
## 4. 在开发板上安装 DuckLogger
确保您的开发板已通过 USB 连接,然后运行:
```
python flasher.py
```
刷写工具将自动:
* 在开发板上安装 `mpremote` 和所需的 MicroPython 软件包
* 压缩 `index.html` 并将所有文件复制到开发板
* 重启开发板
# 使用方法
1. 将 USB 键盘插入 CH9350 HID 模块。
2. 使用 USB-C 转 USB-A 线将 ESP32-S3 SuperMini 连接到目标 PC。
3. 设备将自动:
* 开始记录击键
* 根据您的设置连接到 Wi-Fi 或创建 Wi-Fi 热点
* 启动 HTTP 服务器
如果处于 Access Point 模式(默认),请连接到 Wi-Fi 热点(默认密码:`duckPass1234`)并打开:
```
http://192.168.4.1/
```
以访问命令与控制中心。
## 支持的 DuckyScript 语法
DuckLogger 目前支持用于 payload 注入的核心 DuckyScript 命令集:
| 命令 | 描述 | 示例 |
| :--- | :--- | :--- |
| `DELAY` | 暂停执行指定的毫秒数。 | `DELAY 500` |
| `STRING` | 按原样输入一串字符。 | `STRING Hello, World!` |
| **组合键** | 发送同时按下的按键。 | `CTRL SHIFT ESC` 或 `ALT i` |
| **单个按键** | 发送单独的特殊按键。 | `ENTER` 或 `TAB` |
# 仓库结构
```
.
├── flasher.py
├── index.html
├── lib
│ ├── access_point.py
│ ├── api.py
│ ├── duckyscript.py
│ ├── keyboard.py
│ ├── key_led.py
│ ├── logger.py
│ ├── mapper.py
│ ├── microdot
│ │ ├── helpers.py
│ │ ├── __init__.py
│ │ ├── microdot.py
│ │ └── websocket.py
│ ├── queue.py
│ ├── settings.py
│ ├── uart_buffer.py
│ ├── wifi.py
│ └── wifi_radio.py
├── LICENSE
├── main.py
├── README.md
├── resources.md
└── settings.json
```
## 第三方库
本项目包含 Miguel Grinberg 编写的 Microdot(MIT 许可证):
https://github.com/miguelgrinberg/microdot标签:BadUSB, C/C++, CH9350, DIY电子, DuckyScript, ESP32-S3, HID攻击, Keylogger, USB键盘记录器, WebSocket, Web界面, Wi-Fi, 事务性I/O, 代码生成, 依赖分析, 固件开发, 廉价硬件, 搜索语句(dork), 无线数据传输, 渗透测试工具, 物联网安全, 硬件安全, 远程控制, 键盘注入