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")