PwnPad README

The project's README from github.com/twelvesec/PwnPad. As one markdown file: README.md.

img

PwnPad: A Hardware Hacking Learning Platform

Static Badge license-shield stars-shield contributors-shield Static Badge Static Badge Static Badge Static Badge

📖 PwnPad Wiki

Want to build your own PwnPad? The PwnPad Wiki has a thorough guide, documentation, and a step-by-step hardware hacking learning path: https://github.com/twelvesec/PwnPadWiki/wiki - it’s the best place to begin.

🎯 Goals

PwnPad was created for anyone curious about hardware hacking, no prior experience required. The project is designed to be as affordable and accessible as possible: you can build the entire setup for under $20, and complete all existing challenges using about $50 worth of basic tools.

Through hands-on learning, PwnPad guides you from the very beginning — including PCB manufacturing, soldering, and firmware extraction, all the way to advanced exploitation techniques. You'll gain practical experience with:

A key feature of PwnPad is its challenge selector via jumper pins, no need to reflash the device when switching between challenges. Simply set the pins to load a different challenge from the pre-flashed firmware.

PwnPad aims to bridge the gap between theory and practice by offering a structured, hands-on path into the world of embedded systems and hardware security.

📦 Folder Overview

Folder Description
firmware/ Firmware for each challenge
hardware/ Schematics, PCB layout, BOM, 3D Models
challenges/ Learning objectives per challenge
tools/ Scripts for building/flashing
docs/ Miscellaneous resources
modules Modules' Gerbers & Schematics

🔍 Challenges Overview

⚠️ Important:
To consider a challenge complete, you must fulfill the goals outlined in the corresponding folder inside challenges/.
Except for Code Heist and Hard Leak, all flags must be retrieved through a serial interface (UART or I2C).

# Name Topics Description
1 Serial Snitch #UART Intercept and decode UART communication.
2 Echo Chamber #UART Intercept and decode UART communication, with security through obscurity.
3 Bus Whisperer #I2C Spy on I2C traffic to extract secrets.
4 Invisible Wires #I2C Attack I2C when slave devices are missing.
5 Code Heist #SPI #ISP #Flash #UART Dump and analyze firmware from flash.
6 Hard Leak #SPI #ISP #EEPROM Extract data from the internal EEPROM.
7 Power Trip #FaultInjection #UART Use glitching to bypass dead code statements.
8 Glitch Storm #FaultInjection #UART Use glitching to bypass password verification.
9 Clock Spy #SideChannel #UART Leak secrets using timing variations.
10 Tempo Leak #SideChannel #UART Leak secrets using timing variations with a twist.
11 Chaos Chain: Glitchgate #FaultInjection #UART Combine UART and glitch attacks to break in.
12 Chaos Chain: Timebomb #UART #SideChannel Combine UART and chain timing leaks to break in.
13 Pizza Order #SPA #SideChannel Use a basic oscilloscope to exfiltrate the password.
14 Ladybirds #SWD #Reversing STM32 Use a SWD debugger and patch the memmory to access the safe.
15 Ladybird I Am Your Father #JTAG #Reversing STM32 Extract the firmware using JTAG and later patch the memmory to access the safe.

🚀 Getting Started

You can find the complete building instructions in the file: docs/PwnPad_building_instruction.pdf

If you're new to soldering or just getting started with hardware hacking, this video will guide you through assembling your PwnPad.

Watch the video

📺 Click the image above to watch the tutorial on YouTube.

🕹️ How to Play

Once you've assembled and flashed your PwnPad, navigate to the challenges/ directory and open the objective file for the specific gamified challenge you want to play.

To get started, simply configure the jumpers as described in the challenge instructions and press the RESET button on your PwnPad.

For instance, to play the challenge "Serial Snitch", go to challenges/Serial Snitch.md and set the jumper pins as shown in the image below:

img

# **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 Select
1 --> 1
2 --> 0
3 --> 0
4 --> 0
5 --> 0

If you'd like to track your challenge progress and submit flags, run:

bash ./tools/webapp/start.sh

Then open your browser and navigate to: http://127.0.0.1:12530

img

There you can submit your flags and monitor your progress.

🤝 How to Contribute

We ❤️ community contributions! If you’d like to add a new hardware challenge to PwnPad, follow the steps below to keep things consistent and functional.

🧩 Create a New Challenge

  1. Add a Header File
    Create a new header file named something like challenge13.h.

  2. Define Your Challenge Function
    Inside the header file, define your challenge function using this template:

    void challenge_template(void) {
        // Initialize I/O
    
        while (1) {
            // Your Main Challenge Logic
        }
    }
    

🔀 Register Your Challenge

  1. Update the Main Switch
    In PwnPad.ino, locate the switch statement used for challenge selection. Add a new case for your challenge number, and call your function from there.

  2. Challenge Selector Logic
    The challenge selection is handled using 5 binary jumper pins, where:

    • Pin 1 = Least Significant Bit (LSB)
    • Pin 5 = Most Significant Bit (MSB)

    For example:

    Binary: 00011 → Decimal: 3 → Selects Challenge 3
    

Make sure your challenge is self-contained, documented, and has clear goals in its own folder.

Let’s build awesome open-source hardware hacking content together!


🛣️ Roadmap

🧠 Software Enhancements

🔧 Hardware Upgrades


🪪 Licensing

This project is licensed under the GNU General Public License v3.0. See LICENSE for full text.


img

Created by Georgios Roumeliotis from TwelveSec

PwnPad (twelvesec/PwnPad)

Searching Database…

1.2K ·GitHub
这是什么?PwnPad 是一个价格实惠的 DIY 硬件破解学习平台,通过 15 个动手挑战教授嵌入式安全,内容涵盖从 PCB 组装到侧信道和故障注入攻击。
想动手做一块该怎么开始?按照 docs/PwnPadbuildinginstruction.pdf(或 PwnPad Wiki)里的完整制作说明,焊接并组装开发板,刷入固件,然后设置跳线针脚并按下 RESET,加载你想玩的挑战。
解这些挑战需要哪些工具?除了 PwnPad 开发板,你还需要万用表、Arduino UNO、逻辑分析仪、杜邦线,以及故障注入挑战用的带 MOSFET 的 Raspberry Pi Pico。
需要先有焊接或电子方面的经验吗?不需要,无需任何前期经验;整个制作过程的设计对新手友好,开发板成本不到 20 美元,再配约 50 美元的基础工具即可完成全部挑战。
它是为谁设计的?任何对硬件破解感兴趣的人,从零基础新手到想要系统练习嵌入式安全的人都可以——项目不假定你具备任何前期经验。
这 15 个挑战具体涵盖哪些内容?挑战从 UART 和 I2C 嗅探开始,逐步进阶到 SPI/ISP 固件转储、EEPROM 提取、电压故障注入、时序侧信道泄露,最后是对 STM32 芯片的 JTAG/SWD 逆向,每个挑战都以夺取一个 flag 结束。
如何在不重新刷机的情况下切换挑战?PwnPad 用 5 个二进制跳线针脚来选择运行哪个预刷入的挑战;只需设置针脚再按 RESET 即可。
可以跟踪进度并提交 flag 吗?可以,本地网页仪表盘让你提交 flag,并查看 15 个挑战中你已完成哪些。
Creator
twelvesec
Size
16.7 MB
Stars
1.2K
Updated
CommitDec 05
Age
1y
Commits · 90 Days