miércoles, 2 de enero de 2013

Resolviendo la encriptacion Hexadecimal de MATE

Hexadecimal suele ser de las primeras cosas que uno aprende cuando se mete en la informatica, uno aprende binario, octal, hexadecimal ... etc ... con hexadecimal es una buena tecnica de encriptar mensajes y nadie lo sabra amenos de que conozca el valor de las letras en Hexa.

El Siguiente Problema (sencillo) lo propuso MATE :

41 6e 64 20 74 68 65 72 65 27 73 20 6e 6f 20 6f 6e 65 20 65 6c 73 65 0d 0a 54 68 61 74 20 6b 6e 6f 77 73 20 6d 65 0d 0a 4c 69 6b 65 20 79 6f 75 20 64 6f 0d 0a 57 68 61 74 20 49 27 76 65 20 64 6f 6e 65 0d 0a 59 6f 75 27 76 65 20 64 6f 6e 65 20 74 6f 6f 0d 0a 54 68 65 20 77 61 6c 6c 73 20 49 0d 0a 48 69 64 65 20 62 65 68 69 6e 64 0d 0a 59 6f 75 20 77 61 6c 6b 20 74 68 72 6f 75 67 68 0d 0a 59 6f 75 20 6a 75 73 74 20 77 61 6c 6b 20 74 68 72 6f 75 67 68

que podra ser ... Con el siguiente codigo en Python decodifique lo que MATE escribio :


lits_up = 
['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t'
,'u','v','w','x','y','z']
lits_lo = 
['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t'
,'u','v','w','x','y','z']

def convert(lit):
    num =0
    if lit=='1': num = 1
    elif lit=='2' : num = 2
    elif lit=='3' : num = 3
    elif lit=='4' : num = 4
    elif lit=='5' : num = 5
    elif lit=='6' : num = 6
    elif lit=='7' : num = 7
    elif lit=='8' : num = 8
    elif lit=='9' : num = 9
    elif lit=='a' : num = 10
    elif lit=='b' : num = 11
    elif lit=='c' : num = 12
    elif lit=='d' : num = 13
    elif lit=='e' : num = 14
    elif lit=='f' : num = 15
    return num

def transform(num):
    lit = ""
    if num >= 65 and num <= 90:
        start = 65
        for up in lits_up:
            if num == start:
                lit = up.upper()
            start = start + 1
    elif num >=97 and num <=122:
        start = 97
        for lo in lits_lo:
            if num==start:
                lit = lo
                break
            start = start + 1
    else : lit = " "

    return lit

#lower 97 - 122
#upper 65 -  90

alldata = "41 6e 64 20 74 68 65 72 65 27 73 20 6e 6f 20 6f 6e 65 20 65 6c 73 65 
0d 0a 54 68 61 74 20 6b 6e 6f 77 73 20 6d 65 0d 0a 4c 69 6b 65 20 79 6f 75 20 64 
6f 0d 0a 57 68 61 74 20 49 27 76 65 20 64 6f 6e 65 0d 0a 59 6f 75 27 76 65 20 64 
6f 6e 65 20 74 6f 6f 0d 0a 54 68 65 20 77 61 6c 6c 73 20 49 0d 0a 48 69 64 65 20 
62 65 68 69 6e 64 0d 0a 59 6f 75 20 77 61 6c 6b 20 74 68 72 6f 75 67 68 0d 0a 59 
6f 75 20 6a 75 73 74 20 77 61 6c 6b 20 74 68 72 6f 75 67 68"

data = alldata.split(" ")
res = ""
for d in data:
    ret = (convert(d[0])*16)+convert(d[1])
    res += transform(ret)

print res

Y he aqui el mensaje que el queria darnos :

And there s no one else  That knows me  Like you do  What I ve done  You ve done too  The walls I  Hide behind  You walk through  You just walk through


NeoPathIC
Agustin Ramos Escalante

No hay comentarios:

Publicar un comentario