Skip to content
BSides Lisbon 2026 / Badge / Unlock

Unlock your badge

Turn your badge into a normal ESP32-S3 you can flash yourself.

The game is over. The badge is yours: unlock it and it becomes a normal ESP32-S3 board that takes any firmware you write. Until you do, it keeps running ARIA's firmware and refuses everything else.

Unlocking erases everything on the badge, for good: your contacts, Stegomatrix messages, high scores and the game firmware itself. After the unlock the badge will not start again until you flash new firmware over USB, so have a computer ready.

The unlock code

8THM-DVQ2-GAH2-FEAL-SZ33

Capitals or not, with or without the dashes: either works.

1. Open the badge's console

  1. Plug the badge into your computer with a USB-C data cable (not a charge-only one).
  2. Open any serial terminal on its port at 115200 baud: the Arduino IDE's Serial Monitor, screen /dev/ttyACM0 115200 (Linux), screen /dev/cu.usbmodem* 115200 (macOS), PuTTY (Windows, the COM port of the badge), or python -m serial.tools.miniterm.
  3. Press Enter: the badge answers. Type help to see its commands.

2. Unlock

  1. Type unlock 8THM-DVQ2-GAH2-FEAL-SZ33 and press Enter. The badge checks the code (one try every 3 seconds) and warns you that everything will be erased.
  2. Within 60 seconds type unlock confirm.
  3. Within 60 seconds more type unlock ERASE (capitals).
  4. The badge erases its data and switches flash encryption off. It then resets and stays quiet: that is expected. Your badge is now unlocked.

3. Flash your own firmware

The badge is an ESP32-S3 (in the Arduino IDE: ESP32S3 Dev Module). Two things stay from the event and cannot be changed: the ROM's secure download mode (you can write the flash, not read it back) and JTAG is off. In practice that means two extra options when you flash:

  • esptool (pip install esptool):
    esptool --chip esp32s3 -p PORT --no-stub write-flash --no-compress 0x0 your_firmware.merged.bin
    A merged binary is what the Arduino IDE writes with Sketch → Export Compiled Binary (*.merged.bin). It takes about 30 seconds.
  • Arduino IDE / PlatformIO: add --no-stub and --no-compress to the upload command (in the Arduino IDE through a platform.local.txt next to the ESP32 core's platform.txt).

If the badge does not show up as a port, hold the IO0 button while you plug it in: that starts the ROM loader, ready to flash.

← The badge