Esther7171/Digispark-HID-Toolkit
GitHub: Esther7171/Digispark-HID-Toolkit
基于 Digispark ATtiny85 的开源 USB HID 键盘模拟工具包,用于 BadUSB 攻击演示、WiFi 凭据抓取及网络安全教育培训。
Stars: 2 | Forks: 0

# Digispark HID 工具包
### ATtiny85 USB HID 自动化框架
[](https://github.com/Esther7171/DigiStrike/stargazers)
[](https://github.com/Esther7171/DigiStrike/network/members)
[](LICENSE)
[](https://github.com/Esther7171/DigiStrike/issues)
[](https://github.com/Esther7171/DigiStrike/pulls)
[](https://github.com/Esther7171/DigiStrike)
**用于 USB HID 自动化、键盘模拟、设备脚本和网络安全教育的开源 Digispark ATtiny85 工具包。**
[入门指南](#getting-started) | [Telegram 设置](#telegram-integration) | [Discord 设置](#discord-integration) | [文档](docs/) | [示例](examples/)
## 什么是 Digispark HID 工具包?
Digispark HID 工具包是一个基于 **Digispark ATtiny85** 微控制器的开源框架,用于演示 **USB HID 自动化**、**键盘模拟** 和 **网络安全教育** 概念。
当插入计算机时,Digispark ATtiny85 会注册为一个 **USB 键盘设备**。宿主操作系统会无条件信任它——不需要驱动程序,没有防病毒提示,也没有 USB 存储警告。然后,该设备会以机器速度执行预先编程的击键,自动完成人类需要几秒钟才能完成的任务。
该工具包提供了两个随时可用的演示 payload,专注于 **WiFi 凭据安全意识**——向大学展览和 CTF 活动的观众准确展示数据能以多快的速度从无人值守的机器中读取,并在 25 秒内被外发到 **Telegram** 或 **Discord**。
## 目录
- [功能](#features)
- [硬件要求](#hardware-requirements)
- [支持的平台](#supported-platforms)
- [安装说明](#installation)
- [入门指南](#getting-started)
- [Telegram 集成](#telegram-integration)
- [Discord 集成](#discord-integration)
- [项目结构](#project-structure)
- [示例](#examples)
- [截图](#screenshots)
- [用例](#use-cases)
- [常见问题](#faq)
- [路线图](#roadmap)
- [贡献指南](#contributing)
- [安全政策](#security-policy)
- [免责声明](#disclaimer)
- [许可证](#license)
## 功能
- 通过 Digispark ATtiny85 实现 USB HID 键盘模拟
- 用于安全意识演讲的 WiFi 凭据外发演示
- 两种外发渠道:Telegram bot 和 Discord webhook
- 全自动——插入后不到 25 秒即可完成
- 零痕迹设计:清除临时文件、PowerShell 历史记录、注册表 MRU 和 Windows 事件日志
- 凭据以实时击键方式输入——不会存储在脚本文件或 GitHub 中
- 每次运行使用随机临时文件名
- 适合初学者的示例,用于学习 HID 自动化
- Telegram 和 Discord 集成的详细设置文档
- 用于 Markdown 和 PowerShell linting 的 GitHub Actions
## 硬件要求
| 项目 | 详情 |
|------|---------|
| Digispark ATtiny85 | 主板。推荐使用 USB-A 版本。 |
| USB-A 端口 | 位于目标机器上 |
| 用于刷写的计算机 | 装有 Arduino IDE 的 Windows、Linux 或 macOS |
**哪里购买:**
Amazon India、Robu.in、AliExpress 或任何当地的电子商店。
搜索:`Digispark ATtiny85`
成本:**低于 ₹300(约 3 美元)**——目前最实惠的 USB HID 工具。
有关完整的硬件详细信息、驱动程序安装和主板规格,请参阅 [docs/hardware.md](docs/hardware.md)。
## 支持的平台
| 平台 | HID 自动化 | WiFi Payload |
|----------|:--------------:|:------------:|
| Windows 10 | 是 | 是 |
| Windows 11 | 是 | 是 |
| Linux | 是 | 否(payload 针对 Windows) |
| macOS | 是 | 否(payload 针对 Windows) |
Digispark ATtiny85 本身可以在任何 OS 上工作。WiFi 凭据演示 payload 专门针对 Windows,因为它使用了 `netsh wlan` 和 PowerShell。
## 安装说明
### 步骤 1:安装 Arduino IDE
从 [arduino.cc/en/software](https://www.arduino.cc/en/software) 下载 Arduino IDE 1.8.x 版本。
### 步骤 2:添加 Digispark 开发板包
1. 打开 Arduino IDE。
2. 转到 `File` > `Preferences`。
3. 将此 URL 粘贴到 *Additional Board Manager URLs* 字段中:
http://digistump.com/package_digistump_index.json
4. 点击 OK。
5. 转到 `Tools` > `Board` > `Board Manager`。
6. 搜索 **Digistump AVR Boards** 并点击 **Install**。
### 步骤 3:选择开发板
```
Tools > Board > Digistump AVR Boards > Digispark (Default - 16.5mhz)
```
### 步骤 4:验证 DigiKeyboard 库
`DigiKeyboard.h` 库随 Digistump 开发板包一起提供。无需单独安装。
如果 Arduino IDE 报告缺少该库:
```
Sketch > Include Library > Manage Libraries > search "DigiKeyboard" > Install
```
## 入门指南
选择您要使用的外发渠道,配置草图,然后进行刷写。
| 渠道 | 草图 | Payload 脚本 |
|---------|--------|---------------|
| Telegram | [digispark/telegram/r00t_b0t.ino](digispark/telegram/r00t_b0t.ino) | [scripts/void.ps1](scripts/void.ps1) |
| Discord | [digispark/discord/r00t_b0t.ino](digispark/discord/r00t_b0t.ino) | [scripts/null.ps1](scripts/null.ps1) |
两个 payload 脚本都公开托管在 GitHub 上,没有任何机密信息。凭据在运行时以击键方式注入。
### 刷写 Digispark
1. 在 Arduino IDE 中打开您选择的 `.ino` 文件。
2. 替换占位符值(token、聊天 ID 或 webhook URL——见以下章节)。
3. 点击 **Upload**。
4. 等待直到 Arduino IDE 显示:
Running Digispark Uploader...
Plug in device now... (will timeout in 60 seconds)
5. **只有此时**才能插入 Digispark。
6. 等待出现:
>> Micronucleus done. Thank you!
设备已准备就绪。将其插入任何目标 Windows 机器即可。
### 执行时间线
每个延迟都在 `.ino` 文件中硬编码,并且完全可调。
| 阶段 | 动作 | 默认时间 |
|-------|--------|-------------|
| HID 稳定 | OS 枚举设备 | 3.0秒 |
| Win+R | 打开运行对话框 | 1.0秒 |
| 打开 PowerShell | 使用 `-ep bypass` 启动 PS | 4.0秒 |
| 注入凭据 | 将 token 或 webhook 作为环境变量输入 | 0.4秒 |
| 执行 Payload | 下载并运行脚本,进行外发 | 15.0秒 |
| 干净退出 | 关闭 PowerShell | 0.5秒 |
| **总计** | | **约 23.9秒** |
在较慢的机器上增加延迟。在较快的机器上减少延迟。
## Telegram 集成
本节将准确向您展示如何从头开始设置 Telegram bot 并将其连接到 Digispark 草图。详细的完整指南请参阅 [docs/telegram-setup.md](docs/telegram-setup.md)。
### 步骤 1:使用 BotFather 创建 Bot
1. 在您的手机或桌面上打开 Telegram。
2. 在搜索栏中输入 `@BotFather` 并打开**已验证账户**(蓝色勾号)。
3. 点击 **Start** 或发送 `/start`。
4. 发送 `/newbot`。
BotFather 会问两个问题:
**显示名称** —— 任何名称都可以,可以包含空格。示例:`My Data Bot`
**用户名** —— 必须以 `bot` 结尾,不能有空格。示例:`my_data_r00t_bot`
如果用户名已被占用,BotFather 会提示您选择另一个。
完成后,BotFather 会回复您的 **API token**:
```
Use this token to access the HTTP API:
1234567890:ABCDefghIJKLmnoPQRsTUVwxyz1234567890
```
复制完整的 token,包括冒号前面的数字。请妥善保管。
### 步骤 2:获取您的聊天 ID
**私聊(仅限您和 bot):**
1. 在 Telegram 中搜索您的 bot 用户名并打开聊天。
2. 向 bot 发送任何消息(例如 `hi`)。
3. 在浏览器中打开此 URL,替换掉 `YOUR_TOKEN`:
https://api.telegram.org/botYOUR_TOKEN/getUpdates
4. 在 JSON 响应中,查找:
"chat": {
"id": 987654321,
"type": "private"
}
5. 复制 `"id"` 旁边的数字。这就是您的聊天 ID。
**群聊:**
1. 创建一个 Telegram 群组并将您的 bot 添加为成员。
2. 在群组中发送任何消息。
3. 访问上面相同的 `getUpdates` URL。
4. 群聊 ID 以减号开头:
"chat": {
"id": -100987654321,
"type": "supergroup"
}
5. 复制包含减号在内的完整数字。
### 步骤 3:配置草图
在 Arduino IDE 中打开 `digispark/telegram/r00t_b0t.ino`。
找到这两行:
```
DigiKeyboard.print("$env:TK='PASTE_TOKEN_HERE'");
DigiKeyboard.print("$env:CI='PASTE_CHAT_ID_HERE'");
```
替换占位符:
| 占位符 | 填入内容 |
|-------------|------------|
| `PASTE_TOKEN_HERE` | 您的完整 bot token,例如 `1234567890:ABCDef...` |
| `PASTE_CHAT_ID_HERE` | 您的聊天 ID,例如 `987654321` 或 `-100987654321` |
这些值以实时击键方式输入。它们永远不会到达磁盘、脚本文件或 GitHub。
按照[入门指南](#getting-started)中的说明刷写开发板。大约 24 秒后,一个包含所有已保存 WiFi 凭据的 `.txt` 文件就会发送到您的 Telegram 聊天中。
## Discord 集成
本节向您展示如何创建 Discord webhook 并将其连接到草图。完整指南请参阅 [docs/discord-setup.md](docs/discord-setup.md)。
### 步骤 1:创建 Discord 服务器(如果已有可跳过)
1. 打开 Discord。
2. 点击左侧边栏底部的 **+** 图标。
3. 点击 **Create My Own** 并按照提示操作。
4. 随意命名。示例:`Lab Alerts`
### 步骤 2:创建 Webhook
1. 右键单击您想要接收警报的频道,然后点击 **Edit Channel**。
2. 在频道设置的左侧边栏中,点击 **Integrations**。
3. 点击 **Webhooks**。
4. 点击 **New Webhook**。
5. 为 webhook 命名。示例:`r00t_b0t`
6. 使用 **Channel** 下拉菜单确认频道正确无误。
7. 点击 **Copy Webhook URL**。
该 URL 如下所示:
```
https://discord.com/api/webhooks/1234567890123456789/ABCDefghIJKLmnoPQRsTUVwxyz-LONGTOKEN
```
请对此 URL 保密。任何拥有它的人都可以向您的频道发布消息。
8. 点击 **Save Changes**。
### 步骤 3:预测试 Webhook(可选)
在刷写之前,请在您自己的机器上通过 PowerShell 验证该 URL 是否有效:
```
$wh = "https://discord.com/api/webhooks/YOUR_ID/YOUR_TOKEN"
$body = ConvertTo-Json @{ content = "Test from Digispark HID Toolkit" }
Invoke-RestMethod -Uri $wh -Method Post -ContentType "application/json" -Body $body
```
如果消息出现在 Discord 中,说明 webhook 正在工作。
### 步骤 4:配置草图
在 Arduino IDE 中打开 `digispark/discord/r00t_b0t.ino`。
找到这一行:
Topics` 将这些主题添加到存储库,以提高发现率:
```
digispark attiny85 usb-hid hid keyboard-emulation usb-automation
arduino embedded-systems device-scripting cybersecurity security-research
windows badusb red-team arduino-hid
```
## 免责声明
本项目仅供教育和授权的安全研究使用。
- 仅在您拥有或获得明确书面测试许可的设备上使用
- 适用于大学展览、CTF 实验室和网络安全意识研讨会
- 未经授权的使用违反了 IT 法案(印度)、CFAA(美国)及全球同等法律
- 作者不对滥用或由此产生的任何后果承担责任
## 许可证
BSD 3-Clause 许可证
版权所有 (c) 2026 Esther7171
完整文本请参阅 [LICENSE](LICENSE)。
## 作者
**Esther7171**
[](https://github.com/Esther7171)
[](https://github.com/Esther7171/DeathEsther)
如果这帮助您了解了 USB HID 攻击和网络安全基础知识,请点一个 ⭐
标签:AI合规, Arduino, BadUSB, Digispark, IP 地址批量处理, Libemu, StruQ, UML, USB HID, 键盘模拟