rp2040 based CTF challenge for DePaul University Daemoncon 2024 and 2025
  • C 67.6%
  • Python 30%
  • Makefile 0.8%
  • Linker Script 0.8%
  • CMake 0.5%
  • Other 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2025-01-18 20:18:42 -06:00
src Beta test before second release 2025-01-18 20:18:42 -06:00
.gitignore Enable static compilation 2023-11-11 11:45:02 -06:00
CMakeLists.txt Add simple shell flag 2025-01-18 18:46:25 -06:00
flags.txt Finalize shell challenge: fix typos, clean up, cycle flags 2024-01-24 20:46:40 -06:00
flake.lock Add pshell code and update cmake; add nix dev environment for reproducible builds 2025-01-18 11:54:38 -06:00
flake.nix Add pshell code and update cmake; add nix dev environment for reproducible builds 2025-01-18 11:54:38 -06:00
LICENSE Initial commit 2023-11-11 11:37:03 -06:00
pico_extras_import_optional.cmake Fix output printing 2023-11-11 20:35:21 -06:00
pico_sdk_import.cmake Fix output printing 2023-11-11 20:35:21 -06:00
README.md Finish challenge 1 and related additions 2024-01-13 13:22:54 -06:00

rp2040-ctf

Embedded hardware CTF challenge daemoncon 2024

Began building this in November 2023.

Very unsure how it'll turn out! Let me know what you think on matrix!

Linux Usage:

# minicom -b 115200 -D /dev/ttyACM0


More detailed usage for all operating systems:

  1. Install a terminal with emoji support (I recommend this one known as kitty) or xmobaterm for Windows.
  2. If you don't want to use kitty, use putty, xmobaterm or WSL instead (any linux distro should have minicom installed). On MacOS you should already have a terminal that supports it. You'll need a serial monitor though, (install minicom, its probably the easiest).
  3. Once you have a terminal with a serial monitor, you can connect to the Pi Pico! Depending on your OS, you can do the following to find where its located:
    • Device Manager on Windows will tell you the serial port it's on
    • ls /dev/tty* on linux and MacOS should list the possible devices (usually its like /dev/ttyUSB0 or /dev/ttyACM0)
  4. Once you find the port, you should be able to connect to the Pico using it:
    • # minicom -b 115200 -D /dev/ttyACM0
    • [insert screenshots for other apps]
  5. Find those flags!

Development Setup

(This was primarily taken from Drewol/rp2040-gamecon, so feel free to check that source out!)

Build instructions

Insturctions based on Ubuntu 20.04.1 LTS tested under WSL2

  1. Install CMake (at least version 3.13), and GCC cross compiler
sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi
  1. Download the pico-sdk and set the PICO_SDK_PATH environment variable. Also set the variable in your .bashrc for future use.
git clone https://github.com/raspberrypi/pico-sdk
cd pico-sdk
git submodule update --init
export PICO_SDK_PATH=$PWD
cd ..
  1. Clone and build this repository
git clone https://github.com/641i130/rp2040-ctf
cd rp2040-ctf
mkdir build
cd build
cmake ..
make
  1. Upload the ctf.uf2 that was created in your build directory.

If you're using linux and you want to mount the pico easily, try these commands out:

  1. sudo mkdir /mnt/pico
  2. sudo mount (sudo fdisk -l | grep 'W95 FAT16' | awk '{print $1}') /mnt/pico
  3. sudo cp ctf.uf2 /mnt/pico

Useful tools I used: https://www.cescaper.com/ https://www.patorjk.com/software/taag/#p=display&f=Crazy&t=