OSU-embedded-security-club/ectf-osu-2025
It's ziggin time *procedes to zig all over the place*
This repo contains all the code and documentation for team scriptohio
from The Ohio State University in MITRE's eCTF 2025.
Highlights of our design:
Icon | Description |
---|---|
๐ฅ | Created by our team |
๐ | Created by MITRE for the competition, and unmodified by us |
benches/
- Custom benchmarks to test the speed of the design ๐decoder/
- Firmware for the decoder โกdesign/
- Host design including encoder ๐docs/
- Documentation on the system design and security ๐tools/
- Host tools to interact with the decoder ๐Taskfile.yml
- Command runner definitions ๐flake.nix
- Convenient Nix development environment โ๏ธA Taskfile is available to easily run common tasks
* 1-gen-secrets: Generate secrets
* 2-build-firmware: Build the firmware image
* 3-flash: Flash the built firmware image onto the Decoder
* 4-gen-subscription: Generate a subscription
* 5-subscribe: Take a subscription file and send it to the Decoder
* 6-list: Asks the Decoder to list the subscriptions that it currently has
* 7-uplink: Encodes sample frames with the custom encoder function and sends them to the satellite
* 8-satellite: Broadcasts all frames received from the uplink to all listening TVs on the host computer
* 9-tv: Receives encoded frames from the satellite and decodes with a Decoder connected to the host computer
* bench-decoder: Benchmark the decoder
* bench-encoder: Benchmark the encoder
* bench-subscription: Benchmark creating a subscription on the decoder
* docs: Build documentation design file into PDF and SVG artifacts
* stress-decoder: Use MITRE's stress test to benchmark the decoder
* stress-encoder: Use MITRE's stress test to benchmark the encoder
On a clean repo, plug in the MAX78000, enter firmware writing mode (the LED should be flashing blue), and run the following command:
task 1-gen-secrets 2-build-firmware 3-flash 4-gen-subscription 5-subscribe 6-list
Then, iterating on the design is typically done with the following command:
task 2-build-firmware 3-flash
The design document is available to read as a PDF, or inline below:
View the PDF inlineOur Zig code makes use of documentation comments which can be read as a webpage. To view it, navigate to the decoder
directory and run the following
$ zig build docs
$ python -m http.server -d docs
Then navigate to http://localhost:8000 in your browser.