Enigma Cryptanalysis Tools


Enigma Home Page

Introduction

A few years ago I took part in the Enigma challenge of Dirk Rijmenants. On this occasion, I had to write software to solve the various problems. Then for other cipher machines I continue to write programs to break them.

Some of the programs I wrote used techniques that were already known during WWII, such as exhaustive search, but computers did not exist so these techniques could not be used. On the other hand, hill climbing, simulated annealing or genetic algorithms approaches were unknown and offer the hobbyist cryptologist of our time very powerful tools!

Mostly I used Python to write my programs. A small exception: my Turing / Welchman Bombe is written in C language.

Overview of Enigma tools

The Turing / Welchman Bombe

The first Enigma cryptanalysis software I wrote emulated the Turing / Welchman Bombe. I am very proud of it, because to write it I had to first understand how this great machine works.

The checking machine

When a bombe stops, we need to validate the stop with a simplified Enigma called Checking Machine.

Rejewski's Bombe

This is software that I wrote recently. Indeed before reading David Link's article in Cryptologia I had absolutely no idea how this machine worked.

The Cyclometer

When I wanted to create the Rejewski catalog or the Zygalski sheets I was forced (like the cryptologists of the time of war [and before war]) to emulate the cyclometer. At the moment my version is purely text but I hope to create a graphic version.

Explore the key space (scan)

I created the first version of this software when I took part in the Dirk’s challenge. It searches for plain text from the cryptogram by exploring the different grundstellung and / or the different ringstellung and / or the different walzenlage. The fitness function can be chosen (IC, BIG, TRI, ...).

Search the genuine Ringstellung (ring)

I also created the first version of this software when I took part in the Dirk challenge.

After having found the plain text (or only part of it) which matches the cryptogram, this program searches for the ringstellung. It uses the header (compatible with the May 1940 method) which contains the grundstellung and the indicator. The latter corresponds to the message key (Spruchschlüssel) encrypted at the grundstellung position.

Use the HC to find the steckers

I created a C language program to find the full key of a military Enigma (including steckers) using the Hill Climbing algorithm. I made a model in Python in which I only explore one position (grundstellung). However, I am testing different fitness functions. The software you can download is this model in Python.