Ctoth, well done on the source code. I had been working on this myself yesterday but I didn't have any tools to extract the source. I'm surprised it came out so clean!
I have been working at this in a more traditional (low tech) way. I made dozens of lists where I encrypted messages, looked for patterns, and eventually worked out what I referred to as the value wheel. In your ripped source I see it was called ListA.
From there I went with a different approach to the wheels. Not necessarily by choice, but because it would have been a pretty lucky guess to know how he had internally arranged things. If you were presented with 4 wheels that spun vertically and contained 5 symbols on each, their motions can be expressed as 5 horizontal wheels with 4 symbols, and so on.
Before I went to work for the night, I had made some pretty good progress. Without using Rocky's original program, I can take any message and encrypt it with any 1 digit long key. The results will be exactly as if Rocky's program had encrypted it. I am also able to decrypt any message that was encrypted with a 1 digit long key. That's a far cry from being solved, but I do think it shows how much of the machine's internal "wiring" someone can deduce just by looking for patterns in messages you encrypt.
I have been working on the second wheel, but now that you've provided the source I may stop going in the direction I have been going in, and use this information to find a faster path. When I say working on the second wheel, I don't mean the exact second wheel from Rocky's program. It's confusing and complicated, because my approach was not identical to how Rocky built his program. If I were to work out my second wheel, I would be able to encode and decode anything for key lengths of 1 or 2. It would continue to climb, as each new wheel was solved, until I found the key length that Rocky used to encode his message.
- Aprone
Please try out my games and programs:
Aprone's software