badge-bsides-sandiego-2026

Public

@electroniccats

Download board files

Files for version 1. Pick what you came for.

Share badge-bsides-sandiego-2026

Check access before sharing the link.

Who can open this board

Anyone can open this board. No sign-in is required.

This link opens the latest version. Copying it does not grant additional access.

Loading 3D model… large boards can take a moment.

README

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

ComponentDetails
MCUESP32-C6
DisplaySH1106G OLED 128x64 (I2C)
LEDs2x WS2812B NeoPixel
Input4-axis joystick + boot button
MotionAccelerometer (shake detection)
WirelessBluetooth Low Energy (BLE)

Controls

InputAction
Joystick UP / DOWNNavigate menu
Joystick RIGHTConfirm / Enter
Joystick LEFTBack / Cancel
ShakeMagic 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 / PatternMeaning
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

SettingValue
BoardESP32C6 Dev Module
USB CDC On BootEnabled
Flash ModeQIO 80MHz
Flash Size4MB (32Mb)
Partition SchemeHuge APP (3MB No OTA/1MB SPIFFS)
Upload Speed921600

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

Comments

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

Ask about this board

Sign in to BoardRepo

New here? Signing in creates your account; there is no separate sign-up.