The M-209 Cipher Machine

The M-209 Cipher Machine

Announcing the M-209 Cipher Machine Group!

The M-209 Cipher Machine Group is an informal club for enthusiasts of the M-209 Cipher Machine. Members sign up for the group in order to register their desire to exchange M-209 cipher messages with other group members. Member names and email addresses are listed on a private, members-only page, and M-209 key lists are provided for common use by group members.

How it Works

It’s pretty simple: Members download the group’s key lists so that they can key their cipher machines the same way, and then they can email each other M-209 cipher messages with some hope that their recipients will be able to read them. This is all for fun and education, of course. The M-209 cipher was breakable back in World War 2, and even if it wasn’t, we’re publishing our key lists here for all to see. In other words, don’t expect to attain any realistic level of security by enciphering emails with an M-209 using published keys, or even your own non-published ones.

How to Participate

If this sounds like your idea of fun, then follow these steps to get started:

1: Get an M-209 Machine or Simulator

If you already have an M-209 machine, then congratulations! It’s a fine piece of historical equipment. If you don’t have one, don’t despair… they are available on the surplus market, and they’re probably the most available and least expensive military cipher machines on the collector market. That doesn’t mean they’re cheap or common, though. They show up on eBay a few times per year, and they generally seem to sell in the $1,500-$2,500 range.

If that’s too much money to spend or you just can’t wait for one to show up on eBay, then you’re still not out of luck. There are several M-209 simulators out there, and they’re FREE!

Graphical M-209 Simulator

Graphical M-209 Simulator

Dirk Rijmenants provides a fantastic graphical simulator that runs under Windows. It captures the feel of using a real M-209 about as well as any computer simulation could. I use a Mac, but I keep a VMware virtual machine on it running Windows XP just so I can run cipher machine simulators like this one.

Download Dirk’s graphical simulator here.

I wrote my own M-209 simulator to help me thoroughly understand how the machine works. It also includes the ability to generate new M-209 key tables, and I used it to generate the key lists for this group. It’s a command-line program that’s meant to be compiled and run in UNIX-like environments (Linux, Mac with MacPorts, Windows with Cygwin, etc.). If you are comfortable building and running software in UNIX-like environments, you might like to give it a try.

Learn more about my command-line simulator here.

Jean-François BOUCHAUDY provides a C-446 machine simulator (compatible with the M-209), written in Python. He also hosts the M-209 Challenge page.

See Jean-François BOUCHAUDY’s simulator here.

If you have an iOS device such as an iPhone or iPad, take a look at Mini209 by Horacio Jimenez:

Mini209: M-209 Cipher Machine Simulator for iOS

Have I missed any other good M-209 simulators? Please let me know if I should add any more to the list.

2: Learn How to Use It

We use the WW-2 method of encoding initial wheel settings into message indicators, and we add our own “net indicator” and group count to the beginning of the message. You can learn how to operate the machine from an original M-209 technical manual, and there’s a copy of a WW-2 training film online that you can view (it’s very blurry, however). I’ve also written a series of articles about how to use the M-209, which you can read right here:

Practical Use of the M-209 Cipher Machine
Chapter 1:  Cryptographic Basics
Chapter 2:  Operating the M-209
Chapter 3:  M-209 Under the Covers
Chapter 4:  Enciphering Messages
Chapter 5:  Deciphering Messages
Chapter 6:  When Things Go Wrong  (coming soon)
Chapter 7:  Making Things Harder for the Enemy  (coming soon)
Chapter 8:  Creating Key Tables  (coming soon)

 

3: Get the Key Lists

You’ll need the group’s key lists so that you can key your machine or simulator properly. We change our keys daily (as was the usual practice with the M-209), with the key change at 00:00 (midnight) GMT. New key lists are published each year. Select the distribution for this year below, under the column for your computer system. The two distributions for each year contain the same information, with the only difference being how the plain text files are formatted. The .zip archives contain text files with DOS-style CR+LF line endings, while the .tar.gz archives contain text files with UNIX-style LF line endings.

Year Windows Users Mac/Linux Users
2013 M209GROUP-2013.zip M209GROUP-2013.tar.gz
2014 M209GROUP-2014.zip M209GROUP-2014.tar.gz
2015 M209GROUP-2015.zip M209GROUP-2015.tar.gz
2016 M209GROUP-2016.zip M209GROUP-2016.tar.gz
2017 M209GROUP-2017.zip M209GROUP-2017.tar.gz
2018 M209GROUP-2018.zip M209GROUP-2018.tar.gz
2019 M209GROUP-2019.zip M209GROUP-2019.tar.gz
2020 M209GROUP-2020.zip M209GROUP-2020.tar.gz

 

The key lists are also available in one of my GitHub repositories.

Here is a test message for you to try to decipher, using the April 2013 key list:

M209GROUP GR 17
GGGUK FALEY SCNDC PNQDX YGXUH
TNAXB KTVWS CBMTE DHNXK PRDNC
FDFTJ DURSV DNAQH NCQBP KZJCV
GGGUK FALEY

Now, you might notice something a bit odd in that message. I’ve created an ad-hoc message formatting convention for this group, in which each message starts with a line stating "M209GROUP GR nn".

The first word, "M209GROUP", indicates that the following message will be enciphered with the M-209 Group’s key system. I am not aware of a parallel to this in original WW2 use, but I’ve added it to allow hobbyists to avoid confusion when exchanging messages with other enthusiasts, possibly using multiple key systems. "M209GROUP" shows that the message will be enciphered with the key lists that I’ve created for this group. If you would like to create your own key lists (either public or private) for use with a select circle of friends, you can use a different indicator.

The second word, "GR", indicates that a group count will follow. This is just a count of the number of five-letter groups in the message. This is similar to protocols commonly used when passing message traffic over radio, telegraph and teletype links to allow operators to detect common errors like skipping or repeating a group of letters.

Finally, "nn" is a number indicating how many five-letter groups will follow.

This convention is intended as a stand-in for the message headers that were used in practice for message traffic handling, but geared more towards hobbyist use than mass communications traffic. My command-line M-209 simulator can automatically generate and understand this ad-hoc convention, and you can use the m209-keylist.py script that accompanies it to generate your own private key lists in the same format as the M-209 Group’s lists.

4: Apply to the Group

Applying to join the group is easy! Just send me an email with the following information:

  • Required: Your name as you want it to appear in the member list.
  • Required: Your email address that you want to appear in the member list.
  • Required: A message enciphered with today’s key, indicating your desire to join the group.
  • Optional: Your amateur radio callsign.
  • Optional: The name and URL of your web page or blog, if you have one.
  • Optional: Where you live (i.e., “California, USA”).

You can include the required information in the enciphered message if you want to, or you can leave it in the plain text (particularly if your name and/or email address is not easy to spell out with only uppercase English alphabet letters).

Once you jump over that small hurdle (i.e., I need to be able to decipher your M-209 message successfully), I’ll add you to the member list and email you an M-209-enciphered message to tell you the password for the members-only page.

5: Have Fun!

Once you’re in, head over to the members-only page (password required!) and have some fun!

 

Need some Help?

If you need help figuring this stuff out or technical help related to the group, then email me for support.