Scroll to navigation

pyenigma.py(1) pyenigma.py(1)

NAME

pyenigma.py - encrypt/decrypt text according to Enigma machine key settings

SYNOPSIS

pyenigma.py [-h] [-k KEY_FILE] [-d DAY] [-r ROTOR [ROTOR ...]]

[-i RING_SETTING [RING_SETTING ...]]
[-p PLUGBOARD [PLUGBOARD ...]] [-u REFLECTOR] [-s START]
[-t TEXT] [-f FILE] [-x REPLACE_CHAR] [-z] [-v]

DESCRIPTION

pyenigma.py is a command line for processing Enigma messages. Enigma settings can either be specified by command-line arguments, or read from a key file. If reading from a key file, the line labeled with the current day number is used unless the --day argument is provided.

Text to process can be supplied 3 ways:

  • if --text=TEXT is present TEXT is processed
  • if --file=FILE is present the contents of FILE are processed
  • otherwise the text is read from standard input

Please see documentation for the description of the file format.

OPTIONS

show this help message and exit
path to key file for daily settings
use the settings for day DAY when reading key file
rotor list ordered from left to right; e.g III IV I
ring setting list from left to right; e.g. A A J
plugboard settings
reflector name
starting position
text to process
input file to process
if the input text contains chars not found on the enigma keyboard, replace with this char [default: X]
if the input text contains chars not found on the enigma keyboard, delete them from the input
provide verbose output; include final rotor positions

EXAMPLE

Try these commands to specify settings from the command line:


$ pyenigma.py -r III IV V -i 1 2 3 -p AB CD EF GH IJ KL MN -u B -s XYZ
$ pyenigma.py -r Beta III IV V -i A B C D -p 1/2 3/4 5/6 -u B-Thin -s WXYZ
This command will load Enigma settings from a file:


$ pyenigma.py --key-file=enigma.keys -s XYZ -t HELLOXWORLDX

AUTHOR

Brian Neal <bgneal@gmail.com>

26 Apr 2015