badge-bsides-sandiego-2026
PublicLoading 3D model… large boards can take a moment.
Badge BSides San Diego 2026
Official conference badge for BSides San Diego 2026, designed and built by Electronic Cats. It is a standalone cryptography challenge device with BLE cooperative play and a hidden easter egg.
Hardware
| Component | Details |
|---|---|
| MCU | ESP32-C6 |
| Display | SH1106G OLED 128x64 (I2C) |
| LEDs | 2x WS2812B NeoPixel |
| Input | 4-axis joystick + boot button |
| Motion | Accelerometer (shake detection) |
| Wireless | Bluetooth Low Energy (BLE) |
Controls
| Input | Action |
|---|---|
| Joystick UP / DOWN | Navigate menu |
| Joystick RIGHT | Confirm / Enter |
| Joystick LEFT | Back / Cancel |
| Shake | Magic 8 Ball answer (in 8 Ball mode) |
Challenges
The badge has two tiers of cryptography challenges plus cooperative and secret modes.
Magic 8 Ball
Shake the badge for a fortune. Not everything is as random as it seems.
Basic — Old School Ciphers
Three challenges based on classical cryptography. You must first prove you know your history before the menu unlocks.
- Challenge 1 — substitution cipher
- Challenge 2 — rotation cipher
- Challenge 3 — transposition cipher
Complete all three to earn the basic flag.
Advanced — Modern Ciphers
Four challenges based on modern cryptographic primitives. Harder gate, harder ciphers — and the hints may not mean what you think.
- Challenge 1 — encoding
- Challenge 2 — bitwise operation
- Challenge 3 — stream cipher (read the hint carefully)
- Challenge 4 — your badge knows the answer
Complete all four to earn the advanced flag.
Coop Mode
Find another badge holder. Bring your badges within ~10 cm of each other. The badges will detect each other over BLE, negotiate roles automatically, and perform a handshake. Both players unlock simultaneously.
If you cannot find another player physically, there is a manual entry path in the menu.
Secret — Forbidden Shake
There is a hidden interaction that can only be triggered after completing specific prerequisites. When activated, it broadcasts an event visible to every badge in the room.
Figure out the conditions. You will know when you find it.
LED States
| Color / Pattern | Meaning |
|---|---|
| Blue (solid) | Boot |
| Red (solid) | Idle |
| Red (blinking) | BLE handshake received |
| Rainbow (cycling) | All advanced challenges complete |
| Red (solid, instant) | Forbidden Shake triggered |
Building the Firmware
Requirements
- Arduino IDE 2.x
- esp32 by Espressif Systems board package
Add this URL under File → Preferences → Additional boards manager URLs:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Board Settings
| Setting | Value |
|---|---|
| Board | ESP32C6 Dev Module |
| USB CDC On Boot | Enabled |
| Flash Mode | QIO 80MHz |
| Flash Size | 4MB (32Mb) |
| Partition Scheme | Huge APP (3MB No OTA/1MB SPIFFS) |
| Upload Speed | 921600 |
Libraries
Install via Library Manager:
Adafruit SH110X(pulls in Adafruit GFX automatically)FastLEDAESLib
BLE libraries (BLEDevice, BLEServer, BLEScan) are included with the ESP32 board package.
Flash
# Open firmware/firmware.ino in Arduino IDE and click Upload
# If the board does not enumerate, hold BOOT (GPIO 9) while connecting USB
Cloning a Badge (esptool)
To read the full firmware from a working badge and write it to a new board:
pip install esptool
# Read from source badge (4MB flash)
esptool.py --chip esp32c6 -p /dev/cu.usbmodem101 -b 921600 \
read_flash 0x0 0x400000 badge_full.bin
# Write to new board
esptool.py --chip esp32c6 -p /dev/cu.usbmodem102 -b 921600 \
write_flash 0x0 badge_full.bin
# Optional: erase saved progress on the new board (NVS partition)
esptool.py --chip esp32c6 -p /dev/cu.usbmodem102 erase_region 0x9000 0x4000
The MAC address is burned into eFuse and is not cloned. Each board will have its own BLE identity and may get a different Coop role assignment.
Repository Structure
├── Firmware/
│ ├── firmware/ # Main badge firmware (Arduino sketch)
│ └── badge_blinker/ # Standalone BLE blinker tool
└── hardware/ # KiCad PCB design files
License
MIT — see LICENSE.
Credits
Designed and developed by the Electronic Cats firmware and hardware team.

No comments yet. Be the first to ask about this board.