twelvesec/PwnPad

GitHub: twelvesec/PwnPad

PwnPad 是一个面向硬件安全学习的低成本动手平台,通过可扩展的挑战套件解决理论与实践脱节的问题。

Stars: 871 | Forks: 83

![img](https://github.com/twelvesec/PwnPad/blob/main/docs/img/pwnpad.gif?raw=true) # PwnPad:一个硬件黑客学习平台 ![Static Badge](https://img.shields.io/badge/Black%20Hat%20Arsenal%20-Europe%202025-black) ![license-shield](https://img.shields.io/github/license/twelvesec/PwnPad) ![stars-shield](https://img.shields.io/github/stars/twelvesec/PwnPad) ![contributors-shield](https://img.shields.io/github/contributors/twelvesec/PwnPad) ![Static Badge](https://img.shields.io/badge/HTML5-blue) ![Static Badge](https://img.shields.io/badge/CSS3-green) ![Static Badge](https://img.shields.io/badge/JavaScript-red) ![Static Badge](https://img.shields.io/badge/Arduino-blue) ## 📖 PwnPad Wiki 想要构建你自己的 PwnPad 吗?PwnPad Wiki 提供了详尽的指南、文档以及循序渐进的硬件黑客学习路径:https://github.com/twelvesec/PwnPadWiki/wiki - 这是最好的起点。 ## 🎯 目标 **PwnPad** 专为对硬件黑客技术感兴趣的人而创建,无需任何经验。该项目旨在尽可能降低成本和门槛:你可以以**低于 20 美元**的造价构建整个环境,并使用价值约 **50 美元的基础工具**完成所有现有的挑战。 通过实践学习,PwnPad 将从一开始就为你提供指导——包括 PCB 制造、焊接和固件提取,一直到高级的漏洞利用技术。你将获得以下方面的实践经验: * 串行通信协议,如 **UART**、**SPI** 和 **I2C** * 通过 ISP 和 EEPROM 转储进行**固件提取** * 构建你自己的 **ISP 编程器** * 执行**电压故障注入**和**基于时间的侧信道攻击** PwnPad 的一个核心特性是通过跳线引脚进行**挑战选择**,在切换挑战时无需重新烧录设备。只需设置引脚,即可从预烧录的固件中加载不同的挑战。 PwnPad 旨在通过提供一条结构化且充满实践的路径,带你进入嵌入式系统和硬件安全的世界,从而弥合理论与实践之间的鸿沟。 ## 📦 目录概述 | 目录 | 描述 | | ------------- | -------------------------------------- | | `firmware/` | 每个挑战的固件 | | `hardware/` | 原理图、PCB 布局、BOM、3D 模型 | | `challenges/` | 每个挑战的学习目标 | | `tools/` | 用于构建/烧录的脚本 | | `docs/` | 杂项资源 | | `modules` | 模块的 Gerber 文件和原理图 | ## 🔍 挑战概述 |#|名称|主题|描述| |---|---|---|---| |1|Serial Snitch|`#UART`|拦截并解码 UART 通信。| |2|Echo Chamber|`#UART`|拦截并解码 UART 通信,包含隐蔽式安全机制。| |3|Bus Whisperer|`#I2C`|监听 I2C 流量以提取机密。| |4|Invisible Wires|`#I2C`|在从设备缺失时攻击 I2C。| |5|Code Heist|`#SPI` `#ISP` `#Flash` `#UART`|从 Flash 转储并分析固件。| |6|Hard Leak|`#SPI` `#ISP` `#EEPROM`|从内部 EEPROM 提取数据。| |7|Power Trip|`#FaultInjection` `#UART`|使用 Glitch 绕过死代码语句。| |8|Glitch Storm|`#FaultInjection` `#UART`|使用 Glitch 绕过密码验证。| |9|Clock Spy|`#SideChannel` `#UART`|利用时序变化泄露机密。| |10|Tempo Leak|`#SideChannel` `#UART`|利用带有变化的时序泄露机密。| |11|Chaos Chain: Glitchgate|`#FaultInjection` `#UART` |结合 UART 和 Glitch 攻击进行入侵。| |12|Chaos Chain: Timebomb|`#UART` `#SideChannel`|结合 UART 并链式利用时序泄露进行入侵。| |13|Pizza Order|`#SPA` `#SideChannel`|使用基础示波器窃取密码。| |14|Ladybirds|`#SWD` `#Reversing` `STM32`|使用 SWD 调试器并修改内存以访问保险箱。| |15|Ladybird I Am Your Father|`#JTAG` `#Reversing` `STM32`|使用 JTAG 提取固件,随后修改内存以访问保险箱。| ## 🚀 新手入门 你可以在以下文件中找到完整的组装说明:`docs/PwnPad_building_instruction.pdf` 如果你是焊接新手,或者刚刚接触硬件黑客技术,这个视频将指导你完成 PwnPad 的组装。 [![观看视频](https://img.youtube.com/vi/uaiB-Esttt4/0.jpg)](https://www.youtube.com/watch?v=uaiB-Esttt4) 📺 **点击上方图片即可在 YouTube 上观看教程。** ### 🔬 解决挑战的推荐设备 - 万用表 - Arduino UNO - 逻辑分析仪 - 跳线 - 用于电压故障注入挑战的 Raspberry Pi Pico 和 MOSFET。 ### 🕹️ 如何游玩 组装并烧录好你的 PwnPad 后,进入 challenges/ 目录,打开你想玩的特定游戏化挑战的目标文件。 要开始游戏,只需按照挑战说明中的描述配置跳线,然后按下 PwnPad 上的 RESET 按钮即可。 例如,要游玩“Serial Snitch”挑战,请转到 challenges/Serial Snitch.md 并如下图所示设置跳线引脚: ![img](https://github.com/twelvesec/PwnPad/blob/main/docs/img/modeselect-example.png?raw=true) ``` # **Challenge 1: "Serial Snitch"** As a skilled hardware hacker, you've intercepted a mysterious device recovered from a rogue tech syndicate. The device, dubbed **"Specter-1"**, controls access to a secret underground server, but its interface remains locked behind an unknown UART configuration. Your mission is clear: 1. **Identify the UART pins** you've uncovered during your investigation. 2. **Determine the correct baud rate** to establish a stable connection. 3. **Access the device’s command interface** and unlock control over the system’s lighting grid. ## Challenge 选择 1 --> 1 2 --> 0 3 --> 0 4 --> 0 5 --> 0 ``` 如果你想记录自己的挑战进度并提交 flag,请运行: ``` bash ./tools/webapp/start.sh ``` 然后打开浏览器并访问:`http://127.0.0.1:12530` ![img](https://static.pigsec.cn/wp-content/uploads/repos/cas/8c/8cf9a00b4de9f9d85b38939fc7c611fbbb05f6d916b7794e1d4d73dacceb7566.png) 在这里你可以提交 flag 并查看你的进度。 ## 🛣️ 路线图 ### 🧠 软件增强 - [x] 引入简单功率分析 (SPA) 挑战 - [ ] 引入差分功率分析 (DPA) 挑战 ### 🔧 硬件升级 - [x] 使用 DIP 开关简化故障注入接口以断开电容 - [x] 实现外部模块插件的接口 - [x] 开发新的附加模块(与现有 PwnPad 版本完全向后兼容): - [x] 外部存储模块 - [x] BLE (低功耗蓝牙) 模块 - [ ] RF (射频) 模块 ## 🪪 许可证 该项目基于 **GNU General Public License v3.0** 授权。有关完整文本,请参阅 [LICENSE](LICENSE)。
img

由 TwelveSec 的 Georgios Roumeliotis 创建

标签:Arduino, 安全研究, 嵌入式系统, 漏洞修复, 物联网安全, 硬件安全, 硬件黑客, 网络安全培训