fizbin

I'm just this guy, you know?

  • he/him

40-ish white guy in tech


So, I made a puzzle as a bit of a tribute to my dad. I have verified that solving the puzzle is possible in the sense that "if you know what went into constructing this but not the answer, it is possible to derive the answer" but of course that's no guarantee that people who are not me will naturally look at it and say "ah, these are the tools I need to wield to attack this".

Solving the puzzle requires Math, but getting to where you can figure out which Math to use first requires reading x86 assembly language. So first of, if either of those things strikes you as Intensely Not Fun, this isn't for you.


If you want to try the puzzle on hard mode, it's this: what input causes the following static linux x86 binary to exit successfully?

begin-base64 755 passcheck
f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAdIAECDQAAAAEAgAAAAAAADQAIAAC
ACgAAwACAAEAAAAAAAAAAIAECABwBAh0AAAAdAAAAAQAAAAAEAAAAQAAAHQA
AAB0gAQIdIAECH4BAAB+AQAABQAAAAAQAACB7KAAAACJ5eh7AAAARW50ZXIg
cGFzc3dvcmQ6IABQYXNzd29yZCBjb3JyZWN0IQ0KAFBBU1NXT1JEIElOQ09S
UkVDVA0KAAdQp7j7J0NlBwZ2IP+3HcEETQ5Mto0AAADHpas2cwEAAP1FtSYN
AgAAAeuQ+lsCAAD3SHXzXQIAAN0FWmt1BAAAWolVAI0y6KMAAACNVQS4NgAA
ADHbuQFUAABQzYCAZRD3QVhgzYCNTVC6RgAAALgDAAAAMdvNgEjHBAENCgAA
gE0QCGHNgIt1AI12N+hdAAAA6FgAAACNdVCLfQCNfzuLB4tXBLN/6FwAAACF
wHUsi30AMcmKTzqNfzsx24sEz4tUzwToPwAAAIXAdQ/i7It1AI12EegVAAAA
6w6LdQCNdiXoCAAAALMAQzHAQM2AYInxMdKAPgB0BEZC6/cx2zHAQ7AEzYBh
w1WJ5YPsBIhd/FZRUzHJih6E23gUdBQKXfyxCNDT0dBzAjHQ4vZG6+aw/1tZ
XsnDAC5zaHN0cnRhYgAudGV4dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAsAAAABAAAABgAAAHSABAh0AAAAfgEAAAAAAAAA
AAAAAQAAAAAAAAABAAAAAwAAAAAAAAAAAAAA8gEAABEAAAAAAAAAAAAAAAEA
AAAAAAAA
====

You have my guarantee that this program only reads from stdin, only writes to stdout, and the only other syscall it makes is ioctl (on stdin only). It does do ioctl to turn off echo on stdin, so you might not want to press Ctrl-C when you get the prompt; just press enter and it'll tell you that your password is wrong and set your terminal back to normal.

(Still, run it in an isolated docker container or VM because good lord, have some basic security safety/hygiene)

If you prefer slightly less hard-mode, there's this link, which contains x86 assembly language source for the program for both Windows and Linux: https://gist.github.com/fizbin/d558258f40f39bdc62b5eeafbc43f642

That gives you variable and symbol names, as well as a very minor hint or two in the comments.


You must log in to comment.