# HG changeset patch # User Brian Neal # Date 1392947239 21600 # Node ID 6e0d4799796d56b6ba7ab345988924319365fb18 # Parent bcfe2a2c83582499ae111ab6558bbddeac9afb1d Added a blog post about my PURPLE simulator. Created the simulator tag. diff -r bcfe2a2c8358 -r 6e0d4799796d content/Coding/018-pyenigma.rst --- a/content/Coding/018-pyenigma.rst Mon Feb 10 20:03:21 2014 -0600 +++ b/content/Coding/018-pyenigma.rst Thu Feb 20 19:47:19 2014 -0600 @@ -2,7 +2,7 @@ ##################### :date: 2012-06-06 18:45 -:tags: Python, Py-Enigma, Enigma +:tags: Python, Py-Enigma, Enigma, simulator :slug: introducing-py-enigma :author: Brian Neal :summary: I got the Enigma machine bug bad! I wrote a simulator in Python. diff -r bcfe2a2c8358 -r 6e0d4799796d content/Coding/019-enigma-challenge.rst --- a/content/Coding/019-enigma-challenge.rst Mon Feb 10 20:03:21 2014 -0600 +++ b/content/Coding/019-enigma-challenge.rst Thu Feb 20 19:47:19 2014 -0600 @@ -2,7 +2,7 @@ ############################### :date: 2012-07-22 13:30 -:tags: Enigma, Py-Enigma, Cpp-Enigma, C++ +:tags: Enigma, Py-Enigma, Cpp-Enigma, C++, simulator :slug: completing-the-enigma-challenge :author: Brian Neal diff -r bcfe2a2c8358 -r 6e0d4799796d content/Coding/024-m209.rst --- a/content/Coding/024-m209.rst Mon Feb 10 20:03:21 2014 -0600 +++ b/content/Coding/024-m209.rst Thu Feb 20 19:47:19 2014 -0600 @@ -2,7 +2,7 @@ ################ :date: 2013-08-01 20:05 -:tags: Python, m209, Enigma +:tags: Python, m209, Enigma, simulator :slug: introducing-m209 :author: Brian Neal diff -r bcfe2a2c8358 -r 6e0d4799796d content/Coding/029-announcing-my-purple-simulator.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/content/Coding/029-announcing-my-purple-simulator.rst Thu Feb 20 19:47:19 2014 -0600 @@ -0,0 +1,57 @@ +Announcing my Purple simulator +############################## + +:date: 2014-02-20 19:59 +:tags: Python, m209, Enigma, Purple, simulator +:slug: announcing-my-purple-simulator +:author: Brian Neal +:Summary: I recently created a simulation of the Japanese PURPLE cipher machine + in Python. + +After working on a `M-209 simulator`_ last summer and an `Enigma simulator`_ the +year before, I got the World War 2 era cipher machine bug again. It all started +by reading about the `Japanese PURPLE machine`_ at Frode Weierud's excellent +CryptoCellar_ website. I read with great interest a paper available at that +site titled *PURPLE Revealed: Simulation and Computer-aided Cryptanalysis of +Angooki Taipu B* by Wes Freeman, Geof Sullivan, and Frode Weierud. This paper +is a fascinating read, with detailed descriptions of how the machine worked, +the complicated keying system employed by the Japanese, and information on +using a technique known as *hill-climbing* to mount a ciphertext only attack on +a messages. Highly recommended! + +After reading the paper I knew I had to try to write a simulator for the PUPRLE +machine in Python_. Writing these simulators is great fun. You have to +understand how the machine works, get a bunch of tiny details correct, have +a bit of patience, and do a lot of detective work and debugging. Once you have +them built, they aren't all that complicated when coded on a modern computer. +But you get an amazing appreciation for these machines as originally +implemented as electro-mechanical devices. The PURPLE machine, for example, +required almost 2,000 wired connections! It is even more amazing when you know +the U.S. code breakers built replicas without even seeing an original Japanese +machine. When the war ended, only a few parts of one Japanese machine were ever +recovered! + +I had a lot of fun writing this and playing with it. I hope someone else finds +it interesting or educational. Please contact me and let me know if you use it +for anything. Please see these links for documentation, the code, and licensing +details: + +* `Purple simulator on PyPI`_ +* `Purple simulator on Bitbucket`_ + +Once again, many thanks to Frode Weierud, Geoff Sullivan, and Wes Sullivan for +the very interesting paper. I'm also grateful to Messrs. Weierud and Sullivan +who provided me with valuable plaintext, advice and encouragement while +I worked on this project. + +I also recommend the book *Battle of Wits: The Complete Story of Codebreaking +in World War II* by Stephen Budiansky, which details the efforts and the people +behind the cracking of the PURPLE cipher. + +.. _M-209 simulator: https://m209.readthedocs.org/en/latest/ +.. _Enigma simulator: http://py-enigma.readthedocs.org/en/latest/ +.. _Japanese PURPLE machine: http://cryptocellar.web.cern.ch/cryptocellar/simula/purple/ +.. _CryptoCellar: http://cryptocellar.web.cern.ch/cryptocellar/ +.. _Python: http://www.python.org/ +.. _Purple simulator on PyPI: https://pypi.python.org/pypi/purple +.. _Purple simulator on Bitbucket: https://bitbucket.org/bgneal/purple/