Inspiration
Most "learn cybersecurity" content is a quiz. Real intrusions aren't a quiz; they're a chain of small, connected mistakes that an analyst pieces together after the fact. I wanted to put the player in the analyst's chair and have them reconstruct an attack the way it's actually done: backward, from the damage to the attacker. The "false flag" angle, where the obvious culprit is a deliberate misdirection, gave it a real mystery to solve.
What it does
FALSE FLAG is a browser forensic game. A game studio is hijacked on launch day, and a ransom note blames a famous hacking crew. Across five stages — phishing, payload decoding, password cracking, OSINT, and stylometry — the player recovers evidence, pins it to an investigation board, and proves the breach was actually an inside job. Each stage teaches a genuine security skill, and the stages together form the attack chain in reverse.
How I built it
100% vanilla web — HTML, CSS, and ES-module JavaScript, with no framework and no build step. The technical puzzles use real tooling, not mockups:
- Stage 3 runs a live dictionary attack with the Web Crypto API (SHA-256), hashing each guess and comparing it to the captured hash.
- Stage 5 computes cosine similarity over function-word frequency and sentence-cadence vectors to fingerprint the ransom note's author.
- The visual design (a "situation room + evidence locker" desk) is built entirely from CSS — textures are inline SVG noise, so there are zero image assets to load.
Game state persists in
localStorage, and the whole thing is accessible (Lighthouse Accessibility 100).
Challenges I ran into
- Making the puzzles teach real concepts without becoming unsolvable or requiring guesswork.
- Building a tactile, physical "detective desk" look in pure CSS, no images, while keeping text readable and the experience accessible.
- Designing a difficulty curve where each stage's evidence genuinely unlocks the next.
Accomplishments I'm proud of
- The cryptography and stylometry are real, running client-side with no backend.
- A cohesive, bespoke visual identity built from scratch with zero dependencies.
- A narrative twist that's mechanically earned, the insider is seeded across earlier stages, not just revealed at the end.
What I learned
The anatomy of a breach (phishing → payload → credentials → identity → attribution), how stylometry attributes anonymous text, and how far you can push a pure-vanilla, zero-build web app on both polish and accessibility.
What's next
- Randomized cases (different culprits, indicators, and aliases) for replay value.
- More stages covering additional parts of the kill chain.
- A shareable end-of-case analyst report.
Built With
- css3
- es-modules
- google-fonts
- html5
- javascript
- localstorage
- svg
- web-crypto-api

Log in or sign up for Devpost to join the conversation.