Je ne sais pas si c'est le cas général, mais je me suis déjà retrouvé dans la configuration d'un réseau wifi avec le problème suivant:
Par exemple (mais ce n'est pas mon vrai mot de passe, hein ! )
Vous voyez le principe: 'm' → 0x6D, 'a' → 0x61, etc…
Bon, il suffit d'avoir fait cela une seule fois à la main pour comprendre: je veux une fonction qui fait ça automatiquement!
La voilà:
def mdp2hex(ch): """mdp2hex(ch): Convertit en chaîne hexadécimale les mots de passe donnés en texte clair""" h="" for i in range(0,len(ch)): h+=str(hex(ord(ch[i])))[2:].upper().zfill(2) return h # exemple d'utilisation: print mdp2hex('machintruc789') # affiche: '6D616368696E74727563373839' print mdp2hex('') # affiche: ''
Si on vous demande de l'hexa avec A à F en minuscule, il suffit d'enlever le “.upper()”.
def hex2mdp(ch): """hex2mdp(ch): Convertit en texte clair les mots de passe donnés en chaîne hexadécimale""" h="" for i in range(0,len(ch),2): h+=chr(int(ch[i:i+2],16)) return h print hex2mdp('6D616368696E74727563373839') # affiche: 'machintruc789' print hex2mdp('') # affiche: ''
Il faudrait ajouter 2 vérifications de données:
if (len(ch)%2)!=0: # => renvoie une erreur
for car in ch: if not (car in "0123456789ABCDEFabcdef"): # => renvoie une erreur
Vous pouvez essayer tout cela sur ma calculatrice en ligne http://calculext.jpvweb.com