There is an ESP32 Flasher program that can be downloaded here: https://www.espressif.com/en/support/download/other-tools
It doesn't need to be installed. Click it to run. On the first screen that pops up, select:
ChipType = ESP32-C3
WorkMode = Develop
LoadMode = UART
It will open up a screen that looks like the image below. There are 3 files that we will share that need to be added in here. Once each file is selected, we have to tell it where to put it in the badge's memory. (also see the screenshot)
bootloader.bin @ 0x0
partition-table.bin @ 0x8000
BSides_Badge_2025.bin @ 0x10000
Set the rest of the settings as follows:
SPI SPEED = 80MHz
SPI MODE = DIO
DoNotChgBin = checked
COM (at the bottom) = whatever COM port the badge shows up in. This shouldn't need to be changed between badges
BAUD (at the bottom) = 115200
Once the badge is plugged in, press START. When you see FINISH in the bottom left, the badge has been programmed.
📦 Requirements
• Python 3.10+ installed
• esptool.py installed (we’ll walk you through it)
• All three firmware files:
• bootloader.bin
• partition-table.bin
• BSides_Badge_2025.bin
🔧 Manual Flashing Instructions (MacOS/Linux)
Download the Firmware
Get the firmware bundle from the link provided at the top of this page. Save all three .bin files into a folder of your choice.
Install esptool
Open Terminal and run:
pip install --user esptool
If that doesn’t work due to system restrictions (especially on macOS), see the automated script below. You may need to install in a venv.
Find the Badge’s Serial Port
ls /dev/cu.usbmodem*
You should see something like:
/dev/cu.usbmodem311401
If multiple devices show up, you may need to try a couple to find the correct one.
Flash the Badge
Make sure you’re in the same directory as the firmware files, then run:
python -m esptool --chip esp32c3 --port /dev/cu.usbmodemXXXXX --baud 115200 \
--before default_reset --after hard_reset \
write_flash --flash_mode dio --flash_freq 80m --flash_size detect \
0x0 bootloader.bin \
0x8000 partition-table.bin \
0x10000 BSides_Badge_2025.bin
Replace /dev/cu.usbmodemXXXXX with the one you found in Step 3
🎯 Success Indicators
• LEDs will flash multiple colors
• Then turn solid white
• Then finally a stable green
That green light means your badge is fully programmed and ready to go!
Now the fun begins — see what you can discover. There are puzzles, sensors, and maybe even a few secrets…
⚙️ Optional: One-Command Flashing (MacOS-only, use at your own risk)
If you’d rather skip all the setup and let a script do everything for you:
1. Download:
• The firmware files (bootloader.bin, partition-table.bin, BSides_Badge_2025.bin)
• The script: 2025_bsides_badge_flasher.sh
2. Make the script executable:
chmod +x 2025_bsides_badge_flasher.sh
3. Run it:
./2025_bsides_badge_flasher.sh
This script will:
• Check for Python 3.10+
• Set up a virtual environment
• Install esptool in that venv
• Prompt you to put the badge in bootloader mode
• Detect the serial port
• Flash the firmware
Tested on macOS — may work on Linux as well?