reset

Scroll

Scrolllllllllllllllllllll

Solution

author: Daniel Low

The instruction cues the association with hashes.

On inspecting the source we see that the next page is given by generate.php?id=md5(<currentHash>).puzzlehunt2015

Which suggests that we should compute the hash chain until it starts with d4e93d.

This can be done by writing a short program to compute the required hash

import md5

limit = 10000000
target = "d4e93d"
m = md5.new()
m.update("puzzlehunt2015")
x = m.hexdigest()
while (limit > 0 and x[:6] != target):
  m = md5.new()
  m.update(x + ".puzzlehunt2015")
  x = m.hexdigest()
  limit -= 1
print(x)

The program should produce the correct hash: generate.php?id=d4e93d37cbcdf367d77c993b85abe792

By going to generate.php?id=d4e93d37cbcdf367d77c993b85abe792.puzzlehunt2015, we see that the solution

puzzle.takocheesecakeapplepie.hunt2015