martes, 29 de octubre de 2013

algunos códigos python útiles para CTFs

Cifrados por sustitución simple monoalfabético

El cifrado por sustitución es un método en el que unidades de texto plano son sustituidas con texto cifrado siguiendo un sistema regular. En el caso del sistema cifrado de sustitución simple, la unidad de texto plano es una letra. Es decir, un caracter del texto original es sustituido por otro del alfabeto de texto cifrado. Los ejemplos más caracteristicos de este sistema de cifrado son los cifrados César, ROT13 o Dvorak. El objetivo aquí es deducir de qué sistema se trata y la transposición de caráctes, es decir, qué caracteres se corresponden entre el texto plano y el alfabeto de cifrado. Una vez averiguado, podemos automatizar la traducción con la función maketrans del módulo string:


text = 'bpql bp rk bgbjmil ab zfcoxal zbpxo, rkl ab ilp jbqlalp jxp zlklzfalp ab zfcoxal mlo prpqfqrzflk pfjmib jlklxicxybqfzl'
trans = string.maketrans('xyzabcdefghijklmnopqrstuvw', 'abcdefghijklmnopqrstuvwxyz')
print text.translate(trans)


Cadenas escritas al revés

Si estamos vagos, o no queremos leer hacia el sentido contrario al habitual, podemos obtener el resultado utilizando el tercer argumento de las extended slices de python:

>>> 'sever la atircse anedac'[::-1]
'cadena escrita al reves'


Fuerza bruta

A veces nos es últil tener un array que se autorellene con combinaciones para solucionar alguna prueba que requiera de fuerza bruta (bruteforce o bruteforcing). Para ello dejo en mi github un código de demostración de cómo programar esto en python: bruteforceBytearray. Yo he programado un ejemplo con un bytearray, y he dejado una función para imprimir por pantalla cómo se va rellenando el array. Es un ejemplo y siempre se puede adaptar a las necesidades personales ;)

Enjoy!

Fuentes:

No hay comentarios:

Publicar un comentario