This package includes an extension the Tcl language that implements new Tcl commands for manipulating ciphers. In addition, there are a handful of scripts that use these new Tcl commands to do useful things with these new Tcl commands. For example, the command "key generate" is used in conjunction with the "cipher create aristocrat" command to implement a brute force search for solving patristocrat ciphers.

There are also a couple of graphical tools for performing these cipher manipulations.

The English frequency tables were obtained by performing a tally on the
text from Mary Shelley's novel * Frankenstein*. The text was
obtained from Project Gutenburg.

**cipher**- This package contains the core support for the various cipher types and statistical analysis commands. Almost every program will use this package.**Crithm**- This package contains useful wrapper commands for the**crithm**command provided by the cipher package. This includes routines for setting up a new cryptarithm solver and generating constraints based on user-provided equations.**CipherUtil**- This package contains miscellaneous useful commands, including commands for reading/writing ciphers and their solutions to files.**Hillclimb**- This package contains commands for running a hillclimber, with some key mutators for some common cipher types.**Dictionary**- This package contains commands for reading words from a dictionary.**Scoredata**- This package contains commands for reading and writing scoring tables to a file.**K3Board**- This experimental package contains commands for displaying a fragmented K3 alphabet so that it can be reconstructed.**PatWord**- This experimental package contains utility commands for implementing a brute-force patristocrat solver.**PatWordUI**- This experimental package contains commands for managing the UI for the brute-force patristocrat solver.

**tcipher**- Tcl interpreter with the cipher package already loaded.
**ctool**- Graphical tool for manipulating ciphers.
**tkcrithm**- Graphical tool for autosolving cryptarithm ciphers.
**csolve**- Autosolver for a variety of cipher types. This program iterates through all possible keys and uses a customizable scoring function to determine the best solution.
**keysquaresearch**- Autosolver for cipher types that use keysquares. A dictionary of possible keywords is used to generate possible keysquares. A customizable scoring function is used to determine the best solution.
**nicsolve**- Autosolver for nicodemus ciphers.
**patsearch**- Autosolver for K1, K2, and K3 keyed patristocrats. A dictionary of possible keywords is used to generate the keyed alphabets. A customizable scoring function is used to determine the best solution.
**dumproute**- Show the plaintext resulting from all possible routes for a given route cipher block width.
**genboard**- Generate a tableau for solving many ciphers by hand.
**key2col**- Generate a columnar cipher from a saved aristocrat/patristocrat solution so that the keyword may be sought after.
**k3search**- Search for K3 keyed alphabets that match a given key. A dictionary of possible keywords is used to find matches.
**k4search**- Attempt to resolve a K4 alphabet into its component keywords. A dictionary of possible keywords is used for one of the K4 keywords. Likely keyed alphabets for the other keyword are shown.
**genscores**- Generate scoring tables from samples of plaintext.
**lethist**- Useful letter frequency analyzer.

Back to the Index