Je vous poste ici avec joie mon premier exemple de script. L'idée part d'un constat simple:
Mon employeur impose des mdp avec minuscule/majuscule/chiffre, aucun mot du dictionnaire n'est toléré. Pour la sécurité c'est pas mal déjà...
Mais pour l'admin c'est un peu une catastrophe vu le nombre de compte qu'il doit réinitialiser tout les jours à cause de mots de passe oubliés...
J'ai donc eu l'idée d'un script qui va, à partir d'une phrase simple et de préférence facile à retenir, générer un mot de passe répondant au cahier des charges de l'employeur.
Voici le petit monstre:
► Afficher le texte
Code : Tout sélectionner
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.0
Author: Frederic DUTERTRE
Script Function: Générer un mdp sécurisé depuis une phrase simple.
Bug connus: La fonction ne compte pas les mots mais les séparateur... Entrainant des problèmes si on met un espace avant un signe de ponctuation
#ce ----------------------------------------------------------------------------
$rappel = InputBox ("Générateur de mot de passe - Frederic DUTERTRE - Licence GNUV2", "Veuillez entrer votre phrase de rappel svp :", "", "", 300, 200)
$longueurphrase = stringlen($rappel) ; mesure la longueur de la phrase
MsgBox(0, "DevBug", "Votre phrase mesure: "&$longueurphrase&" caractères, espaces inclus.")
$phrasenormalisee = stringregexpreplace($rappel, "[,?';.:/!§%*µ^¨$£¤&çà@1234567890]", "") ; On retire tout ce qui n'est pas une lettre
MsgBox(0, "DevBug", "Nous venons de la transformer en ceci:"&@crlf&$phrasenormalisee)
;ensuite on transforme tout en minuscule V
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[A]", "a")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[Z]", "Z")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[E]", "e")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[R]", "r")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[T]", "t")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[Y]", "y")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[U]", "u")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[I]", "i")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[O]", "o")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[P]", "p")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[Q]", "q")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[S]", "s")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[D]", "d")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[F]", "f")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[G]", "g")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[H]", "h")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[J]", "j")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[K]", "k")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[L]", "l")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[M]", "m")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[W]", "w")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[X]", "x")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[C]", "c")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[V]", "v")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[B]", "b")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, "[N]", "n")
$phrasenormalisee = stringregexpreplace($phrasenormalisee, '["]', "")
; Jusqu'à la dernière lettre ^
MsgBox(0, "DevBug", "Puis en ceci "&@crlf&$phrasenormalisee)
;On place chaque mot dans un array (l'array[0] contient le nombre d'espaces trouvés, on s'en sert pour savoir le nbre de boucle de traitement)
$array = StringSplit($phrasenormalisee, " ")
MsgBox(0, "DevBug", "Nombre de mots: "&$array[0])
$nbreboucle = $array[0]
$boucle = 1
$password = ""
While $boucle < $nbreboucle+1
$try = $array[$boucle]
$chiffre = StringLen($try)
$premierelettre = StringLeft($try, 1)
; V il faut des majuscules dans un mdp! Alors on en remet pour la premiere lettre de chaque mots...
$premierelettre = stringregexpreplace($premierelettre, "[a]", "A")
$premierelettre = stringregexpreplace($premierelettre, "[b]", "B")
$premierelettre = stringregexpreplace($premierelettre, "[c]", "C")
$premierelettre = stringregexpreplace($premierelettre, "[d]", "D")
$premierelettre = stringregexpreplace($premierelettre, "[e]", "E")
$premierelettre = stringregexpreplace($premierelettre, "[f]", "F")
$premierelettre = stringregexpreplace($premierelettre, "[g]", "G")
$premierelettre = stringregexpreplace($premierelettre, "[h]", "H")
$premierelettre = stringregexpreplace($premierelettre, "[i]", "I")
$premierelettre = stringregexpreplace($premierelettre, "[k]", "K")
$premierelettre = stringregexpreplace($premierelettre, "[l]", "L")
$premierelettre = stringregexpreplace($premierelettre, "[m]", "M")
$premierelettre = stringregexpreplace($premierelettre, "[n]", "N")
$premierelettre = stringregexpreplace($premierelettre, "[o]", "O")
$premierelettre = stringregexpreplace($premierelettre, "[p]", "P")
$premierelettre = stringregexpreplace($premierelettre, "[q]", "Q")
$premierelettre = stringregexpreplace($premierelettre, "[r]", "R")
$premierelettre = stringregexpreplace($premierelettre, "[s]", "S")
$premierelettre = stringregexpreplace($premierelettre, "[t]", "T")
$premierelettre = stringregexpreplace($premierelettre, "[u]", "U")
$premierelettre = stringregexpreplace($premierelettre, "[v]", "V")
$premierelettre = stringregexpreplace($premierelettre, "[w]", "W")
$premierelettre = stringregexpreplace($premierelettre, "[x]", "X")
$premierelettre = stringregexpreplace($premierelettre, "[y]", "Y")
$premierelettre = stringregexpreplace($premierelettre, "[z]", "Z")
; V On cherche pas, c'est forcément une minuscule
$dernierelettre = StringRight($try, 1)
; Suit l'ingrédient principal du mot de passe
$motmagique = $premierelettre&$chiffre&$dernierelettre
MsgBox(0, "DevBug", $motmagique)
$boucle = $boucle + 1
; Suit la recette du mot de passe
$password = $password&$motmagique
WEnd
MsgBox(0, "Générateur de mot de passe", "Vous devriez facilement retenir: "&$password&@crlf&@crlf&"basé sur vôtre phrase")
MsgBox(0, "Générateur de mot de passe", "Transformée ainsi:"&@crlf&@crlf&"PREMIERELETTREENMAJUSCULE - Nombre de lettre du mot - dernierelettreenminuscule")
Et bien évidemment, toute critique constructive visant à alléger le code ou simplifier l'utilisation est la bienvenue.
J'attend vos retours avec impatience, cordialement
Fred