Skip to content

Paul-Asto/Enigma_Machine_Simulator_Python_Textual

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simulator Enigma Machine con Textual

  • Este es un proyecto de simulador de maquina enigma desarrollado en Python usando la libreria de aplicaciones en terminal Textual

Funcionalidades

  • Encriptar y desencriptar texto siguiendo el modelo de enigma
  • Configuracion de la maquina enigma
  • Interface Textual de visualizacion y modificacion de la configuracion

📥 Clonar el repositorio

Para clonar el repositorio en tu máquina local, ejecuta el siguiente comando en tu terminal:

 git clone https://github.com/Paul-Asto/Simulator_Enigma_Machine_Python_Textual.git
 cd Game-Tetris-in-Python-Textual

🛠️ Crear y activar un entorno virtual

Es recomendable utilizar un entorno virtual para gestionar las dependencias del proyecto.

🔹 En Windows (CMD o PowerShell)

python -m venv venv
venv\Scripts\activate

🔹 En macOS y Linux

python3 -m venv venv
source venv/bin/activate

📦 Instalar dependencias

Una vez activado el entorno virtual, instala las dependencias del archivo requirements_dev.txt con:

pip install -r requirements_dev.txt

📜 Dependencias del proyecto

Este proyecto usa la siguiente librería:

textual
pytest
pyperclip

🚀 Ejecutar el proyecto

Para ejecutar el proyecto, simplemente corre:

python main.py

Ejemplo de uso de la clase enigma

  • Encriptacion
# Ejemplo de encriptacion simple
from src.core.enigma import Enigma

enigma = Enigma()

input_text = "EJEMPLO DE TEXTO ENCRIPTADO"
output_text: str = enigma.encryption_text(input_text)

print(output_text)    #Output: ZBMDWTP GP YJWLC NYLZPQLITT
  • Configuracion
#Configuracion opcional inicial del enigma
from src.core.enigma import Enigma
from src.core.config import ConfigEnigma, DictRequiredConfig, DictDinamicConfig

config = ConfigEnigma[DictRequiredConfig]({
    "rotors": [
        {"model": "III", "position": "C"},
        {"model": "IV"},
        {"model": "VII", "position": "I", "ring": "N"}
    ],
    "reflect": "III",
    "interchanger": [
        {"letter_a": "E", "letter_b": "L"},
        {"letter_a": "M", "letter_b": "X"},
        {"letter_a": "G", "letter_b": "I"}
    ]
})

# Configuracion al inicio de la creacion de la instancia
enigma = Enigma(config)

# Configuracion posterior
enigma.apply_required_config(config)

# Modificacion de la configuracion simple
enigma.apply_dinamic_config(ConfigEnigma[DictDinamicConfig]({
    "reflect": "IV"
}))

enigma.apply_dinamic_config(ConfigEnigma[DictDinamicConfig]({
    "interchanger": [{"letter_a": "C", "letter_b": "L"}]
}))

# Reset a la configuracion inicial
enigma.reset()

# Setea la configuracion actual como la configuracion inicial, al momento de resetear usara esta configuracion como inicio
enigma.save_current_config()

# Configurar posicion de rotores
enigma.config_position_rotors("ABC")

# Configurar anillos de rotores
enigma.config_rings_rotors("AAA")

#Configurar las conexiones de intercambio
enigma.apply_config_interchanger([
    {"letter_a": "M", "letter_b": "W"},
    {"letter_a": "R", "letter_b": "I"}
])
  • Informacion
# Informacion
enigma = Enigma()

print(enigma.position_rotors)        # example: AAA
print(enigma.models_rotors)          # example: ("I", "IV", "II")
print(enigma.config_interchanger)    # example: AC TY OK NF
print(enigma.model_reflect)          # example: III

print(enigma.current_config)        
''' EXAMPLE 
{
    "rotors": [
        {"model": "III", "position": "C"},
        {"model": "IV"},
        {"model": "VII", "ring": "N"}
    ],
    "reflect": "III",
    "interchanger": [
        {"letter_a": "E", "letter_b": "L"},
        {"letter_a": "M", "letter_b": "X"},
    ]
}'''

About

Simulador de maquina enigma realizado en python con la libreria Textual

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages