Introduction
The Tcl cipher extension is an ambitious effort to be a generic cipher
manipulation architecture for cipher types in use by the American Cryptogram Association.
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.
Quick Links
Download the latest release (1.6.0) as a Binary RPM or a Windows self-extracting installer. Or just get the Source Code (as a source rpm) and build it yourself.
See the Project Page at SourceForge for earlier versions, access to the CVS repository, and message boards.
New Tcl Packages
Several new Tcl packages are provided by this software. Each package provides a handful of new Tcl commands. These packages include:
- 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.
Applications
- 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
wart@kobold.org
Created on Wed Mar 31 08:18:23 PST 2004