def aff(tab, caracteres): aff = '' for i in range(0, len(tab)): aff = aff + caracteres[tab[i]] return aff # Ici le charset caracteres = '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', \ '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', \ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' brute = [0] parcours = 0 valide = False # On boucle tant qu'on n'a pas trouve le code while valide == False: esi = 0xdeadbeef for i in range(0, len(brute)): esi = (esi * 0x38271606) & 0xffffffff eax = (ord(caracteres[brute[i]]) * 0x5b86affe) & 0xffffffff esi = eax - esi if esi == -995000292: # = 0xC4B1801C valide = True break parcours = parcours + 1 # Gestion du brute-force if parcours == len(caracteres): k = len(brute) - 2 while k >= 0 and brute[k] == len(caracteres) - 1: k = k - 1 if k == -1: taille = len(brute) for l in range(0, taille): brute[l] = 0 brute.append(0) else: taille = len(brute) for l in range(k + 1, taille): brute[l] = 0 brute[k] = brute[k] + 1 parcours = 0 else: brute[len(brute) - 1] = brute[len(brute) - 1] + 1 print "Le code est : " + aff(brute, caracteres)