This web utility is used for enciphering or deciphering the messages that you can find on some hackaday pages. The key is looked up in a one time pad booklet by page number and character number. These numbers are specified in hexadecimal.
While trying to figure out the cipher posted in http://hackaday.com/2014/10/06/hackaday-10th-anniversary-1o57-and-the-art-of-encryption/ I decided that maybe either the pad address was wrong or it was double enciphered with a second pass somehow. While I was working on figuring this out Brian came forth mentioning he had actually just made a typo in the address.
My method of trying to decipher the message was simple. Brute force it! There are only 18400 pad starting addresses after all. After working out some bugs in my JavaScript code I was able to get it to work...although it would return hundreds of results as I only checked to make sure the first word in the sentence was a real word.
When I have some time I will work on cleaning this code up and getting it into a better working state. My proposed method for brute forcing the message deciphering is as follows.
1. Split the message up into words
2. Decipher the first ciphered word starting with each of the 18400 pad addresses
3. For each result that is a known word continue deciphering the message
4. Sort messages based on ratio of known words to unknown words
Is this method slow? Currently in JavaScript, a bit. Also I seem to be hitting an issue where I can't process all of the data at once. I am unsure if this is an issue with memory consumption or something else yet. That is my main reason for not simply deciphering the entire message 18400 times. I will probably break the problem up into a more efficient method later.
I was all set and ready to wait for the pad I had ordered to come in so I could rip it apart, scan it, and hopefully get a more error free result from the OCR process. But that was when a little birdy dropped something...
An initial character count shows a very not quite random distribution. I expect this might yield interesting results if people poke at it further.
As far as the web utility is concerned...I suck had doing CSS by hand, so it will be stuck as ugly for now!
I hope to add support for more OTP books if they are made and also for entering your own pad (although many sites already work with that method)
So in the posted slides the following four letter codes were visible
1o57 (DCYV)
dkik
NKUM (37?!?)
KRYD
NBYG
ONYM
NXOC
I'm not sure if these are in the correct order, the codes in the parenthesis were outside the circles on the foil.
Possible starting locations could be tied to 1o50, 10 (or maybe 0x0a)... But brute force is nice since the pad is so short. You should print out the pad location when a word is found.