Posts
Sometimes, a thing appears in your junk box out of nowhere. It’s utterly pointless, but you can’t bring yourself to throw it away (to the recycling center, of course!) because a though resides in your head - “Hey, I might need that some day for a project”. This is a story of such item. Around a decade ago, a faceplate for a Watermark TD-2100MP3 car head unit appeared in my junk box (pictured below). I can’t remember where I got it from, but I always thought it would be fun to figure out how one works and turn it into a nifty user interface for some project. As any good engineer, for every thousand projects I start, around 0.24 make it till completion. And I usually do user interfaces last, so you can see why it sat there for so long.
So I have this friend Alex. He is one of the best programmers that I know and had the honor to work with. The guy literally lives and breathes bits and bytes. He is also a fan of programming challenges, especially optimization ones. Sometimes he creates his own. One day, he dropped me a file on Discord titled floppy.img
and said “solve it”. I put it off for some time due to a busy schedule and that was a grave mistake on my part, because this is the most fun crackme that i’ve solved to date. And You will see why in this post.
This is a write-up of a crackme titled cracknkeygen
by 0xdecaf
for Linux which can be found on crackmes.one. On crackmes.one, this crackme has a difficulty score of 2.0. Tools used while solving this crackme are Ghidra and Python.
The binary expects the user to pass in the key via the first argument as such: ./cracknkeygen <key>
. Upon execution, it either prints a success or failure message. Our task is to figure out how the key is checked and write a key generator to generate valid keys for this binary.