annotate docs/index.rst @ 65:256b3f3e35e9

Add M209 class docs.
author Brian Neal <bgneal@gmail.com>
date Sat, 20 Jul 2013 18:52:45 -0500
parents 42d7e5410dbd
children 590a03d6eb6b
rev   line source
bgneal@51 1 .. m209 documentation master file, created by
bgneal@51 2 sphinx-quickstart on Thu Jul 4 18:12:07 2013.
bgneal@51 3 You can adapt this file completely to your liking, but it should at least
bgneal@51 4 contain the root `toctree` directive.
bgneal@51 5
bgneal@51 6 Welcome to m209's documentation!
bgneal@51 7 ================================
bgneal@51 8
bgneal@52 9 :Author: Brian Neal <bgneal@gmail.com>
bgneal@52 10 :Version: |release|
bgneal@52 11 :Date: |today|
bgneal@52 12 :Home Page: https://bitbucket.org/bgneal/m209/
bgneal@52 13 :License: MIT License (see LICENSE.txt)
bgneal@52 14 :Documentation: http://m209.readthedocs.org/
bgneal@52 15 :Support: https://bitbucket.org/bgneal/m209/issues
bgneal@52 16
bgneal@52 17 Introduction
bgneal@52 18 ------------
bgneal@52 19
bgneal@57 20 The `M-209`_ is a mechanical cipher machine used by the US military during
bgneal@57 21 World War II and up to the Korean War. The M-209 is also known as the CSP-1500
bgneal@57 22 by the US Navy. The M-209 is an example of a Hagelin device, a family of
bgneal@57 23 mechanical cipher machines created by Swedish inventor `Boris Hagelin`_, where
bgneal@57 24 it is known as the C-38.
bgneal@57 25
bgneal@52 26 ``m209`` is a complete `M-209`_ simulation library and command-line application
bgneal@52 27 written in Python 3. ``m209`` is historically accurate, meaning that it can
bgneal@52 28 exchange messages with an actual M-209 cipher machine.
bgneal@52 29
bgneal@52 30 It is hoped that this library will be useful to M-209 enthusiasts, historians,
bgneal@52 31 and students interested in cryptography.
bgneal@52 32
bgneal@52 33 ``m209`` strives to be Pythonic, easy to use, and comes with both unit tests
bgneal@52 34 and documentation. ``m209`` is a library for building applications for
bgneal@52 35 encrypting and decrypting M-209 messages. ``m209`` also ships with a simple
bgneal@52 36 command-line application that can encrypt & decrypt messages for scripting and
bgneal@52 37 experimentation.
bgneal@52 38
bgneal@56 39 Documentation
bgneal@56 40 -------------
bgneal@52 41
bgneal@56 42 Contents:
bgneal@54 43
bgneal@56 44 .. toctree::
bgneal@62 45 :maxdepth: 3
bgneal@62 46
bgneal@56 47 tutorial
bgneal@57 48 commandline
bgneal@57 49 library
bgneal@55 50
bgneal@55 51
bgneal@52 52 Requirements
bgneal@52 53 ------------
bgneal@52 54
bgneal@52 55 ``m209`` is written in Python_, specifically Python 3.3. It has no other
bgneal@52 56 requirements or dependencies.
bgneal@52 57
bgneal@52 58 Installation
bgneal@52 59 ------------
bgneal@52 60
bgneal@52 61 ``m209`` is available on the `Python Package Index`_ (PyPI). You can install it
bgneal@52 62 using pip_::
bgneal@52 63
bgneal@52 64 $ pip install m209 # install
bgneal@52 65 $ pip install --upgrade m209 # upgrade
bgneal@52 66
bgneal@55 67 You may also download a tarball or .zip file of the latest code by visiting the
bgneal@55 68 Downloads tab on the `m209 Bitbucket page`_. Alternatively if you use
bgneal@52 69 Mercurial_, you can clone the repository with the following command::
bgneal@52 70
bgneal@52 71 $ hg clone https://bitbucket.org/bgneal/m209
bgneal@52 72
bgneal@52 73 If you did not use pip, you can install with this command::
bgneal@52 74
bgneal@52 75 $ python setup.py install
bgneal@52 76
bgneal@52 77 Support & Source
bgneal@52 78 ----------------
bgneal@52 79
bgneal@52 80 All support takes place at the `m209 Bitbucket page`_. Please enter any
bgneal@52 81 feature requests or bugs into the `issue tracker`_.
bgneal@52 82
bgneal@57 83 References
bgneal@57 84 ----------
bgneal@57 85
bgneal@57 86 All of the resources listed below were useful to me in the creation of the
bgneal@57 87 ``m209`` library. In particular, I want to thank Mark J. Blair for his detailed
bgneal@57 88 explanations of the M-209's operation and procedures. The official training
bgneal@57 89 film was also highly instructive.
bgneal@57 90
bgneal@57 91 #. `M-209 at Wikipedia <http://en.wikipedia.org/wiki/M-209>`_
bgneal@57 92 #. `Mark J. Blair's Converter M-209-B <http://www.nf6x.net/2009/02/converter-m-209-b/>`_
bgneal@57 93 #. `1942 M-209 Manual <http://maritime.org/tech/csp1500inst.htm>`_
bgneal@59 94 #. `1944 M-209 Manual <http://www.ilord.com/m209manual.html>`_
bgneal@57 95 #. `Official M-209 Training Film <http://www.youtube.com/playlist?list=PLCPgncK_sTnEny2-uoTV-1_GC72zo-vKq>`_ - 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 96 #. `Transcript of Training Film <http://www.ilord.com/m209-training.html>`_ -
bgneal@57 97 Transcript of the above film.
bgneal@57 98 #. `Mark J. Blair's M-209 Cipher Machine Group <http://www.nf6x.net/groups/m209group/>`_ -
bgneal@57 99 Informal club for M-209 enthusiasts. Includes detailed explanations of the
bgneal@57 100 device and how to use it. Very useful.
bgneal@57 101 #. `Dirk Rijmenants' M-209 Simulator <http://users.telenet.be/d.rijmenants/en/m209sim.htm>`_ -
bgneal@57 102 Graphical M-209 simulator
bgneal@57 103 #. `Mark J. Blair's Hagelin project suite at GitHub <https://github.com/NF6X/hagelin>`_
bgneal@57 104 - M-209 simulator written in C++
bgneal@57 105 #. `Jean-François BOUCHAUDY's Crypto Pages <http://www.jfbouch.fr/crypto/>`_
bgneal@57 106 - Includes another Python-based M-209 simulator and a M-209 challenge. In French.
bgneal@57 107 #. `The C-38 / M-209 Cipher Machine <http://hem.passagen.se/tan01/c38.html>`_
bgneal@57 108 - Another M-209 page. This one has useful info on creating key lists and a C-38 simulator written in C.
bgneal@57 109
bgneal@51 110 Indices and tables
bgneal@51 111 ==================
bgneal@51 112
bgneal@51 113 * :ref:`genindex`
bgneal@51 114 * :ref:`modindex`
bgneal@51 115 * :ref:`search`
bgneal@51 116
bgneal@52 117
bgneal@52 118 .. _M-209: http://en.wikipedia.org/wiki/M-209
bgneal@57 119 .. _Boris Hagelin: http://en.wikipedia.org/wiki/Boris_Hagelin
bgneal@52 120 .. _Python: http://www.python.org
bgneal@52 121 .. _Python Package Index: http://pypi.python.org/pypi/m209/
bgneal@52 122 .. _m209 Bitbucket page: https://bitbucket.org/bgneal/m209
bgneal@52 123 .. _pip: http://www.pip-installer.org
bgneal@52 124 .. _Mercurial: http://mercurial.selenic.com/
bgneal@52 125 .. _issue tracker: https://bitbucket.org/bgneal/m209/issues