Hack to the Future


Hack to the Future

by Ed Skoudis

Marty McFly was a high school geek living happily in the year 2003.  Like other kids, Marty spent a lot of time playing with computers.  Unlike his peers, Marty befriended Dr. Emmet Brown, a scientist who experimented with time travel and resembled the character Jim from the TV show Taxi.

One day, Doc Brown showed Marty his newest invention, a Titanium G4 Apple PowerBook that he had converted into a time machine.  "The way I see it," said Doc, "If you're going to build a time machine into a laptop, why not do it with some style?"

The time machine actually consisted of two computers: the PowerBook laptop running Mac OS X and a Solaris web server running Apache.  The laptop and its user moved through time, while the web server stayed in 2003 controlling the action.  Doc explained that the laptop included a new program called Timecat.  Timecat was functionally identical to Netcat, but with one difference.  In client mode, Timecat supported the "–T" option, which indicated the time that the data would be transported to, in MMDDYYYYHHMMSS format.  So, using Timecat on the laptop, someone could send data to any TCP or UDP port on any IP addressable system, to any time in the past or future!  The beauty of this implementation is that the listener on the other end of the connection didn't have to be time-travel enabled; only the client side needed Timecat.

For a person to move through time, he would use the laptop to send an HTTP GET request to the web server in 2003 on TCP port 88, with a parameter indicating the time (MMDDYYYYHHMMSS) he wants to travel to.  The server, which always remained in 2003, was named www.outatime.org.  Doc Brown gave an example, "To travel to Noon on Nov 5, 1985, the laptop user must send the server http://www.outatime.org:88/zzzoom.cgi?date=11051985120000."

At Doc's urging, Marty took the laptop and started playing.  Suddenly, Marty was accidentally whisked back to 1985!  He was baffled by the radically different high school culture way back then, with kids wearing neon clothes and parachute pants, while listening to Run DMC and Huey Lewis and the News.  He desperately wanted to return to 2003.  Marty searched for and finally found the 1985 version of Emmet Brown to help him return.

They faced two huge problems.  First, the laptop hard drive crashed during Marty's voyage.  Marty calculated that he could install his operating system, browser, and Timecat in just 1.21 Gigs of drive space.  When he asked Doc Brown about such a drive, Doc replied, "1.21 Jigabytes?!?  I'm sure that in 2003, 1.21 Jigabyte hard drives are available at every corner drug store, but in 1985, they are a little hard to come by!"

Happily, though, they were able to assemble a RAID array using Commodore 1541 floppy drives, which hold 160k each.  To afford 8,000 such devices, they sold the movie rights for Marty's time traveling story to Stephen Spielberg.

With the laptop functioning again, they focused on their second problem.  Marty's nemesis, Biff, managed to gain access to the time travel web server located in 2003.  To trap Marty in 1985, Biff implemented two filters on the server.  The first filter took any incoming URL and changed its first 10 characters to X.  A request to http://www.outatime.org would be turned into http://XXXXXXXXXXme.org.  Additionally, Biff implemented a filter that deleted all occurrences of the character "z" from any URL sent to the server.  With these filters, Marty was distraught about ever returning home.  Please answer these questions to help Marty… HACK TO THE FUTURE!

•1) How can Marty create a Timecat relay (port redirector) on his laptop that will listen for data and shoot it into the year 2003?

•2) How can Marty direct his browser to use the Timecat relay?

•3) How can Marty compose a time travel URL to get around Biff's "X" and "z" filters?