Students solve three capture-the-flag puzzles (Caesar, XOR, checksum), typing flags that the page checks without storing the answers, then write a puzzle for a partner.
Load these into Waypoints Prepare: choose Load URL and paste the copied address, or download the file and import it. In Prepare, the worksheet's Teacher edition shows the answers; the student copy hides them.
Predict and Run 8 min · Puzzles 22 min · Make 15 min
What this is: a puzzle session that revisits the course's three tools. Students decrypt messages written for them, as in a puzzle book or a CTF contest. No one is breaking into anything.
How flags work: the page stores only a SHA-256 fingerprint (a hash) of each right answer, so reading the page source does not give the answer away. Answers are checked after trimming spaces and ignoring capitals. Because this repository is public, the flags are also written here for you:
Pacing: puzzles can be done in any order. Pairs can race; the flag checks give instant feedback so nobody has to wait for you.
Choosing the right tool for each puzzle. Ask which weakness the puzzle shows before they reach for code.
| What you will see | A question to ask | The fix |
|---|---|---|
| The flag is refused. | Is it WP{ then lower-case letters then }? Are spaces where they should be? | Copy the form exactly; spaces count (the Caesar message has spaces). |
| Puzzle 2 gives numbers above 26. | Did you use the right XOR key? | The key is 9. Press B once for each number. |
One possible solution for each task. Other correct programs are fine.

let ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
function shift(letter: string, key: number): string {
let place = ALPHABET.indexOf(letter)
if (place < 0) {
return letter
}
return ALPHABET.charAt((place + key) % 26)
}
function encrypt(message: string, key: number): string {
let result = ""
for (let i = 0; i < message.length; i++) {
result = result + shift(message.charAt(i), key)
}
return result
}
input.onButtonPressed(Button.A, function () {
basic.showString(encrypt("MEET AT NOON", 5))
})
Stretch: Write a longer puzzle that uses two steps (Caesar, then XOR).
Support: Share puzzle 1 as a class, then let pairs do the others.
What is a flag in a capture-the-flag puzzle?
A secret answer in a fixed form that proves you solved the puzzle.
Next: defend a system against all three weaknesses.