---
name: "pyenigma.py"
section: "1"
platform: "linux"
package: "python3-enigma"
version: "0.1-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/pyenigma.py"
---

# pyenigma.py(1)

encrypt/decrypt text according to Enigma machine key settings

## 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

- **-h, --help**

  show this help message and exit

- **-k *KEY\_FILE*, --key-file *KEY\_FILE***

  path to key file for daily settings

- **-d *DAY*, --day *DAY***

  use the settings for day *DAY* when reading key file

- **-r *ROTOR* \[*ROTOR* ...\], --rotors *ROTOR* \[*ROTOR* ...\]**

  rotor list ordered from left to right; e.g III IV I

- **-i *RING\_SETTING* \[*RING\_SETTING* ...\], --ring-settings *RING\_SETTING* \[*RING\_SETTING* ...\]**

  ring setting list from left to right; e.g. A A J

- **-p *PLUGBOARD* \[*PLUGBOARD* ...\], --plugboard *PLUGBOARD* \[*PLUGBOARD* ...\]**

  plugboard settings

- **-u *REFLECTOR*, --reflector *REFLECTOR***

  reflector name

- **-s *START*, --start *START***

  starting position

- **-t *TEXT*, --text *TEXT***

  text to process

- **-f *FILE*, --file *FILE***

  input file to process

- **-x *REPLACE\_CHAR*, --replace-char *REPLACE\_CHAR***

  if the input text contains chars not found on the enigma keyboard, replace with this char \[default: X\]

- **-z, --delete-chars**

  if the input text contains chars not found on the enigma keyboard, delete them from the input

- **-v, --verbose**

  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\>
