bgneal@51: .. m209 documentation master file, created by bgneal@51: sphinx-quickstart on Thu Jul 4 18:12:07 2013. bgneal@51: You can adapt this file completely to your liking, but it should at least bgneal@51: contain the root `toctree` directive. bgneal@51: bgneal@51: Welcome to m209's documentation! bgneal@51: ================================ bgneal@51: bgneal@52: :Author: Brian Neal bgneal@52: :Version: |release| bgneal@52: :Date: |today| bgneal@52: :Home Page: https://bitbucket.org/bgneal/m209/ bgneal@52: :License: MIT License (see LICENSE.txt) bgneal@52: :Documentation: http://m209.readthedocs.org/ bgneal@52: :Support: https://bitbucket.org/bgneal/m209/issues bgneal@52: bgneal@52: Introduction bgneal@52: ------------ bgneal@52: bgneal@57: The `M-209`_ is a mechanical cipher machine used by the US military during bgneal@57: World War II and up to the Korean War. The M-209 is also known as the CSP-1500 bgneal@57: by the US Navy. The M-209 is an example of a Hagelin device, a family of bgneal@57: mechanical cipher machines created by Swedish inventor `Boris Hagelin`_, where bgneal@57: it is known as the C-38. bgneal@57: bgneal@52: ``m209`` is a complete `M-209`_ simulation library and command-line application bgneal@52: written in Python 3. ``m209`` is historically accurate, meaning that it can bgneal@52: exchange messages with an actual M-209 cipher machine. bgneal@52: bgneal@52: It is hoped that this library will be useful to M-209 enthusiasts, historians, bgneal@52: and students interested in cryptography. bgneal@52: bgneal@52: ``m209`` strives to be Pythonic, easy to use, and comes with both unit tests bgneal@52: and documentation. ``m209`` is a library for building applications for bgneal@52: encrypting and decrypting M-209 messages. ``m209`` also ships with a simple bgneal@52: command-line application that can encrypt & decrypt messages for scripting and bgneal@52: experimentation. bgneal@52: bgneal@56: Documentation bgneal@56: ------------- bgneal@52: bgneal@56: Contents: bgneal@54: bgneal@56: .. toctree:: bgneal@69: :maxdepth: 2 bgneal@62: bgneal@56: tutorial bgneal@57: commandline bgneal@57: library bgneal@55: bgneal@55: bgneal@52: Requirements bgneal@52: ------------ bgneal@52: bgneal@52: ``m209`` is written in Python_, specifically Python 3.3. It has no other bgneal@52: requirements or dependencies. bgneal@52: bgneal@52: Installation bgneal@52: ------------ bgneal@52: bgneal@70: ``m209`` is available on the `Python Package Index`_ (PyPI). bgneal@70: bgneal@70: You can install it using pip_:: bgneal@52: bgneal@52: $ pip install m209 # install bgneal@52: $ pip install --upgrade m209 # upgrade bgneal@52: bgneal@55: You may also download a tarball or .zip file of the latest code by visiting the bgneal@70: `m209 Bitbucket page`_. Alternatively if you use Mercurial_, you can clone the bgneal@70: repository with the following command:: bgneal@52: bgneal@52: $ hg clone https://bitbucket.org/bgneal/m209 bgneal@52: bgneal@70: If you did not use pip (you downloaded or cloned the code yourself), you can bgneal@70: install with:: bgneal@52: bgneal@70: $ cd where-you-extracted-m209 bgneal@52: $ python setup.py install bgneal@52: bgneal@70: To run the unit tests:: bgneal@70: bgneal@70: $ cd where-you-extracted-m209 bgneal@70: $ python -m unittest discover -b bgneal@70: bgneal@52: Support & Source bgneal@52: ---------------- bgneal@52: bgneal@52: All support takes place at the `m209 Bitbucket page`_. Please enter any bgneal@52: feature requests or bugs into the `issue tracker`_. bgneal@52: bgneal@68: .. _references-label: bgneal@68: bgneal@57: References bgneal@57: ---------- bgneal@57: bgneal@57: All of the resources listed below were useful to me in the creation of the bgneal@57: ``m209`` library. In particular, I want to thank Mark J. Blair for his detailed bgneal@57: explanations of the M-209's operation and procedures. The official training bgneal@57: film was also highly instructive. bgneal@57: bgneal@57: #. `M-209 at Wikipedia `_ bgneal@57: #. `Mark J. Blair's Converter M-209-B `_ bgneal@57: #. `1942 M-209 Manual `_ bgneal@59: #. `1944 M-209 Manual `_ bgneal@57: #. `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! bgneal@57: #. `Transcript of Training Film `_ - bgneal@57: Transcript of the above film. bgneal@57: #. `Mark J. Blair's M-209 Cipher Machine Group `_ - bgneal@57: Informal club for M-209 enthusiasts. Includes detailed explanations of the bgneal@57: device and how to use it. Very useful. bgneal@57: #. `Dirk Rijmenants' M-209 Simulator `_ - bgneal@57: Graphical M-209 simulator bgneal@57: #. `Mark J. Blair's Hagelin project suite at GitHub `_ bgneal@57: - M-209 simulator written in C++ bgneal@66: #. `Jean-François Bouchaudy's Crypto Pages `_ bgneal@57: - Includes another Python-based M-209 simulator and a M-209 challenge. In French. bgneal@57: #. `The C-38 / M-209 Cipher Machine `_ bgneal@57: - Another M-209 page. This one has useful info on creating key lists and a C-38 simulator written in C. bgneal@57: bgneal@51: Indices and tables bgneal@51: ================== bgneal@51: bgneal@51: * :ref:`genindex` bgneal@51: * :ref:`modindex` bgneal@51: * :ref:`search` bgneal@51: bgneal@52: bgneal@52: .. _M-209: http://en.wikipedia.org/wiki/M-209 bgneal@57: .. _Boris Hagelin: http://en.wikipedia.org/wiki/Boris_Hagelin bgneal@52: .. _Python: http://www.python.org bgneal@52: .. _Python Package Index: http://pypi.python.org/pypi/m209/ bgneal@52: .. _m209 Bitbucket page: https://bitbucket.org/bgneal/m209 bgneal@52: .. _pip: http://www.pip-installer.org bgneal@52: .. _Mercurial: http://mercurial.selenic.com/ bgneal@52: .. _issue tracker: https://bitbucket.org/bgneal/m209/issues