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@68
|
83 .. _references-label:
|
bgneal@68
|
84
|
bgneal@57
|
85 References
|
bgneal@57
|
86 ----------
|
bgneal@57
|
87
|
bgneal@57
|
88 All of the resources listed below were useful to me in the creation of the
|
bgneal@57
|
89 ``m209`` library. In particular, I want to thank Mark J. Blair for his detailed
|
bgneal@57
|
90 explanations of the M-209's operation and procedures. The official training
|
bgneal@57
|
91 film was also highly instructive.
|
bgneal@57
|
92
|
bgneal@57
|
93 #. `M-209 at Wikipedia <http://en.wikipedia.org/wiki/M-209>`_
|
bgneal@57
|
94 #. `Mark J. Blair's Converter M-209-B <http://www.nf6x.net/2009/02/converter-m-209-b/>`_
|
bgneal@57
|
95 #. `1942 M-209 Manual <http://maritime.org/tech/csp1500inst.htm>`_
|
bgneal@59
|
96 #. `1944 M-209 Manual <http://www.ilord.com/m209manual.html>`_
|
bgneal@57
|
97 #. `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
|
98 #. `Transcript of Training Film <http://www.ilord.com/m209-training.html>`_ -
|
bgneal@57
|
99 Transcript of the above film.
|
bgneal@57
|
100 #. `Mark J. Blair's M-209 Cipher Machine Group <http://www.nf6x.net/groups/m209group/>`_ -
|
bgneal@57
|
101 Informal club for M-209 enthusiasts. Includes detailed explanations of the
|
bgneal@57
|
102 device and how to use it. Very useful.
|
bgneal@57
|
103 #. `Dirk Rijmenants' M-209 Simulator <http://users.telenet.be/d.rijmenants/en/m209sim.htm>`_ -
|
bgneal@57
|
104 Graphical M-209 simulator
|
bgneal@57
|
105 #. `Mark J. Blair's Hagelin project suite at GitHub <https://github.com/NF6X/hagelin>`_
|
bgneal@57
|
106 - M-209 simulator written in C++
|
bgneal@66
|
107 #. `Jean-François Bouchaudy's Crypto Pages <http://www.jfbouch.fr/crypto/>`_
|
bgneal@57
|
108 - Includes another Python-based M-209 simulator and a M-209 challenge. In French.
|
bgneal@57
|
109 #. `The C-38 / M-209 Cipher Machine <http://hem.passagen.se/tan01/c38.html>`_
|
bgneal@57
|
110 - Another M-209 page. This one has useful info on creating key lists and a C-38 simulator written in C.
|
bgneal@57
|
111
|
bgneal@51
|
112 Indices and tables
|
bgneal@51
|
113 ==================
|
bgneal@51
|
114
|
bgneal@51
|
115 * :ref:`genindex`
|
bgneal@51
|
116 * :ref:`modindex`
|
bgneal@51
|
117 * :ref:`search`
|
bgneal@51
|
118
|
bgneal@52
|
119
|
bgneal@52
|
120 .. _M-209: http://en.wikipedia.org/wiki/M-209
|
bgneal@57
|
121 .. _Boris Hagelin: http://en.wikipedia.org/wiki/Boris_Hagelin
|
bgneal@52
|
122 .. _Python: http://www.python.org
|
bgneal@52
|
123 .. _Python Package Index: http://pypi.python.org/pypi/m209/
|
bgneal@52
|
124 .. _m209 Bitbucket page: https://bitbucket.org/bgneal/m209
|
bgneal@52
|
125 .. _pip: http://www.pip-installer.org
|
bgneal@52
|
126 .. _Mercurial: http://mercurial.selenic.com/
|
bgneal@52
|
127 .. _issue tracker: https://bitbucket.org/bgneal/m209/issues
|