Skip to content

aforouz/Enigma_Simulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

THE ENIGMA

  • Description 1.jpg

The Enigma machine is a cipher device developed and used in the early- to mid-20th century to protect commercial, diplomatic, and military communication. It was employed extensively by Nazi Germany during World War II, in all branches of the German military. The Enigma machine was considered so secure that it was used to encipher the most top-secret messages.

The Enigma has an electromechanical rotor mechanism that scrambles the 26 letters of the alphabet. In typical use, one person enters text on the Enigma's keyboard and another person writes down which of the 26 lights above the keyboard illuminated at each key press. If plain text is entered, the illuminated letters are the ciphertext. Entering ciphertext transforms it back into readable plaintext. The rotor mechanism changes the electrical connections between the keys and the lights with each keypress.

Installation

  • Installation can be done via downloading a stable release

View the latest releases available

Choose a release version and download the .zip file and extract it.

gcc .\config.c .\enigma.c .\finish.c .\last_log.c .\log_table.c .\logging.c .\login.c .\main.c .\mode.c .\verification.c .\settings.c

More Information

The Enigma Cipher Machine

Enigma.jpg

Acknowledgements

Tech Stack

Technology used: The C Programming Language

Simulation

Each source file contains comments to explain the workflow. Usage includes different types of both Encryption and Decryption. for this project the 3-Rotored model was taken as the refrence. please read the "usage.txt" before installation and use. The program can be used in three modes :

  • 1)Single character wich shows the exact workflow in each session.

  • 2)An array of characters as input and then another array as output.

  • 3)A ".txt" file as input and another one for output

Usage/Examples

Please read "usage.txt" before installation and use. This machine has three different types of input/output. And two different types of configuration. The machine will recover the latest config. In the first start you will be asked to setup the machine completely.

  • Main driver source code :
#include "config.h"//Header well-documented.


int main(void)
{
    // ########################################## CLI AND MENU
    // Show welcome page and ask username & password
    login();

    // ########################################## MEMORY RESERVATION

    Rotor RotorsArr[4];//Four rotors and one reflector
    char ArrPlug[26];//Plugboard Array

    // ########################################## Setting Configuration

    config(RotorsArr, ArrPlug);//Rotor and plugboard configuration

    check_last_log(RotorsArr);

    while (1)
    {
        int selected_mode = select_mode(); // Select input/output mode

        // ########################################## Main Algorithm
        
        enigma(selected_mode, RotorsArr, ArrPlug);

        save_rotor_posisions(RotorsArr);

        finish();
    }

    return 0;
}
// END OF FILE

Features

  • Live previews .
  • Cross platform .
  • Real time/exact workflow table.
  • Machine will recover the latest config.
  • Morse code .
  • Config files .
  • Functional Usage (i.e. txt to txt) .
  • Interactive Command Line Interface(CLI) .
  • Detailed log files .
  • Three different methods of using the machine.
  • Capable of modifying the configuration in two different ways.(CLI & .TXT) .
  • Encrypted Username and password.
  • Well adjusted requests.
  • Username and password Verification .
  • Username and password check

Screenshots

App Screenshot

Authors

We are freshman students at "Isfahan University of Technology"

iut.png

This is a school project and our group members are :S

Support

For support, [email protected].

Feedback

If you have any feedback, please reach out to us at [email protected]

Related

Here are some related projects :

RSA

License

IUT