Outils pour utilisateurs

Outils du site


conversions_motdepasse_hexa

Ceci est une ancienne révision du document !


Conversion entre un mot de passe et sa représentation en chaîne hexadécimale

Objectif

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:

  • je choisis de mettre un mot de passe wep que je puisse mémoriser facilement.
  • mais dans la configuration de certains PC du réseau, on me demande ce même mot de passe sous forme exclusive de chaîne hexadécimale.

Par exemple (mais ce n'est pas mon vrai mot de passe, hein ! :-D )

  • mot de passe texte: machintruc789 (ce qui fait bien 13 caractères pour le wep)
  • traduction en chaîne hexa: “6D616368696E74727563373839”

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à:

Conversion mot de passe en texte -> chaîne hexa

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()
    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()”.

Conversion chaîne hexa -> mot de passe en texte

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:

  • ch doit être une chaîne dont le nombre de caractère est pair:
if (len(ch)%2)!=0:
    # => renvoie une erreur
  • ch ne doit avoir que des caractères autorisés dans la numérotation hexa, c'est à dire: “0123456789ABCDEFabcdef”
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

conversions_motdepasse_hexa.1205756813.txt.gz · Dernière modification: 2008/03/17 13:26 de tyrtamos

Outils de la page