Skip to content

ElectronicCats/badge-bsides-sandiego-2026

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Badge BSides San Diego 2026

Electronic Cats License: MIT

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)
  • FastLED
  • AESLib

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.

Electronic Cats

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors