Enigma Cracker

TODOs

Cracking Algorithm
We need to develop a specific, polished algorithm that will be used to do the actual ciphertext cracking. The basic idea I have in my head is that the machine will encrypt a string of one plaintext letter (such as "EEE...") using each possible machine setting (the user will eventually have options to set constraints on which settings are used, to limit execution time), and then compare correlation between the resulting ciphertext, and the ciphertext of the message to crack.
Support for multiple cracking methods
One thing that could make the program a bit more useful is multiple methods of cryptanalysis, and the user would have his/her choice of which method to use, primarily based on the expected plaintext, structure of the plaintext, cribs, or whatever other information the user has on hand. For example, we could provide a brute-force attack, an attack based on the three-letter message key at the beginning, attacks based on cribs or cillies, etc.
Manpage, Documentation
A bit tricky at the moment as we don't have a program to document.
Options for decryption process
The user should eventually have relatively fine control over exactly how the cracking process is run. Options should be provided to use only certain machine settings, or to define which plaintext letter(s) is(are) used to fuel the ciphertext generator (see "Cracking Algorithm" above).
Ncurses interface
Eventually the user should have an ncurses-based interface that will allow an interactive entry of decryption settings and an interactive, real-time progress indicator.
Shared library
It might be an interesting possibility to have the code that simulates the Enigma machine compiled as a solib, to allow its reuse in other programs.
Walze details
First of all, the ring setting on each Walze needs to be implemented. Second, we need to develop a way to deal with the varying position of the tooth on each Walze, and also the possibility of having multiple teeth to trip the rotation of the next Walze.
Rotor stepping order
A bit of research has shown Enigma implementations in which the fastest rotor is not necessarily the far-right rotor. Some models do step the middle rotor with each key press, not the right rotor. Although it may not be very commonly used, we could consider implementing a way to simulate this.
Modifications to Enigma Machine
There are a few modifications that could be made to the Enigma machine class to make its operation a bit more flexible. One possibility is more complete flexibility in the way that it is set up, such as allowing for any number of Walze units and the omission/ inclusion of the Steckerbrett, etc.

Page created by Mike Stunes, SourceForge developer computer_guy57.
Copyright (C) 2007 Mike Stunes.
Copyright details and other information can be found at the Legal page.