Earlier this year, some folks in the Chicago security community got together and organized a conference called THOTCON, which turned out to be a resounding success. It took place in April and drew several hundred people together for a day filled with some great talks, beer, and general hacking socialness.
To gather some early buzz (as well as to have some fun) for the follow-up next spring, the organizers decided to do an early pre-sale puzzle. Of course, like many things in the security community, the hints were leaked only to their twitter stream. Inspired by a few of my friends poking at it, and with some free time to spare, in the spirit of learning (and a chance to save about $20!) I decided to take a stab at the puzzle.
By the time I started working on it, the organizers had leaked a few hints. Here’s where it was at when I began:
Puzzle -> FAW2GlImKsT3BL8yKQF= zf-c75-sb-j 60max #thotcon0x2
Hint #7 – I am the answer to my own puzzle. You just need to look at me the right way
Hint #6 – Decrypt, then decode
Hint #5 – The coolest thing about part 2 is… You dont have to do ANYTHING. (Put it somewhere and tada!)
Hint #4 – Part 2: I’m not a cipher, I’m a conversion. You have the tool to convert me. In fact, you don’t have to convert me.
Hint #3 – Part 1: He is dead
Hint #2 – What do you mean I was part of the Reichstag zu Worms?
Hint #1 – I was born on April 5th. #thotcon0x2 <— puzzle hint?
So, to break it down, the hints indicated a 3 step process to solve the initial hint string.
Step 0:
Working from the string:
FAW2GlImKsT3BL8yKQF= zf-c75-sb-j 60max #thotcon0x2
To be honest, I wouldn’t have had much to go from here were it not for the hints, and my twitter addiction. I picked out the ‘zf’, ‘c75′, ‘sb’, and ‘j’ as being the handles of several of the organizers – @zfasel, @c7five, @sak3bomb, and @jaku. So we could drop that. ’60max’- this is cleartext and probably not a code, so dropped. ‘#thotcon0x2′ – again, twitterese – a hashtag used to talk about the conference. Dropped.
So we’re left with the cipherext to decode,
FAW2GlImKsT3BL8yKQF=
I suppose that’s a start.
Step 1:
I’m not much of a cryptologist, but I do know a bit of the history, mostly thanks to reading Simon Singh’s excellent The Code Book. I figured it was a reasonable assumption that this is a classical cipher, breakable by hand. So, poking a bit around Wikipedia for famous classical ciphers, a bit of digging came up with April 5th being a reference to Blaise de Vigenère, whose name is attached to the famous Vigenere Cipher.
This cipher is a relatively straightforward method of letter substitution, which a dedicated person could do by hand. However, being a citizen of the 21st century, I wanted to put computers to work for me – so I found a site to decode it!
http://sharkysoft.com/misc/vigenere/
Problem was… a Vigenere cipher requires you to use a known key to decode it. Which I didn’t have, so I began guessing.
This required jumping ahead a little bit – what to do with the decoded ciphertext? The hint to part 2 indicated that it was a conversion… so my natural first guess was Base64, just because it’s so common. So I began working on the assumption that my decoded ciphertext would be Base64 encoded. I found an online decoder and began guessing away.
Now, a Vigenere cipher would be relatively easy to bruteforce in the age of modern computing, but I didn’t honestly expect the organizers to force people to write a brute forcer. Instead, I began guessing words associated with the security community. Eventually, after guessing many words… I tried the name of the conference itself – THOTCON0x2. And bingo! I had cleartext that also decoded to Base64:
MTI2NjUzNzM3NS8wWDI=
Step 2:
I suppose this is a bit redundant since I had been testing my cleartext in the Base64 decoder the entire time. Using this online decoder:
http://www.motobit.com/util/base64-decoder-encoder.asp
I ended up with some very promising text:
1266537375/0X2
Step 3:
In the spirit of full disclosure here, step 3 was where I performed a bit of ‘social surveillance’. Following the #thotcon hashtag on twitter and saw Nick, one of the organizers, post a hint saying something to the extent of, “is it alive?”
How do you check if a computer is alive? Usually a good first step is to ping it. I already had my suspicions about this string, but this gave me the idea to just run a ping at the decimals in that address (the ’0X2′ was clearly intentional and I dropped it from consideration).
ping 1266537375 Pinging 75.125.211.159 with 32 bytes of data: ...
Ping did the translation for me, nice! Now I have a more easily readable IP address.
This string was a decimal representation of an IP address. Not commonly used, but still valid – and if it’s used commonly anywhere, it’s with spammers/phishers who like to obscure their targets from cursory glances. You can read more about it here.
Step 4:
So now we had an IP address. Now what? A nmap scan showed a webserver running on port 80, so I sent my browser there…. and got a blank page.
But wait a minute…. wasn’t there a string I dropped from that address? ‘/0X2′. After kicking myself for the brain fart, I navigated to…
And had what looked like a winner!
There were three images there – unfortunately not loading at the time – and a link to the registration page. When doing a mouseover the three images, some codes were revealed:
VEHPVE
NPTJB4M
I0YMDEX
I moved on over to the registration page, concatenated these strings together… and success! The discount code was accepted.
Conclusion
This puzzle was a fun one, which pushed you to think a bit outside the box. Also, because it was released ‘into the wild’, the internet was at your full disposal to track down hints. So while it may have been shortcutting a bit, I didn’t see anything wrong with spying on @c7five as he gave hints to other players
I don’t know how many pre-sale tickets that they ended up selling, but the initial hint was that they only were offering 60 of them at the discounted price. So, having solved it before they publicly revealed the pre-sales code, I felt pretty proud of myself. Perhaps I was just lucky to have the free time to poke at it. I’ve also gotta thank my friends for pointing me in the right direction after I got stuck (and way to go, Rudy, Jeff and Jim for being more clever than I and figuring it out faster!).
The puzzle appears to have been primarily created by Sak3bomb, who is clearly a brilliant individual, much more clever than those of us trying to work backwards. Major props to him and his collaborators for putting together a fun puzzle. He archived the hints on his webpage here:
http://www.haxbysakebomb.com/thotcon.html
I’m really looking forward to the next THOTCON, and general sale tickets are available now – so go on and buy em. I’ll see you there!