Google+ Seguidores

viernes, 11 de mayo de 2018

Fuerza Bruta para mensajes cifrado en Cifrado Cesar - Algoritmos en Python


Hola a todos, mi nombre es Luis y les doy la bienvenida a Mi Diario Python. En el día de hoy les mostrare un ejemplo sencillo de cómo hacer un algoritmo de fuerza bruta para mensajes cifrados con el cifrado cesar.

En el artículo anterior vimos un ejemplo sobre un algoritmo que cifraba y descifraba mensajes con el Cifrado Cesar. Puedes ver el artículo ingresando al siguiente enlace: http://www.pythondiario.com/2018/05/cifrado-cesar-algoritmos-en-python.html.

Como sabemos, para cifrar un mensaje, debemos elegir una key, la cual será como la combinación del cifrado. Al momento de cifrar podemos ingresar la key que deseamos con respecto a la longitud del mensaje. Para descifrar un mensaje debemos de saber la llave, lo que nos lleva a ir probando llave por llave. Para evitar esto, y ahorrar tiempo, escribiremos un algoritmo que pruebe descifrar un mensaje utilizando distintas llaves de forma automática.

¿Qué es fuerza bruta? Hace un tiempo atrás publique un artículo en donde explicaba con un ejemplo la fuerza bruta a cuentas de gmail. Puedes ver ese artículo ingresando al siguiente enlace: http://www.pythondiario.com/2017/11/ataque-de-fuerza-bruta-cuentas-de-gmail.html.

Perfecto, una vez que conozcamos el concepto de Cifrado Cesar y Fuerza Bruta, estamos listos para escribir un algoritmo que los combine a los dos.

Algoritmo: Fuerza Bruta – Cifrado Cesar.

Lo que hará el algoritmo, será tratar de descifrar un mensaje cifrado probando 21 llaves diferentes. Todo de manera automática, de manera que nos ahorre el tiempo de ir probando llave por llave.

Comencemos abriendo nuestro editor de texto preferido. En mi caso utilizare sublime text.

Empezaremos escribiendo la función “descifrar” la cual hará todo el procedimiento de descifrado.



La función recibe como argumento el mensaje cifrado. Declaramos una variable LETTERS la cual contendrá todas las letras del abecedario.
Luego escribimos un bucle for el cual no se detendrá hasta las 26 iteraciones. Como se puede observar, este será el número de key que se probara  para descifrar el mensaje. AL final se mostraran los distintos resultados.



Por último, escribimos la función la “main” la cual pedirá el mensaje cifrado al usuario para luego ser almacenado en la variable message. La función upper() convertirá todo al texto a mayúsculas, así evitaremos errores al trabajar con las cadenas de texto.

Listo, ya podemos ejecutar el script e ingresar el mensaje cifrado en mi caso, utilizare un ejemplo realizado en el artículo anterior:



Ese será el mensaje cifrado que utilizaremos en  el día de hoy. Observen que la key utilizada es 17.

Ahora sí podemos ejecutar el script de Fuerza bruta:



Como pueden observar, al ingresar el mensaje cifrado me aparecen las distintas combinaciones.

Si pueden observar, en la llave #17 se muestra “MI NOMBRE ES LUIS”. Este resultado es correcto. Así que el algoritmo cumplió su objetivo de vida.

Puedes descargar el algoritmo completo desde mi repositorio de github: https://github.com/LuisAlejandroSalcedo/Fuerza-Bruta-Cifrado-Cesar.

¿Qué te pareció? ¿Alguna duda? No olvides dejar un comentario.
Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.

No hay comentarios :
Write comentarios

Tu comentario es importante y nos motiva a seguir escribiendo...

Powered by Blogger .