Welcome to m209’s documentation!

Author:Brian Neal <bgneal@gmail.com>
Date:July 23, 2013
Home Page:https://bitbucket.org/bgneal/m209/
License:MIT License (see LICENSE.txt)


The M-209 is a mechanical cipher machine used by the US military during World War II and up to the Korean War. The M-209 is also known as the CSP-1500 by the US Navy. The M-209 is an example of a Hagelin device, a family of mechanical cipher machines created by Swedish inventor Boris Hagelin, where it is known as the C-38.

m209 is a complete M-209 simulation library and command-line application written in Python 3. m209 is historically accurate, meaning that it can exchange messages with an actual M-209 cipher machine.

It is hoped that this library will be useful to M-209 enthusiasts, historians, and students interested in cryptography.

m209 strives to be Pythonic, easy to use, and comes with both unit tests and documentation. m209 is a library for building applications for encrypting and decrypting M-209 messages. m209 also ships with a simple command-line application that can encrypt & decrypt messages for scripting and experimentation.


m209 is written in Python 3, specifically Python 3.3. At this time it will not run on Python 2.x.

m209 has no other requirements or dependencies.


m209 is available on the Python Package Index (PyPI).

You can install it using pip:

$ pip install m209                  # install
$ pip install --upgrade m209        # upgrade

You may also download an archive file of the latest code by visiting the m209 Bitbucket page. Alternatively if you use Mercurial, you can clone the repository with the following command:

$ hg clone https://bitbucket.org/bgneal/m209

If you did not use pip (you downloaded or cloned the code yourself), you can install with:

$ cd where-you-extracted-m209
$ python setup.py install

To run the unit tests:

$ cd where-you-extracted-m209
$ python -m unittest discover -b

Support & Source

All support takes place at the m209 Bitbucket page. Please enter any feature requests or bugs into the issue tracker.


All of the resources listed below were useful to me in the creation of the m209 library. In particular, I want to thank Mark J. Blair for his detailed explanations of the M-209’s operation and procedures. The official training film was also highly instructive.

  1. M-209 at Wikipedia
  2. Mark J. Blair’s Converter M-209-B
  3. 1942 M-209 Manual
  4. 1944 M-209 Manual
  5. Official M-209 Training Film - This is a 4 video YouTube playlist of an actual 1940’s era US War Department training film. Demonstrates the M-209 and operational procedures. Very interesting!
  6. Transcript of Training Film - Transcript of the above film.
  7. Mark J. Blair’s M-209 Cipher Machine Group - Informal club for M-209 enthusiasts. Includes detailed explanations of the device and how to use it. Very useful.
  8. Dirk Rijmenants’ M-209 Simulator - Graphical M-209 simulator
  9. Mark J. Blair’s Hagelin project suite at GitHub - M-209 simulator written in C++
  10. Jean-François Bouchaudy’s Crypto Pages - Includes another Python-based M-209 simulator and a M-209 challenge. In French.
  11. The C-38 / M-209 Cipher Machine - Another M-209 page. This one has useful info on creating key lists and a C-38 simulator written in C.

Indices and tables

Project Versions

Table Of Contents

Next topic


This Page