Mercurial > public > purple
changeset 25:39d0121a018d
Rename README.txt to README.rst to get bitbucket to parse it.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Mon, 17 Feb 2014 20:34:53 -0600 |
parents | adddc0d7038a |
children | 3a53d309bbb7 |
files | README.rst README.txt |
diffstat | 2 files changed, 171 insertions(+), 171 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README.rst Mon Feb 17 20:34:53 2014 -0600 @@ -0,0 +1,171 @@ +====== +Purple +====== + +A historically accurate PURPLE simulator written in Python 3 +------------------------------------------------------------ + +:Author: Brian Neal <bgneal@gmail.com> +:Version: 0.1 +:Date: February 17, 2013 +:Home Page: https://bitbucket.org/bgneal/purple/ +:License: MIT License (see LICENSE.txt) +:Documentation: This file +:Support: https://bitbucket.org/bgneal/purple/issues + +``Purple`` is a Python library and command-line utility for simulating the `PURPLE +Machine`_, a cipher machine used by the Japanese Foreign Office before and +during the Second World War. PURPLE was the code name given to machine by U.S. +cryptanalysts. The Japanese called the machine 97-shiki ōbun inji-ki (System 97 +Printing Machine for European Characters), and Angōki B-kata (Type B Cipher +Machine). The machine was used for secure diplomatic communications and was an +electromechanical stepping-switch device. + +This project is a Python 3 library and command-line utility for encrypting and +decrypting text by simulating the operation of an actual PURPLE machine. + + +Requirements +############ + +``Purple`` was written in Python_ 3, specifically 3.3.2, and has no other external +dependencies. + + +Installation +############ + +``Purple`` is available on the `Python Package Index`_ (PyPI). There are +a number of ways to install to ``Purple``, detailed below. The author +recommends you install into a virtualenv_. Setting up a virtualenv is not hard, +but describing it is out of scope for this document. Please see the virtualenv_ +documentation for more information. + +You can install it using pip_:: + + $ pip install purple # install + $ pip install --upgrade purple # upgrade + +You can also visit the the `Purple Bitbucket page`_ and download an archive +file of the latest code. Alternatively, if you use Mercurial_, you can clone +the repository with the following command:: + + $ hg clone https://bitbucket.org/bgneal/purple + +If you did not use pip_ (you downloaded or cloned the code yourself), you can +install with:: + + $ cd where-you-extracted-purple + $ python setup.py install + +To run the unit tests:: + + $ cd where-you-extracted-purple + $ python -m unittest discover + + +Command-line Usage +################## + +To get help on the command-line ``Purple`` utility, execute the ``purple`` +command with the ``--help`` option:: + + $ purple --help + usage: purple [-h] [-e] [-d] [-f] [-s SWITCHES] [-a ALPHABET] [-t TEXT] + [-i FILE] [-g N] [-w N] + + PURPLE cipher machine simulator + + optional arguments: + -h, --help show this help message and exit + -e, --encrypt perform an encrypt operation + -d, --decrypt perform a decrypt operation + -f, --filter filter plaintext and provide useful substitutions + -s SWITCHES, --switches SWITCHES + switch settings, e.g. 9-1,24,6-23 + -a ALPHABET, --alphabet ALPHABET + plugboard wiring string, 26-letters; e.g. + AEIOUYBCDFGHJKLMNPQRSTVWXZ + -t TEXT, --text TEXT input text to encrypt/decrypt + -i FILE, --input FILE + file to read input text from, - for stdin + -g N, --group N if non-zero, group output in N-letter groups [default: + 5] + -w N, --width N wrap output text to N letters; a value of 0 means do + not wrap [default: 70] + + Supply either -e or -d, but not both, to perform either an encrypt or decrypt. + If the -s option is not supplied, the value of the environment variable + PURPLE97_SWITCHES will be used. If the -a option is not supplied, the value of + the environment variable PURPLE97_ALPHABET will be used. Input text is + supplied either by the -t or by the -f options, but not both. + +(TODO: Text goes here explaining the switches and alphabet settings) + +If you are going to be working with the same initial switch settings and +plugboard alphabet it may be more convenient to specify them as environment +variables instead of repeatedly using the command-line arguments ``-s`` and +``-a``. The examples below assume these statements have been executed:: + + $ export PURPLE97_SWITCHES=9-1,24,6-23 + $ export PURPLE97_ALPHABET=NOKTYUXEQLHBRMPDICJASVWGZF + +The ``purple`` command operates in two modes, either encrypt (specified with +``-e`` or ``--encrypt``) or decrypt (``-d`` or ``--decrypt``). Input text can +be specified on the command-line with the ``-t`` or ``--text`` option, or +a read from a file (``-i`` or ``--input``). + +When encrypting text, the ``purple`` machine only accepts the letters A-Z, but +also allows for "garble" letters to be indicated by using the ``-`` (dash) +character. This means all punctuation and spaces must be either be omitted or +input via some other convention. The ``-f`` or ``--filter`` flag, when present, +relaxes these restrictions a bit. When this flag is on, all lowercase letters +will be converted to uppercase, digits will be converted to words (e.g. +5 becomes FIVE), and all other characters will be ignored. + +A simple encrypt example using the ``-f`` flag is given below:: + + $ purple -e -t "The PURPLE machine is now online" -f + OGIVT SIAAH MWMHT VIBYY JUOJF UE + +By default ``purple`` prints the output in 5-letter groups. This can be +disabled or customized with the ``--group`` and ``--width`` options. + +To decrypt this message:: + + $ purple -d -t "OGIVT SIAAH MWMHT VIBYY JUOJF UE" + THEPU RPLEM ACHIN EISNO WONLI NE + +Note that spaces are ignored on input. Again the output is produced in 5-letter +groups and wrapped at 70 letters per line. Here is the output again with +grouping disabled:: + + $ purple -d -t "OGIVT SIAAH MWMHT VIBYY JUOJF UE" -g 0 + THEPURPLEMACHINEISNOWONLINE + +Of course you can use file redirection to capture output in a file:: + + $ purple -e -t "The PURPLE machine is now online" -f > secret.txt + $ purple -d -i secret.txt + THEPU RPLEM ACHIN EISNO WONLI NE + + +Library Usage +############# + + +Support +####### + + +References +########## + + +.. _PURPLE Machine: http://en.wikipedia.org/wiki/Purple_(cipher_machine) +.. _Python: http://www.python.org +.. _Python Package Index: http://pypi.python.org/pypi/m209/ +.. _virtualenv: http://www.virtualenv.org/ +.. _pip: http://www.pip-installer.org +.. _Purple Bitbucket page: https://bitbucket.org/bgneal/purple/ +.. _Mercurial: http://mercurial.selenic.com/
--- a/README.txt Mon Feb 17 20:28:57 2014 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,171 +0,0 @@ -====== -Purple -====== - -A historically accurate PURPLE simulator written in Python 3 ------------------------------------------------------------- - -:Author: Brian Neal <bgneal@gmail.com> -:Version: 0.1 -:Date: February 17, 2013 -:Home Page: https://bitbucket.org/bgneal/purple/ -:License: MIT License (see LICENSE.txt) -:Documentation: This file -:Support: https://bitbucket.org/bgneal/purple/issues - -``Purple`` is a Python library and command-line utility for simulating the `PURPLE -Machine`_, a cipher machine used by the Japanese Foreign Office before and -during the Second World War. PURPLE was the code name given to machine by U.S. -cryptanalysts. The Japanese called the machine 97-shiki ōbun inji-ki (System 97 -Printing Machine for European Characters), and Angōki B-kata (Type B Cipher -Machine). The machine was used for secure diplomatic communications and was an -electromechanical stepping-switch device. - -This project is a Python 3 library and command-line utility for encrypting and -decrypting text by simulating the operation of an actual PURPLE machine. - - -Requirements -############ - -``Purple`` was written in Python_ 3, specifically 3.3.2, and has no other external -dependencies. - - -Installation -############ - -``Purple`` is available on the `Python Package Index`_ (PyPI). There are -a number of ways to install to ``Purple``, detailed below. The author -recommends you install into a virtualenv_. Setting up a virtualenv is not hard, -but describing it is out of scope for this document. Please see the virtualenv_ -documentation for more information. - -You can install it using pip_:: - - $ pip install purple # install - $ pip install --upgrade purple # upgrade - -You can also visit the the `Purple Bitbucket page`_ and download an archive -file of the latest code. Alternatively, if you use Mercurial_, you can clone -the repository with the following command:: - - $ hg clone https://bitbucket.org/bgneal/purple - -If you did not use pip_ (you downloaded or cloned the code yourself), you can -install with:: - - $ cd where-you-extracted-purple - $ python setup.py install - -To run the unit tests:: - - $ cd where-you-extracted-purple - $ python -m unittest discover - - -Command-line Usage -################## - -To get help on the command-line ``Purple`` utility, execute the ``purple`` -command with the ``--help`` option:: - - $ purple --help - usage: purple [-h] [-e] [-d] [-f] [-s SWITCHES] [-a ALPHABET] [-t TEXT] - [-i FILE] [-g N] [-w N] - - PURPLE cipher machine simulator - - optional arguments: - -h, --help show this help message and exit - -e, --encrypt perform an encrypt operation - -d, --decrypt perform a decrypt operation - -f, --filter filter plaintext and provide useful substitutions - -s SWITCHES, --switches SWITCHES - switch settings, e.g. 9-1,24,6-23 - -a ALPHABET, --alphabet ALPHABET - plugboard wiring string, 26-letters; e.g. - AEIOUYBCDFGHJKLMNPQRSTVWXZ - -t TEXT, --text TEXT input text to encrypt/decrypt - -i FILE, --input FILE - file to read input text from, - for stdin - -g N, --group N if non-zero, group output in N-letter groups [default: - 5] - -w N, --width N wrap output text to N letters; a value of 0 means do - not wrap [default: 70] - - Supply either -e or -d, but not both, to perform either an encrypt or decrypt. - If the -s option is not supplied, the value of the environment variable - PURPLE97_SWITCHES will be used. If the -a option is not supplied, the value of - the environment variable PURPLE97_ALPHABET will be used. Input text is - supplied either by the -t or by the -f options, but not both. - -(TODO: Text goes here explaining the switches and alphabet settings) - -If you are going to be working with the same initial switch settings and -plugboard alphabet it may be more convenient to specify them as environment -variables instead of repeatedly using the command-line arguments ``-s`` and -``-a``. The examples below assume these statements have been executed:: - - $ export PURPLE97_SWITCHES=9-1,24,6-23 - $ export PURPLE97_ALPHABET=NOKTYUXEQLHBRMPDICJASVWGZF - -The ``purple`` command operates in two modes, either encrypt (specified with -``-e`` or ``--encrypt``) or decrypt (``-d`` or ``--decrypt``). Input text can -be specified on the command-line with the ``-t`` or ``--text`` option, or -a read from a file (``-i`` or ``--input``). - -When encrypting text, the ``purple`` machine only accepts the letters A-Z, but -also allows for "garble" letters to be indicated by using the ``-`` (dash) -character. This means all punctuation and spaces must be either be omitted or -input via some other convention. The ``-f`` or ``--filter`` flag, when present, -relaxes these restrictions a bit. When this flag is on, all lowercase letters -will be converted to uppercase, digits will be converted to words (e.g. -5 becomes FIVE), and all other characters will be ignored. - -A simple encrypt example using the ``-f`` flag is given below:: - - $ purple -e -t "The PURPLE machine is now online" -f - OGIVT SIAAH MWMHT VIBYY JUOJF UE - -By default ``purple`` prints the output in 5-letter groups. This can be -disabled or customized with the ``--group`` and ``--width`` options. - -To decrypt this message:: - - $ purple -d -t "OGIVT SIAAH MWMHT VIBYY JUOJF UE" - THEPU RPLEM ACHIN EISNO WONLI NE - -Note that spaces are ignored on input. Again the output is produced in 5-letter -groups and wrapped at 70 letters per line. Here is the output again with -grouping disabled:: - - $ purple -d -t "OGIVT SIAAH MWMHT VIBYY JUOJF UE" -g 0 - THEPURPLEMACHINEISNOWONLINE - -Of course you can use file redirection to capture output in a file:: - - $ purple -e -t "The PURPLE machine is now online" -f > secret.txt - $ purple -d -i secret.txt - THEPU RPLEM ACHIN EISNO WONLI NE - - -Library Usage -############# - - -Support -####### - - -References -########## - - -.. _PURPLE Machine: http://en.wikipedia.org/wiki/Purple_(cipher_machine) -.. _Python: http://www.python.org -.. _Python Package Index: http://pypi.python.org/pypi/m209/ -.. _virtualenv: http://www.virtualenv.org/ -.. _pip: http://www.pip-installer.org -.. _Purple Bitbucket page: https://bitbucket.org/bgneal/purple/ -.. _Mercurial: http://mercurial.selenic.com/