Development Downloads Links Main
What is Crank?
Crank is short for "CRyptANalysis toolKit", and its overall purpose is to provide a powerful and extensible environment for solving classical (pen-and-paper) ciphers, providing as much automation as possible. Classical ciphers include common schemes like monoalphabetic substitutions, where each letter of the alphabet is mapped to another (usually different) letter consistently through the text. The first version of Crank is restricting itself to these special ciphers. Other algorithms forever devoid of Crank's attentions include Enigma, RSA, DES, MurkelFish, or anything else invented after 1900. They're hard(er). Oh, well, maybe Enigma. Here is a screenshot. And Another.
How does it work? (versions 0.1.x)
Crank has the concept of a source file (the ciphertext), and a view on that file (hopefully this becomes the cleartext). The view on the source is determined by the currently active plugin, which corresponds to a cryptanalysis tool. The bottom text area in the main window is the view of the source after it's been acted on by the tool, and the top part is before. For example, if it's a monoalphabetic substitution decoder, if part of the key isn't complete, unmapped (i.e. still ciphertext) letters will be displayed in upper case, whilst decoded letters will appear as lower case. The various key controls and statistics displays are meant to help you transform the key into the correct decoding one. There is also an automatic cracking tool which will attempt to crack the cipher for you. It needs the cipher to have around 2-3000+ alphabetic characters to work reliably, but I've had partial decryptions happen with texts as small as 67 letters. It works by measuring the frequency of letters, pairs of letters and triples of letters, and comparing them to what you would expect to get in a sample of plaintext (English, in this case). It tries small variations of a key to try and make the frequency counts of the transformed text match standard English frequencies.
How does it work? (versions 0.2.x)
First off, it doesn't yet ;-) However a manual has been started, which you can read online.