ENIGMA SIM MANUAL
About the Enigma Sim
The program is an exact simulation of the 3-rotor Wehrmacht &
Luftwaffe, the 3-rotor Kriegsmarine M3, and the famous 4-rotor
Kriegsmarine M4 model of the German Enigma cipher machine, as
they were used during World War II from 1939 until 1945. You can
select between the three models, choose different rotors or 'Walzen',
preset the rotor wiring positions or 'Ringstellung' and switch letters by
using plugs or 'Stecker'. The internal wiring of all rotors is identical to
those used by the Wehrmacht, Luftwaffe and Kriegsmarine. This
simulator is therefore fully compatible with the real Enigma-machine
and you can decipher original messages and encipher your own
messages.
This manual explains how to use the Enigma simulator, describes the
message procedures as used by the German Armed Forces, a
complete technical description and a brief history of the Enigma.
For more information, please visit
Cipher Machines & Cryptology
http://users.telenet.be/d.rijmenants
Copyright Information
THE ENIGMA SIMULATOR SOFTWARE IS FREEWARE AND CAN BE USED AND DISTRIBUTED
UNDER THE FOLLOWING RESTRICTIONS: IT IS STRICTLY FORBIDDEN TO USE THIS SOFTWARE
OR COPIES OR PARTS OF IT FOR COMMERCIAL PURPOSES, OR TO SELL, LEASE OR MAKE
PROFIT FROM THIS PROGRAM BY ANY MEANS. THIS SOFTWARE MAY ONLY BE USED IF YOU
AGREE TO THESE CONDITIONS.
Picture Gallery Copyrights:
© Tom Perera, Enigma Museum - http://w1tp.com/mcpu.htm
© KMi The Open University
DISCLAIMER OF WARRANTIES
THIS SOFTWARE AND THE ACCOMPANYING FILES ARE SUPPLIED "AS IS" AND WITHOUT
WARRANTIES OF ANY KIND, EITHER EXPRESSED OR IMPLIED, WITH RESPECT TO THIS
PRODUCT, ITS QUALITY, PERFORMANCE, MERCHANTABILITY, OR FITNESS FOR ANY
PARTICULAR PURPOSE. THE ENTIRE RISK AS TO IT'S QUALITY AND PERFORMANCE IS WITH THE
USER. IN NO EVENT WILL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, OR
CONSEQUENTIAL DAMAGES RESULTING OUT OF THE USE OF OR INABILITY TO USE THIS
PRODUCT.
© D. Rijmenants 2008
Cipher Machines & Cryptology
http://users.telenet.be/d.rijmenants
How to use the simulator
To prepare the Enigma Simulator for use, we need to select the reflector, the rotors and their order, adjust
the ringsettings, insert the plugs and set the machine in the start position. As you will notice, there will
always be a little hand visible when you move the mouse to places where you can select or click something.
You can also click or move the mouse over the white power label in the right top corner to call the Simulator
Menu.
Setting the rotors in the proper positions
Click on the right lock [1] to open the cover and reveal the Enigma mechanism.
Click on a rotor [2] in the Enigma to lift it out of the machine.
Click on an empty place [3] in the rotor box to put that rotor in the box.
Now you can select another rotor from the box. Once it is out of the box, you can adjust the 'Ringstellung'
by clicking on the upper [4] or lower [5] half of the displayed rotor. When the rotor is adjusted, you must
click on an empty place in the Enigma to place the rotor in that position. If you find it easier, you can lift out
all the rotors and put them into the box first, and then select, adjust and insert them one by one in the
machine.
Selecting the reflectors
You can change the reflector [6] by left-or right clicking the letter on the reflector. By changing the reflector,
you can select the different Enigma models.
You will go through the wide B and C reflector from the 3-rotor Wehrmacht and Luftwaffe model, the wide B
and C reflector from the 3-rotor Kriegsmarine M3, and the thin B and C from the 4-rotor Kriegsmarine M4
model. Notice that on the Wehrmacht-Luftwaffe model, you can select between five rotors and two wide
reflectors, on the Kriegsmarine M3 between eight rotors and two wide reflectors, and on the M4 you have
the choice between eight rotors, two special 'Zusatzwalzen' or Greek rotors named Beta and Gamma
(which cannot advance) that are placed just before the thin reflector, and the two thin reflectors.
Once all rotors are in place you can close the cover by clicking on the handle [7] at the left, above the
reflector.
Special note on the rotors: If you use the M4 model with the thin B reflector and the Beta rotor as 4th rotor
in 'zero-position' (rotor and ring set to A), the machine is compatible with its predecessor, the 3-rotor M3
model, and the 3-rotor Army model with wide B reflector (of course, they are compatible only when the
other three rotors and the settings are the same). The rotor wirings were designed so that different
components of the army could exchange messages, although they had different Enigma models
Connecting the plugs
To connect plugs from one socket to another (to switch the letter connections) you must click on the plugs
at the bottom of the Enigma. The plugboard or 'Steckerbrett' will appear. Just click the desired socket [8]
and the socket that you want to connect it to [9]. To clear a connection, just click one of the plugs [10] and
both connected plugs dissapear. After finishing the plug settings
you can return to the Enigma by clicking the keys on the top.
Setting the Start Position
On the main screen you can change the start position or 'Grundstellung' of the rotors by clicking the upper
[11] or lower [12] half of the rotor's wheel. The start position can be saved temporary by pressing INS, and
can be retrieved later by pressing HOME.
The Text box and Clipboard
As an extra feature, you can display the encoded and decoded text in a window at the bottom of the
Enigma by clicking the lock [13] on the wooden box. Press DEL or Backspace to clear this text box. Click
again on the lock to hide the text box. This text box is a handy feature when coding long pieces of text. If
you click in this text box or press F5, the Smart Clipboard Window appears. You can select in various ways
how to format and transfer text to the clipboard. The text output is arranged in groups of five letters for the
Wehrmacht machine and groups of four letters for both Naval M3 and M4 machines.
Using the Auto Typing option
If you have a large amount of plain text or code that needs to be typed, you can use the Auto Typing
Window. This window will appear if you press F6. In this window you can type, edit or paste pieces of text,
or retrieve the content of the clipboard. You can select four different speeds of typing. Select ‘Start’ to begin
processing the text. During the Auto Typing you can abort by pressing ESC. Make sure that all setting are
finished and the rotors are in the start position before starting the Auto Typing.
Note: Auto Typing will only process alphabet characters and ignore all other characters like figures, signs
and spaces. When decoding, make sure that there are no ‘Kenngruppen’ in the code text or delete the
‘Kenngruppen’ in the text window.
Save and Load Machine Settings
In the Simulator Menu (click the white power label) you can view the current machine setup and the file
name, save the current settings or load other settings, or clear and return to defaul settings. The machine
settings are save with the .eni extension. On startup the simulator will be loaded with the last used settings.
If no settings file is found the default settings are loaded.
Exiting the simulator
To exit the Enigma simulator, just click on the power plug located in the upper right part of the Enigma. If
desired, you can save the current rotor and plug settings (the rotor startpositions are not saved)
Cryptanalysis and test mode
For cryptanalysis and testing purposes, you can disable the rotor advance mechanism by using F10. A
warning will be displayed above the rotors. Use F10 again to restore the rotor advance mechanism.
Extra’s
Clicking the left lock will bring you to the picture gallery and clicking on the Enigma sign at the top will
display the “about” window.
How the machine was used by the German military
Here is an example of how the German Luftwaffe sent messages that were encrypted using Enigma. The
operators never used the secret daily key to encrypt the message but used this key only to encrypt a
randomly chosen message-key or 'trigram' that was chosen by the operator. This message-key was used to
encrypt the rest of the message. With this procedure they avoided excessive use of the secret daily key,
and each message on that day was encrypted with another randomly chosen key. During the war, different
systems like this were implemented to use the codebooks. In general, a codebook contained all the
settings, per day, for a whole month.
The operator's key sheet contained the following information:
-----------------------------------------------------------
Tag Walzenlage Ringstellung Steckerverbindungen
(Day) (Rotors) (Ringsetting) (Plug Connections)
-----------------------------------------------------------
31 I II V 06 22 14 PO ML IU KJ NH YT GB VF RE DC
30 III IV II 17 04 26 BN VC XS WQ AZ GT YH JU IK PM
29 V I III 15 02 09 ML KJ HG FD SQ TR EZ IU BV XC
-----------------------------------------------------------
On day 31 the following message is transmitted:
U6Z DE C 1510 = 44 = EHZ TBS =
QBLTW LDAHH YEOEF PTWYB LENDP MKOXL DFAMU DWIJD XRJZ=
To decode the message we take te following steps:
1. Select the Walzen (rotors) and adjust the Ringstellung, put the Walzen into the machine and set the
plugs or 'Stecker' for day 31
2. Set the start position to EHZ, the first trigram of the message
3. In this position, decode the second trigram TBS to retrieve the message-key. This should result in XWB
4. Set the decoded message-key (XWB) as start position on the machine.
5. Now decode the rest of the message...
This may well be your first decoded message, Good Luck !
A second example
The following original message in two parts is a pre-release of the fruits of an on-going codebreaking
project, to break a large number of original German messages, a joint effort by Geoff Sullivan and Frode
Weierud, two of the members of the Crypto Simulation Group (CSG). It's a message from the SS-Totenkopf
Division and is from the campaign against Russia, operation Barbarossa.
The settings as recovered by the CSG codebreakers
3-rotor model
UKW: B (reflector)
Walzenlage: 245
Ringstellung: BUL
Stecker: AV BS CG DL FU HZ IN KM OW RX
Don't forget to use the first trigram from each part as start position to decode the second trigram in order to
retrieve the message-key, that is the start position for the rest of the message.
Important Note: RFUGZ and FNJAU are 'Kenngruppen', groups to identify the key that was used, and must
be skipped while decoding!
The Message:
Befordert am: 07.07.1941 1925 Uhr Durch:
Funkspruch Nr.:20 Von/An: f8v/bz2
Absendende Stelle : SS-T Div Kdr An: LVI A.K.
fuer m7g 1840 - 2tl 1t 179 - WXC KCH –
RFUGZ EDPUD NRGYS ZRCXN
UYTPO MRMBO FKTBZ REZKM
LXLVE FGUEY SIOZV EQMIK
UBPMM YLKLT TDEIS MDICA
GYKUA CTCDO MOHWX MUUIA
UBSTS LRNBZ SZWNR FXWFY
SSXJZ VIJHI DISHP RKLKA
YUPAD TXQSP INQMA TLPIF
SVKDA SCTAC DPBOP VHJK
2tl 155 - CRS YPJ -
FNJAU SFBWD NJUSE GQOBH
KRTAR EEZMW KPPRB XOHDR
OEQGB BGTQV PGVKB VVGBI
MHUSZ YDAJQ IROAX SSSNR
EHYGG RPISE ZBOVM QIEMM
ZCYSG QDGRE RVBIL EKXYQ
IRGIR QNRDN VRXCY YTNJR
SBDPJ BFFKY QWFUS
For those who might have trouble translating the German message from above, here's the English
translation (decoding the original is your job!)
Reconnaissance unit from KURTINOWA north-west of SEBEZ
on the flight corridor in direction DUBROWKI, OPOTSCHKA.
Started to move at 18:30. Attack. Infantry Regiment 3 goes
slowly but surely forwards. Time: 17:06. I (Roman number 1).
Infantry Regiment 3 on the flight corridor starting 16 km
east-west of KAMENEC.
Division Commander.
Message copyright by Geoff Sullivan and Frode Weierud
War at sea
The following fragment of a message contains an important piece of naval wartime history. It was
intercepted by British codebreakers and made decisive action by the Royal Navy possible.
Settings for the message:
3-rotor model
UKW: B (reflector)
Walzenlage: 314
Stecker: BU CP EI GN HT LZ MX OS
Ringstellung: SXA (19-24-01)
Start position: LBW
The Message:
...
MQLDI BNWQB RITNG UHCQH
YTRNB ZBFXD DSEXG BNGDA
IATLL KJTEC MLKBS ZMJKW
KDUSU JKRQV YLYFT IWSRK
NQSFH FFBLB DLTDQ JTZWB
NEAQZ CMJJG KFHPU IRHFL
BUEDK IJGQU XVAYK JOKMK
GLBSP AIXCN ...
Note: Although this is a marine message, only three rotors are used. As explained, some messages were
sent this way for M4 model to be compatible with the M3. Unfortunately for the Germans it gave British
cryptanalysts a big hint on the complicated 4-wheel naval codes.
Notes on abbreviations
The Kriegsmarine used the following abbreviations before enciphering their text:
X = Period
Y = Comma
UD = Question Mark
XX = Colon
YY = Dash/Hyphen/Slant
KK*****KK = Parenthesis
J*****J = Stress Mark
Numbers are written out as words.
The Wehrmacht used other abbreviations:
KLAM = Parenthesis
ZZ = Comma
X = Full stop (end of sentence)
YY = Point or dot
X****X = Inverted commas
Question mark ( Fragezeichen in German) is usually abbreviated to one of the three following forms:
FRAGE, FRAGEZ or FRAQ
Foreign names, places etc. twice delimited by "X", e.g. XPARISXPARISX
The letters CH is written as Q, e.g. ACHT was written as AQT, RICHTUNG as RIQTUNG
It was prohibited to encipher the word "null" several times in succession. For several nulls these
abbreviations are used:
00 = CENTA
000 = MILLE
0000 = MYRIA
Examples: 200 = ZWO CENTA, 00780 = CENTA SIEBEN AQT NULL
Technical details of the Enigma Machine
The Enigma machine is an electro-
mechanical device. It consists of a keyboard
(German QWERTZ layout), a lamp panel,
representing the alphabet, and three or four
rotors. These rotors advance each time a key
is depressed. Pressing a key is translated, by
rotors and plugboard, into a burning lamp,
representing the encoded letter. There is a
compartment for a 4 volt battery in the
machine and a plug to connect the machine
to an exterior power supply or transformer
type AC power supply.
The picture at the right shows the wiring. To
simplify the example, only four of each of the
components are shown. In reality, there are
26 lamps, keys, plugboard sockets and
wiring connections inside the rotors. The
current flows from the battery [1] through the
depressed bi-directional letter-switch [2] to
the plugboard [3]. The plugboard allows
rewiring the connections between keyboard
[2] and fixed entry wheel [4]. Next, the
current proceeds through the - unused, and
therefore closed - plug [3] via the entry wheel
[4] through the cross-wirings of the three
(Wehrmacht Enigma) or four (Kriegmarine
M4) rotors [5] and enters the reflector [6].
The reflector returns the current, via a
different path, back through the rotors [5] and
entry wheel [4], and proceeds through the
plugboarg again and through the plug 'S' connected with a cable [8] to plug 'D', and another bi-directional
switch [9] to light-up the lamp. Note that depressing a key will first step the rotors and then the sent the
current through the rotors en the light bulb. If the key is released the lamp will no longer light up. Therefore,
when no key is depressed, the rotor position of the previous encrypted letter is visible!
The Rotors or Walzen
The rotors (Walzen in German) are the most important elements of the machine. These round disks,
approximately 10 cm in diameter, are made from metal or bakelite. A disk consists of a round casing with
fixed notch and visible alphabet or number ring. The center of the rotor is a rotatable small disk with 26
spring-loaded contacts on the right side, scramble wired to 26 flat contact on the left side. Changing the
position of the internal wiring, relative to the notch and alphabet, is called the ring setting or
Ringstellung.The internal wiring is different for each rotor. This wiring represents a substitution encryption.
The combination of several rotors, in ever-changing positions relative to each other, is what makes the
encryption so complex. Each rotor has on its left a notch, on its right a ratchet. These are used by the
stepping mechanism to advance the rotors.
The machine was introduced with three rotors. In 1939 the set was extended to five rotors, marked with
Roman numerals I, II, III, IV and V, all with a single notch. The Kriegmarine extended the set of rotors with
another three rotors called VI, VII and VIII, with two notches. In 1942, the Kriegsmarine M4 introduced a
fourth rotor. To achieve this, the wide B and C reflectors from the three rotor version was replaced by thin B
and C reflectors, leaving room for the special fourth rotor. The fourth rotors were of two configurations,
named Beta and Gamma, with spring-loaded contacts on both sides. They were incompatible with the other
eight rotors.
Rotor wiring tables
Rotors Kriegsmarine/Wehrmacht/Luftwaffe (3-rotor model)
Input = ABCDEFGHIJKLMNOPQRSTUVWXYZ (rotor right side)
||||||||||||||||||||||||||
I = EKMFLGDQVZNTOWYHXUSPAIBRCJ
II = AJDKSIRUXBLHWTMCQGZNPYFVOE
III = BDFHJLCPRTXVZNYEIWGAKMUSQO
IV = ESOVPZJAYQUIRHXLNFTGKDCMWB
V = VZBRGITYUPSDNHLXAWMJQOFECK
Rotors used by Kriegsmarine only (3-rotor M3 and 4-rotor M4 model)
Input = ABCDEFGHIJKLMNOPQRSTUVWXYZ (rotor right side)
||||||||||||||||||||||||||
VI = JPGVOUMFYQBENHZRDKASXLICTW
VII = NZJHGRCXMYSWBOUFAIVLPEKQDT
VIII = FKQHTLXOCBJSPDZRAMEWNIUYGV
The special fourth rotors, also called Zusatzwalzen or Greek rotors. Used on the Kriegsmarine M4 with thin
reflectors only:
Input = ABCDEFGHIJKLMNOPQRSTUVWXYZ (rotor right side)
||||||||||||||||||||||||||
Beta = LEYJVCNIXWPBQMDRTAKZGFUHOS
Gamma = FSOKANUERHMBTIYCWLQPZXVGJD
In the reflector wiring table we can see that the wide B reflector an 'A' returns as 'Y' and 'Y' returns as 'A'.
Notice that the wirings are permanently connected as a loop between two letters.
Default wide reflectors Wehrmacht and Luftwaffe:
Contacts = ABCDEFGHIJKLMNOPQRSTUVWXYZ
||||||||||||||||||||||||||
Reflector B = YRUHQSLDPXNGOKMIEBFZCWVJAT
Reflector C = FVPJIAOYEDRZXWGCTKUQSBNMHL
Thin reflectors, Kriegsmarine M4 only:
Contacts = ABCDEFGHIJKLMNOPQRSTUVWXYZ
||||||||||||||||||||||||||
Reflector B Thin = ENKQAUYWJICOPBLMDXZVFTHRGS
Reflector C Thin = RDOBJNTKVEHMLFCWZAXGYIPSUQ
Turnover positions
I = Q (if rotor steps from Q to R, the next rotor is advanced)
II = E (if rotor steps from E to F, the next rotor is advanced)
III = V (if rotor steps from V to W, the next rotor is advanced)
IV = J (if rotor steps from J to K, the next rotor is advanced)
V = Z (if rotor steps from Z to A, the next rotor is advanced)
VI, VII & VIII = Z + M (if rotor steps from Z to A, or from M to N the next rotor is advanced)
The Ring Setting or Ringstellung
On the outside of the wiring core there's a movable ring with 26 numbers or letters and a notch. This ring is
rotatable and is locked with a sprinloaded pin (Wehrmacht) or two springloaded arcs (Kriegmarine) into any
of the 26 positions and is called the ring setting or Ringstellung. Changing the position of