Adrian Herbez Rotating Header Image

Posts from ‘June, 2008’

Enitech Labs: Final Puzzle

During my time at Millions of Us, I was fortunate enough to work on Terminator: Dark Discovery, an ARG to promote Fox’s Terminator: The Sarah Conner Chronicle, created by Blair Erickson.

My involvement with the project consisted of designing and implementing the final puzzle. The puzzle needed to take six locations (as longitude and latitude values) and, if the values were correct, display a seventh longitude and latitude coordinate.

Since the project was based in the Terminator mythos, I thought that a terminal interface would be appropriate. If a user visits the site, they are presented with a command line prompt, which they can use to enter text. No hints as to what the text should be are given- figuring out that longitude and latitude strings were required was part of the puzzle.

Once the user has input six pieces of text, an image is generated. The image is meant to represent a graph of the neural network that the player is interacting with. The image is created via psuedorandom methods, with the entered text serving as the seed values. This results in the specifics of the image being directly tied to the text that was entered. That characteristic allowed parts of the “correct” image to be distributed as hints.

To solve the puzzle, the user must not only enter the correct six locations, but s/he must do so in the correct order. If that happens, a sequence of images (drawn from the various videos produced during the project) flashes, and eventually stops, displaying the final location.

The puzzle was implemented in Flash, which worked great except for the lack of a psuedorandom number generator. In order to guarantee that the results would be reliable (necessary since the visual output was being used as clues), I wrote my own simple psuedorandom number generator, based on the linear congruental method.

In order to prevent the solution from being extracted via flash decompilers, I had the SWF fire a request to a PHP script that would accept input from the SWF, check it, and (in the case of the proper inputs), serve the answer.

If a user discovered the URL of the PHP script via a SWF decompiler and attempted to hit it directly from a browser, they would be redirected to a page that typed out an ominous message, implying that Skynet had noticed the attempt and was sending terminators their way.

To see it for yourself, head here. That’s a test version that will accept “one”, “two”, “three”, “four”, “five”, and “six” as the correct input. If you’d like to see what happens when someone tries to access the server script directly, go here.