NorthSec 2025 badge
===================
Brought to you by the Team badge of NorthSec.
## Overview
## Hardware
The NorthSec 2025 badge is loosely based on the ESP32-C3 design with an
[ESP32-C3 microcontroller](https://www.espressif.com/en/products/socs/esp32-c3)
(ESP32-C3-WROOM-02-N4) which is used to drive several periphery devices:
- Eighteen [NeoPixel](https://en.wikipedia.org/wiki/Adafruit_Industries#NeoPixel) RGB LEDs
- Five buttons
- One IR 'pairing' connector
- Two [Shitty Add-On V1.69bis](https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard/) connector
The badge is powered through a USB-C port or through 3 AAA batteries.
If you wish to hack your badge or create a new one based on the hardware. All
the information [is available here](hw/2025/).
## Building the firmware
The firmware is based on the [Espressif IoT Development
Framework](https://docs.platformio.org/en/latest/frameworks/espidf.html). The
build system uses
[PlatformIO](https://docs.platformio.org/en/stable/what-is-platformio.html) to
easily manage the dependencies.
You can install it on Debian / Ubuntu in a python virtualenv with these
commands:
```bash
sudo apt install python3-virtualenv
virtualenv .venv
. .venv/bin/activate
pip install platformio
```
The installation procedure for your OS may differ a little, please consult the
[PlatformIO
documentation](https://docs.platformio.org/en/stable/core/installation/index.html)
if you have any difficulties.
Once the installation is complete you can build the firmware:
```bash
# Conference firmware
pio run -e conference
# CTF firmware
pio run -e ctf
```
## Flashing
Flash the firmware with this command:
```bash
# Conference firmware
pio run -t upload -e conference
# CTF firmware
pio run -t upload -e ctf
```
If multiple badges are connected, you can select which badge will be flash with
the `--upload-port ` option:
```bash
# Conference firmware
pio run -t upload -e conference --upload-port
```
To improve the upload speed, you can skip the build validation/process with the
`-t nobuild` option:
```bash
# Conference firmware
pio run -t upload -t nobuild -e conference
```
## Debugging
To read the logging statements output on the USB serial interface, it is
possible to use `pio device monitor` or `idf.py`'s `monitor` command.
However, you can use your preferred terminal emulator by pointing it to the
`/dev/ttyACM0` device. The badge is configured to output at `115200` bauds,
without parity, and with one stop bit per character.
Note that electrically resetting the board using the hardware switch will cause
the pseudo-terminal device to disappear, making it hard to read the logs
emitted during boot.
Pulsing the DTR signal (lowering it for 1 second) will cause the board to reset
without affecting the pseudo-terminal device, allowing you to read early-boot
messages. This is supported by most terminal emulators.
## Credits
NorthSec CTF badge 2025 is brought to you by the teamwork of:
- [abdelq](https://github.com/abdelq)
- [IterateMe](https://github.com/IterateMe)
- [lle](https://github.com/lle)
- [nyx0](https://github.com/nyx0)
- [p0ns](https://github.com/p0ns)
- [padraignix](https://github.com/padraignix)
- [Svieg](https://github.com/Svieg)
- [sylemieux](https://github.com/sylemieux)
- [TheKGBSpy](https://github.com/TheKGBSpy)
- [mjeanson](https://github.com/mjeanson)
Special thanks to:
- [20th](https://github.com/20th)
- [jgalar](https://github.com/jgalar)