CODE={0:"a",1:"b",2:"c",3:"d",4:"e",5:"f",6:"g",7:"h",8:"i",9:"j",10:"k", # Création d'une table 11:"l",12:"m",13:"n",14:"o",15:"p",16:"q",17:"r",18:"s",19:"t",20:"u", # de caractères qui 21:"v",22:"w",23:"x",24:"y",25:"z",26:"0",27:"1",28:"2",29:"3",30:"4", # qui permet un cryptage 31:"5",32:"6",33:"7",34:"8",35:"9",36:"A",37:"B",38:"C",39:"D",40:"E", # plus simple qu'avec 41:"F",42:"G",43:"H",44:"I",45:"J",46:"K",47:"L",48:"M",49:"N",50:"O", # une table ASCII. 51:"P",52:"Q",53:"R",54:"S",55:"T",56:"U",57:"V",58:"W",59:"X",60:"Y", 61:"Z",62:"&",63:"é",64:"'",65:"(",66:"-",67:"è",68:"_",69:"ç",70:"à", 71:")",72:"=",73:"$",74:"*",75:"ù",76:"!",77:":",78:";",70:",",80:"?", 81:".",82:"/",83:"§",84:"%",85:"µ",86:"£"} def lvl_faible(clef,nblettres,NBLETTRES,site,mdp) : clef=clef.lower() mdpfin="" pair=[0,2,4,6,8] motdepasse="" for i in range(0,nblettres): # Remplacer j par i site=site.replace("j","i") tabmotclef=[] for i in range(0,NBLETTRES): # Enlever chiffrres clef=clef.replace("1","u") clef=clef.replace("2","d") clef=clef.replace("3","t") clef=clef.replace("4","q") clef=clef.replace("5","c") clef=clef.replace("6","s") clef=clef.replace("7","s") clef=clef.replace("8","h") clef=clef.replace("9","n") clef=clef.replace("0","z") clef=clef.replace("é","e") # Enlever caractères spéciaux clef=clef.replace("&","e") clef=clef.replace("è","e") clef=clef.replace("à","a") clef=clef.replace("@","a") clef=clef.replace("^","c") clef=clef.replace("¤","t") clef=clef.replace("$","d") clef=clef.replace("=","e") clef=clef.replace("+","p") clef=clef.replace("<","i") clef=clef.replace("!","e") clef=clef.replace(".","p") clef=clef.replace(":","d") clef=clef.replace(">","s") clef=clef.replace("[","c") clef=clef.replace("]","c") clef=clef.replace("#","h") clef=clef.replace("~","e") clef=clef.replace("/","a") clef=clef.replace("\\","s") clef=clef.replace("?","i") clef=clef.replace("£","l") clef=clef.replace("%","p") clef=clef.replace("µ","m") clef=clef.replace("*","f") clef=clef.replace(";","p") clef=clef.replace(",","v") clef=clef.replace("ù","u") clef=clef.replace("-","m") clef=clef.replace("(","p") clef=clef.replace("ç","c") clef=clef.replace(")","p") clef=clef.replace("{","r") clef=clef.replace("}","g") clef=clef.replace('"',"a") clef=clef.replace("°","a") clef=clef.replace("|","m") clef=clef.replace("²","c") clef=clef.replace("'","a") for i in range(0,NBLETTRES): if clef[i] not in tabmotclef and clef[i]!="j": # Évite répétition lettre tabmotclef.append(clef[i]) for i in range (0,26): caractere=chr(ord("a")+i) if(caractere) not in tabmotclef and caractere!="j": # Ajoute reste de l'alphabet tabmotclef.append(caractere) tab=[0]*5 for i in range (0,5): tab[i]=[0,0,0,0,0] for i in range(0,5): for j in range(0,5): tab[i][j]=tabmotclef[5*i+j] for i in range (0,len(site)): # La fonction qui permet de récupérer les coordonnées d'une lettre qui apparait dans le site for j in range (0,len(tab)): for k in range (0,len(tab[j])): if tab[j][k]==site[i]: motdepasse=motdepasse+CODE.get(j)+CODE.get(k+5) while len(motdepasse)==2*len(site) : return motdepasse def test_site(caractere,tabintersite,site,nblettres) : caractere=0 # Le caractère par défaut est le premier valeur=CODE.get(caractere) # On extrait le caractère de la table qui correspond à la valeur de caractere, ici "a" for i in range (0,nblettres) : ok=False caractere = 0 valeur=CODE.get(caractere) while not ok : if site[i]==valeur : # Comparaison de la première lettre du site et du caractère ayant pour valeur "caractere" ok=True tabintersite[i]=caractere # La première case du tableau prend la valeur de la première lettre du site else : caractere=caractere+1 if caractere>=len(CODE) : ok=True valeur = CODE.get(caractere) def test_clef(caractere,tabinterclef,clef,NBLETTRES) : caractere=0 # Le caractère par défaut est le premier valeur=CODE.get(caractere) # On extrait le caractère de la table qui correspond à la valeur de caractere, ici "a" for i in range (0,NBLETTRES) : ok=False caractere = 0 valeur=CODE.get(caractere) while not ok : if clef[i]==valeur : # Comparaison de la première lettre du site et du caractère ayant pour valeur "caractere" ok=True tabinterclef[i]=caractere # La première case du tableau prend la valeur de la première lettre du site else : caractere=caractere+1 if caractere>=len(CODE) : ok=True valeur = CODE.get(caractere) def calcul(nblettres,tabinterclef,tabintersite,suppr,tabinter) : for i in range (0,nblettres) : val=int(tabinterclef[i])+int(tabintersite[i]) if val>suppr : val=val-suppr tabinter[i]=val def transforme(tabinter,nblettres) : mdp="" for i in range (0,nblettres) : mdp+=str(CODE.get(tabinter[i])) return mdp[0:12]