Welcome to m209’s documentation!

Author:

Brian Neal <bgneal@gmail.com>

Version:

1.0.0

Date:

Jan 25, 2026

Home Page:

https://github.com/gremmie/m209

License:

MIT License (see LICENSE.txt)

Documentation:

http://m209.readthedocs.org/

Support:

https://github.com/gremmie/m209/issues

Introduction

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.

Documentation

Contents:

Requirements

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.

Installation

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

You can install it using pip:

$ python3 -m pip install m209

If you aren’t familiar with installing Python packages, please see, for example, the Python Packaging Installing Packages tutorial.

The latest version of m209 can always be found at the m209 GitHub page.

To run the unit tests:

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

Support & Source

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

References

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. 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!

  5. Transcript of Training Film - Transcript of the above film.

  6. Dirk Rijmenants’ M-209 Simulator - Graphical M-209 simulator

  7. Mark J. Blair’s Hagelin project suite at GitHub - M-209 simulator written in C++

  8. Jean-François Bouchaudy’s Crypto Pages - Includes another Python-based M-209 simulator and a M-209 challenge. In French.

Indices and tables