This is a lot of code, experiments, and documentation that I developed over the many years I spent investigating the Zodiac Killer ciphers, and developing my site: http://zodiackillerciphers.com
Much of the code is throwaway experimental code, but I'm trying to carve out all the useful reusable stuff into Web services that can be easily invoked to perform tasks related to cryptanalysis.
To build:
mvn clean compile
To bring up Spring Boot (Java back end that provides service endpoints):
mvn spring-boot:run
It will bring up web server at:
http://localhost:8080 (The index page there will also link to a lot of static applications and content)
Invoke the sample endpoints:
http://localhost:8080/hello?name=Smeg
http://localhost:8080/greeting?name=SmeggyJSON
Bring up Angular (user interface front end for interacting with the service endpoints):
Change to this folder: src/main/webapp/angular-src/zkc
npm install (if needed)
ng serve
Then open browser to http://localhost:4200
The following are individual programs and utilities that can be run directly via the command line in the scripts
folder.
Generate a number of anagrams from the given string.
./anagram-builder.sh SPIROAGNEW 100
The above will generate 100 anagrams of SPIROAGNEW, including incomplete anagrams (with leftover letters).
For unlimited anagrams, use -1
as the 2nd argument.
These programs require a corpus archived in a specific location. TODO: Document and make more configurable.
If we let Z18's plaintext end with "THEZODIAC", the rest fits this pattern: x_H____Ax
(where x
is any letter A-Z). Generate samples from a corpus and output the ones that fit the pattern:
./z18-corpus-scanner-the-zodiac.sh
Generate corpus samples of the given length, that have the given minimum and maximum occurences of the given letter. Example:
./z18-corpus-scanner-letter-count.sh 18 E 5 7
: Produces samples that are 18 letters long and have at least 5 occurrences of E
, but no more than 7 of them.
Look for corpus samples of length 18 that have these letters in them: E E E E E E E R N O I
./z18-corpus-scanner-cragle.sh
Look for corpus samples of length 18 that have these letters in them: N S S R E E E E E E E, or N S S R E E E E E E E T T T T H H
./z18-corpus-scanner-cragle2.sh
Looks for corpus samples meeting criteria similar to Nicodemus' claims.
Example: Find corpus samples of length 18 that have 9 unique pairs. 5 of them must start with the same letter, and 5 of them must end with the same letter:
./z18-corpus-scanner-nicodemus.sh 18 9 5