Ajoute code et documents du TP générateur de mots de passe

This commit is contained in:
Alexis Fourmaux 2025-09-24 18:05:41 +02:00
parent fc5c154ac7
commit 9cdc849095
7 changed files with 7930 additions and 1 deletions

View file

@ -1,3 +1,5 @@
from pathlib import Path
WORDS = {
"11111": "abacus",
"11112": "abdomen",
@ -7781,4 +7783,12 @@ def get_word_list():
return list(WORDS.values())
def get_word_dict():
return WORDS
return WORDS
def get_words_from_file():
file_path = Path("eff_words_long_list.txt")
with file_path.open('r') as file:
lines = file.readlines()
words = {line.split("\t")[0].strip():line.split("\t")[1].strip() for line in lines}
return words

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,41 @@
import mdp
def afficher_menu():
print("================================================")
print("CIEL - Générateur de mots de passe")
print("================================================")
print("Quel type de mot de passe souhaitez-vous créer ?")
print("1 - Mot de passe avec configuration par défaut")
print("2 - Mot de passe avec configuration personnalisée")
print("3 - Phrase de passe avec configuration par défaut")
print("4 - Phrase de passe avec configuration personnalisée")
print("0 - Quitter")
def choix_generateur(choix):
match choix:
case 1:
print(mdp.generer_mdp_with_constraints())
case 2:
print(mdp.generer_mdp_personnalise())
case 3:
print(mdp.generer_passphrase_v1())
case 4:
print(mdp.generer_passphrase_personnalise())
case 0:
print("Vous quittez le programme")
case _ as action:
print(f"Erreur : l'option {action} n'existe pas")
if __name__ == "__main__":
choix = -1
while choix != 0:
afficher_menu()
choix = int(input("Saisissez votre choix : "))
choix_generateur(choix)
if choix != 0 :
input("Appuyez sur Entrée")

View file

@ -0,0 +1,69 @@
import secrets
import string
from eff_words import get_word_list, get_words_from_file
LETTRES = string.ascii_letters
CHIFFRES = string.digits
SPECIAL = string.punctuation
ALPHABET = LETTRES + CHIFFRES + SPECIAL
DICE_NB = 5
def generer_mdp(password_length = 14):
password = ""
for i in range(password_length):
password += secrets.choice(ALPHABET)
return password
def generer_mdp_with_constraints(password_length = 14, special = 1, digits = 1):
password = ""
contrainte_special_respectee = False
contrainte_digits_respectee = False
while not (contrainte_special_respectee and contrainte_digits_respectee):
password = generer_mdp(password_length=password_length)
contrainte_special_respectee = sum(char in SPECIAL for char in password) >= special
contrainte_digits_respectee = sum(char in CHIFFRES for char in password) >= digits
return password
def generer_mdp_personnalise():
password_length = int(input("Longueur du mot de passe: "))
return generer_mdp(password_length=password_length)
def generer_passphrase_v1(nb_words = 6):
words = get_word_list()
chosen_words = []
for _ in range(nb_words):
next_word = secrets.choice(words)
chosen_words.append(next_word)
return '-'.join(chosen_words)
def generer_passphrase_v2(nb_words = 6, add_digit=False, capitalize=True, sep='-'):
words = get_words_from_file()
chosen_words = []
for _ in range(nb_words):
dice = "".join(str(secrets.randbelow(6) + 1) for _ in range(DICE_NB))
next_word = words[dice]
if capitalize:
next_word = next_word.capitalize()
if add_digit:
next_word+=secrets.choice(CHIFFRES+SPECIAL)
chosen_words.append(next_word)
return sep.join(chosen_words)
def generer_passphrase_personnalise():
nb_words = int(input("Nombre de mots : "))
add_digit = input("Ajouter des chiffres ou caractères spéciaux ? (y/n) : ") in ["y","Y"]
capitalize = input("Ajouter une majuscule au début des mots ? (y/n) : ") in ["y","Y"]
sep = input("Séparateur de mots : ")
return generer_passphrase_v2(
nb_words=nb_words,
add_digit=add_digit,
capitalize=capitalize,
sep=sep
)

View file

@ -0,0 +1,33 @@
if __name__ == "__main__":
choix = None
while choix != 0:
print("================================================")
print("CIEL - Générateur de mots de passe")
print("================================================")
print("Quel type de mot de passe souhaitez-vous créer ?")
print("1 - Mot de passe avec configuration par défaut")
print("2 - Mot de passe avec configuration personnalisée")
print("3 - Phrase de passe avec configuration par défaut")
print("4 - Phrase de passe avec configuration personnalisée")
print("0 - Quitter\n")
choix = int(input("Saisissez votre choix : "))
print("\n")
match choix:
case 1:
print("Mot de passe par défaut")
case 2:
print("Mot de passe personnalisé")
case 3:
print("Phrase de passe par défaut")
case 4:
print("Phrase de passe personnalisée")
case 0:
print("Vous quittez le programme")
case _:
print(f"Erreur : l'option {choix} n'existe pas")
if choix != 0 :
input("\n\nAppuyez sur Entrée")