eagle5.network/ctf
CTF
"Comb the desert!" Some flags are hidden. Most aren't. None require luck.
What it is
A capture-the-flag played entirely on the Eagle 5 Reticulum mesh, from saying a magic word to remote-shelling a sandboxed container over LoRa. It's a Reticulum tutorial in disguise: each challenge teaches a mesh concept you'll use to solve the next, so no prior experience is needed. Some you can solve from the couch; a few want a laptop or the badge's serial console. The Reticulum trail on the mesh teaches you as you go.
How to play
- Connect the badge over USB to a host running a Reticulum client: desktop Sideband or NomadNet (via the badge's RNode KISS port), or the WebSerial CLI at serial.eagle5.network. On a phone, USB-OTG into Android Sideband. The badge is a modem; you drive it with a client.
- Start here: wait for Mr. Coffee to appear in your Sideband Announce Stream and tap him to open a conversation. Knowing what to say to him is challenge #1 itself. (If it says "keys unknown," tap "query the network for the keys" and wait a few seconds.)
- To read the pages (riddle, challenge briefs, 10-page trail), browse Mr. Coffee and Mr. Radar in a page browser: rBrowser or NomadNet. Sideband is for messaging the challenges; its page browsing is thin. See clients for the picks.
- Solve a challenge. Most reply with the flag string over LXMF. Submit it on the CTFd scoreboard (URL at the badge desk).
- Repeat. May the Schwartz be with you.
Where things live
Anchors
| Mr. Coffee: the start point (LXMF message target) | watch your Announce Stream |
| Mr. Coffee BBS: browse it (do not message this one) | browse in NomadNet |
| Mr. Radar BBS: browse it | browse in NomadNet |
| Open Channel (public LXMF wall) | announced |
These announce themselves on the mesh. Let them show up in your Announce Stream (Sideband) or browse them in a page browser (NomadNet, rBrowser). The Open Channel accepts any LXMF message; the body becomes a post tagged with the first 8 hex of your identity. Read about destinations if you want to know what those hex strings mean.
Challenges discovery
Challenge briefs live as NomadNet pages on the anchor nodes. Some are linked from the BBS index; some are not, and you'll figure out the hash to reach them. A few need you in radio range of a specific node. Read each brief for the rules.
Rules of engagement
- No fail states. A wrong answer loses no progress. Re-try is always free.
- Be a good mesh citizen. Don't flood the air. Reticulum has back-off; the etiquette is to let it work.
- No exploitation of the badge framework itself. Finding a 0-day in the firmware is impressive, but stay out of the scoring server. Tell us; you'll be credited.
- Cooperation is fine. Compare notes, pair up. No challenge forces a group.
- Don't be a jerk. Standard hacker-con norms apply.
What "LoRa required" means
Some challenges work from anywhere on the mesh: phone over WiFi, badge over LoRa, laptop over TCP, whatever path RNS finds. We mark these 馃寪 mesh anywhere.
Others only respond to packets arriving over LoRa air; the service ignores anything that came over IP. We mark these 馃摗 LoRa required. You need an RNode in radio range of the answering service; Eagle 5 counts, as does any other LoRa Reticulum device you brought.
Some lessons only land once you've felt the radio. Most of the catalog is mesh-anywhere; the LoRa-required ones are the showcase moments.
Submitting flags
Most challenges hand you a flag string, an HTH{...} token, in their
LXMF reply. Paste it into the CTFd scoreboard (URL at the badge desk); CTFd is
the single source of truth for scoring.
Flags are copy-paste friendly: alphanumeric, no look-alike characters. No flag strings live in the badge firmware. The answering services on the mesh hold the truth, and only reveal it once you've earned it.
After the con
Many challenges keep working post-con. The anchors live on and the badges keep announcing. Bring a couple of badges to your local hacker meetup and you've got the start of a regional Reticulum hub.
A handful of post-con challenges are built to keep the badge feeling alive long after the event.