Creating a Developer Escape Room, Part 2 – Puzzles & Setup

Yesterday, I outlined some concepts and criteria for the creation of a successful escape room. I also illustrated parallels between escape rooms (as a fun pastime activity) and creating custom software. Hopefully, you’re now ready to consider running your own escape room, and I’m back to provide a clear template for doing just that.

Overview

This escape room is designed specifically with an audience of developers in mind. A group without any programming experience is going to struggle. Unlike most escape rooms, participants will need a cell phone capable of scanning QR codes.

The background story for these puzzles is that a group of “white hats” are faced with “defusing” a malware bomb that threatens to wipe out valuable scientific research, but feel free to make up any other scenario that you think people will enjoy. For an experienced group, this escape room can probably be completed in 30 minutes, but you may want to give groups 45 minutes to be safe.

When a group enters the escape room, they’ll see a timer on the large projection screen. It counts down from 30 minutes (or however much time they’re given). They must gain access to an open laptop in the room, discover the secret control webpage, and enter the correct passcode to stop the timer before it reaches zero.

Materials You’ll Need

Here are the supplies you’ll need to run this version of an escape room:

  • Printer, paper, scissors, tape
  • A standard Master Lock combination lock and a box that can be locked with the master lock
  • Two laptops (one is simply for projection)
  • USB thumb drive
  • Webserver (Heroku is a good choice for this)
  • Projector/TV/large screen
  • A round table and six chairs
  • Some pens and paper

The Puzzles Explained

Puzzle 1 – Binary circles and hexadecimal colors

This is the most complex puzzle. The first component is a webpage showing a grid of colors which reveal numbers when tapped/clicked. This webpage is discovered by scanning a QR code which is found somewhere in the escape room.

The second component is the concept of representing numbers in binary via lines around a circle. These are created physically using chairs positioned around a table. The center of the table provides a QR code pointing to a webpage that explains this “binary circle” concept. The table also has three base-10 numbers positioned around the outer edge, and the chairs each have two alphanumeric characters on them. When the correct chairs are pulled out to represent one of the three given numbers in binary, their characters together form a hexadecimal code that will correspond to one of the colors on the color grid webpage.

The three numbers revealed behind the correct colors correspond to the code to unlock the third part of the puzzle, a combination padlock which protects a small box. Inside the box is a USB drive which will be used later in the game.

Puzzle 2 – Complete the code

This is the most programming-centric puzzle. There are two main components. First is a series of small functions (displayed prominently in the room) which are missing lines of code. The missing lines of code and an invocation of those functions are also hidden throughout the room. Participants must match the correct lines to their functions, then correctly compute the output of the given function invocations to receive a key phrase needed to unlock the encrypted file found on the USB drive.

Puzzle 3 – Hack the drive

This is the endgame of the escape room. A laptop is waiting for a login. The password for the user is hidden somewhere in the room. When a participant successfully logs in, they find a prominent shortcut to a webpage for entering a password to halt the countdown.

Once the participants retrieve the USB drive, it can be inserted into the laptop, revealing an encrypted file. The file is unencrypted via the code from the programming puzzle, revealing a passphrase which can be used to halt the countdown timer.

The Setup

Run this GitHub project on a webserver of your choice. The README.md for the project includes some technical details. Once you have it running, you can use a QR code generator like this one to create codes for the color grid and binary circle pages.

Next, you’ll need to work out your binary circle numbers to match up with whatever combination your lock requires. Edit the color-grid.html file as described in the README to reveal the right combination for the colors your binary circle numbers will represent.

Use the escape room resources PDF included in the repository to print out all the code fragments, cutting the missing lines into individual strips. Do the same for the hex values for the chairs.

If you want to tweak the code fragments for a different passphrase result, go ahead. You’ll need to generate your own base-10 numbers for the table, along with the QR codes.

The QR code for the color grid page should be placed/hidden somewhere in the room near the table and chairs. The partial functions should be taped up prominently on a wall together with the final invocation, while the missing line strips should be hidden somewhere else in the room.

On the laptop, create a user specifically for the event using a fun password. Ideally, you can lock down that user from being able to do anything other than open a web browser on the laptop. Print out the password, and hide it somewhere in the room (a good spot for this is actually under the laptop). Create a text file containing the halt code, store it on a USB drive, encrypt it with the passphrase from Puzzle 2, and lock it in your box with the combination lock. Hide that somewhere in your escape room.

Pull up the countdown timer on your big display and the trigger page on your phone. Now all you have to do is get a group of coworkers together and wish them good luck!