GCHQ Challenge Solution Explained
First time accepted submitter DrDevil writes "The British spy agency GCHQ recently published a puzzle at canyoucrackit.co.uk (as featured on Slashdot), now just a few days later an academic at the University of Greenwich in England has posted a full video explanation of the puzzle. The puzzle has three stages and is not at all simple — likely to challenge even the best computer science graduates."
Well, "DEADBEEF" is a bit of a giveaway.
How can I believe you when you tell me what I don't want to hear?
Recognizing unknown architecture binaries is an important skill to have when reverse engineering, especially for embedded systems. Very often you'll get a firmware file and you have to figure out what it is. Each architecture has its peculiarities, so it doesn't take long to get a feeling for what their opcodes look like. For example, 32-bit ARM code sticks out like a sore thumb (no pun intended :) due to the condition code field, which means that every 32-bit word almost always starts with 0xEx (and whether that's the first or last byte in the word tells you the endianness). Variable length architectures like x86 look very different from RISC ISAs with a fixed instruction length like PowerPC.
I was going to hold this back until the competition was finished, but it seems the cat is out of the bag!
Here is my solution and a writeup of exactly how I got there.
http://www.craig-wood.com/nick/articles/how-i-solved-the-gchq-challenge/
Every man for himself, all in favour say "I"
Err ... no. There simply aren't quant jobs with grad starting salaries of that level, certainly not in London, and I would highly doubt you'd find that level in NY either. Salaries actually went up (and bonuses down in relative terms) after '08-09, but there's still no way you'll get a six-figure (GBP) base for a grad starting position.
Also, timing is pretty bad if you want to land a quant role right now. Front-office hiring patterns tend to be very cyclical and right now they're in a downswing with most banks downsizing their quant teams and only a few hiring. Those that are hiring will much prefer experienced candidates over fresh grads, and competition among grads is fierce at the best of time.
If you really want to go for it, be aware that most houses won't look at you unless you have at least a Masters or equivalent in finance and/or a Doctorate in strongly numerate hard-science subject. You need demonstrable skills in maths (linear algebra, PDEs, probability theory), quant finance theory and software development. Language-wise, C++ is a must-have, knowing R is also good. "Sure I can program: I did some MATLAB as part of my masters" is not looked upon well. Interviews are tough and mostly fair: a mix of technical (maths, finance, programming) and problem-solving, with some interviewers unfortunately throwing in the odd "what-am-I-thinking" type question. Oh, and if the interviewer asks you to explain your doctoral thesis, it's not because they care about the subject: they are testing your skill at communicating complex subject matter succinctly.
Disclaimer: I was a quant in a tier-one European bank for over 6 years, including recruiting experienced hires and grads.