💾 Archived View for gemini.elbinario.net › tutorial-cifrado2.gmi captured on 2024-06-16 at 12:16:58. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2024-03-21)

-=-=-=-=-=-=-

Tutorial De CifradoII(Fuerza bruta)

Como comentamos en el artículo anterior, en este artículo vamos a ver como aplicar un programa de fuerza bruta para tratar de adivinar la contraseña cifrada con Caesar.

Vamos a intentar descifrar la contraseña RxJcn66025pJq6JPÑPÑghÑ por fuerza bruta con python, para ello primero vamos a explicar en que consisten los Ataques de fuerza bruta para romper contraseñas.

Ataques de fuerza fruta

Los ataques de fuerza bruta consisten en intentar adivinar un password cifrado mediante un proceso en bucle donde vamos generando todos los posibles passwords. Si recordamos en el anterior artículo dijimos que la llave era importante para saber cuantas posiciones había que desplazar nuestros caracteres para encontrar su correspondiente carácter que usaremos para cifrarlo, pues en el ataque de fuerza bruta para este cifrado lo que vamos a hacer es generar todos los passwords posibles pasando por todas las longitudes de llaves posibles.

Veamos un código simple que dado un mensaje cifrado y una serie de símbolos, nos va a generar todas las combinaciones posibles de cifrado, pasando por todas las longitudes de clave.

mensaje="RxJcn66025pJq6JPÑPÑghÑ"

SIMBOLOS='ABCDEFGHIJKLMÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz1234567890 !?.'

for llave in range(len(SIMBOLOS)):

traducion=''

for simbolo in mensaje:

if simbolo in SIMBOLOS:

simboloindex=SIMBOLOS.find(simbolo)

indextranslado=simboloindex-llave

if indextranslado < 0:

indextranslado=indextranslado+len(SIMBOLOS)

#print(indextranslado)

traducion=traducion + SIMBOLOS[indextranslado]

else:

traducion=traducion+ simbolo

print('clave #%s: %s' % (llave,traducion))

La salida del programa nos devolverá lo siguiente:

clave #0: RxJcn66025pJq6JPÑPÑghÑÑ

clave #1: QwIbm55914oIp5IOMOMfgMÑ

clave #2: PvHal448z3ñHo4HÑLÑLefLÑ

clave #3: OuGZk337y2nGñ3GMKMKdeKÑ

clave #4: ÑtFYj226x1mFn2FLJLJcdJÑ

clave #5: MsEXi115wzlEm1EKIKIbcIÑ

clave #6: LrDWhzz4vykDlzDJHJHabHÑ

clave #7: KqCVgyy3uxjCkyCIGIGZaGÑ

clave #8: JpBUfxx2twiBjxBHFHFYZFÑ

clave #9: IoATeww1svhAiwAGEGEXYEÑ

clave #10: Hñ.Sdvvzrug.hv.FDFDWXDÑ

clave #11: Gn?Rcuuyqtf?gu?ECECVWCÑ

clave #12: Fm!Qbttxpse!ft!DBDBUVBÑ

clave #13: El Password es CACATUAÑ

clave #14: Dk0OZrrvñqc0dr0B.B.ST.Ñ

clave #15: Cj9ÑYqqunpb9cq9A?A?RS?Ñ

clave #16: Bi8MXpptmoa8bp8.!.!QR!Ñ

clave #17: Ah7LWooslñZ7ao7? ? PQ Ñ

clave #18: .g6KVññrknY6Zñ6!0!0OP0Ñ

clave #19: ?f5JUnnqjmX5Yn5 9 9ÑO9Ñ

clave #20: !e4ITmmpilW4Xm40808MÑ8Ñ

Si nos fijamos en la clave #13 obtendremos nuestro password ;)

¿Cómo funciona el proceso?

En el artículo anterior vimos que la clave 13 que elegimos era el número de posiciones que debíamos mover los caracteres de nuestra contraseña para cifrarla, en el ejemplo de este artículo, puesto que no conocemos la longitud de la clave, lo que vamos a hacer es ir pasando por todas las claves posibles empezando por 0.

Si nos fijamos en la clave 1 QwIbm55914oIp5IOMOMfgMÑ nos daremos cuenta de que esta clave la hemos obtenido moviendo una posición cada carácter de la clave inicial 0, por eso la letra R corresponde a la letra Q en la clave 1, P en la clave 2 y así sucesivamente para todos los caracteres en todas las claves.

Lo que nuestro programa ha realizado es simplemente los cálculos del cifrado de caracteres en cada posición de la clave hasta que ha construido un texto legible en español «El Password es CACATUA»

Como podemos verlos cifrados por desplazamiento como Caesar,ROT13 no tienen ningún sentido y son totalmente inseguros, en el siguiente artículo daremos una nueva vuelta a los cifrados con los «cifrados de transposición».

Happy Cracking