Skip to content

Retired-2B-dev-team/ENIGMA

Repository files navigation

GitHub stars GitHub forks

status maintained maintainers version next-release-deadline website
work-in-progress not realy 6 v1-beta.1.0
https://retired-2b-dev-team.github.io/ENIGMA/

GitHub license GitHub issues

ENIGMA

Description:

This is a simulation of the ENIGMA encryption machine.

Download:

You can easly download files from Releases tab (you need only one sorce code pack, probably with .zip if your platform is Windows): To work properly, you should:

  1. Extract archive.
  2. Put executable file in folder *your-extarction-path*/ENIGMA-*version*/ENIGMA-*version* (near files like help.info, setings.txt and enigma-app.cpp).
  3. Alternatively you can just build executable file by yourself just compiling enigma-app.cpp and putting executable into the same directory as the source.

GUI app can be fund in 'GUI' directory, to use it, run .py file (you need have compiled c++ core code first to use the python GUI wrapper) Current version supports CMD usage, so to run program you should fire up the terminal in folder with executable file and run program as command with correct parameters (you can run enigma -h for help or just read help.info)

REMEMBER! THIS IS PRE-RELEASE VERSION! It's not tested well, nor it has good error handling. Use it wisely and take responsibility of what you are doing! If you are not sure, just wait for more stable release.

Attributions:

  • Browser Enigma emulator

    Huge thanks for providing great source that helped understand how the mechanism of the Enigma works inside, and made possible to test and find bugs inside our code.


Requirements:

  • C++ compiler (If You prefer to buld program from source on your own, what's recomended)
  • Python v3.9.0 or higher (to run GUI app).

Example:

  • ALPHABET:

    Letter indexes:

      0. 1. 2. 3. 4.
     [A, B, C, D, F]
    
  • MACHINE'S FRAGMENT:

Disk index:              0.     1.     2.
                         |      |      |
--------   /  0.   [0]->[3]-   [0]    [4]
|Letter|  |   1.    ^   [0] \  [4]    [1]
|index | <    2.    ^   [1]  \ [3] /--[3] => (D)
--------  |   3.    ^   [4]   -[2]/   [0]
           \  4.    ^   [2]    [1]    [2]
                    ^    |      |      |
     (A) => input->>^    |      |      |
                        Disks represented
                           by 1D arrays
                          (connections)