Evaluation des mots de passes – Bac théorique – Section informatique – 2015

Bac Info 06-01-26
30 0

Sujet (Algo et programmation - Bac 2015)

Un administrateur d'un site web veut assurer un maximum de sécurité pour les utilisateurs du site. Pour ceci il décide de réaliser une application qui évalue la force des mots de passe des différents utilisateurs du site, sachant qu'un mot de passe est une chaîne de caractères qui ne comporte pas d'espaces et de lettres accentuées.

La force d'un mot de passe varie, selon la valeur d'un score calculé, de "Très faible" jusqu'à "Très fort" :

- Si le score < 20, la force du mot de passe est "Très faible" - Sinon si le score < 40, la force du mot de passe est "Faible" - Sinon si le score < 60, la force du mot de passe est "Moyen" - Sinon si le score < 80, la force du mot de passe est "Fort" - Sinon la force du mot de passe est "Très fort" Le score se calcule en additionnant des bonus et en retranchant des pénalités. Les bonus attribués sont : - Nombre total de caractères * 4 - (Nombre total de caractères --nombre de lettres majuscules) * 2 - (Nombre total de caractères — nombre de lettres minuscules) * 3 - Nombre de caractères non alphabétiques * 5 Les pénalités imposées sont : - La longueur de la plus longue séquence de lettres minuscules * 2 - La longueur de la plus longue séquence de lettres majuscules * 2

Exemple

Pour le mot de passe "B@cSI_ juin2015", le score se calcule comme suit :

La somme des bonus = 14*4 (14-3)*2 + (14-5)*3 + 6*5 135

Car :

le nombre total de caractères = 14

le nombre de lettres majuscules = 3

le nombre de lettres minuscules = 5

le nombre de caractères non alphabétiques = 6

La somme des pénalités = 4*2 + 2*2 = 12

Car :

la longueur de la plus longue séquence de lettres minuscules ("juin") = 4

la longueur de la plus longue séquence de lettres majuscules ("SI") = 2

Le score final = 135 — 12 = 123 ; puisque 123 ? 80 alors le mot de passe est considéré comme "Très fort".

En disposant d'un fichier texte "Motspass.txt", situé sur la racine du disque C, dont chaque ligne  contient un mot de passe, on se propose de :

- Générer un fichier d'enregistrements "ForceMDP.dat" où chaque enregistrement comporte le mot de passe lui-même, son score et sa force.                                   i

- Générer un fichier texte "MDPfort.txt" par la liste les mots de passe ayant une force égale à "Très fort" suivis de la liste des mots de passe ayant une force égale à "Fort" à raison d'un mot de passe par ligne, tout en séparant les deux listes par une ligne vide.

N.B : L'élève n'est pas appelé à remplir le fichier "Motspass.txt".

Travail demandé

- Analyser le problème en le décomposant en modules.

- Analyser chacun des modules envisagés.

 

Solution Algorithmique

Dans cet algorithme, On va utiliser six fonctions et trois procédures :

- la fonction saisie()

- la fonction test_motpasse()

- la fonction saisie_motpasse()

- la fonction calcul_bonus()

- la fonction calcul_penalites()

- la fonction force_motpasse()

- la procédure remplir_fichier_motspass()

- la procédure remplir_fichier_forcemdp()

- la procédure remplir_fichier_mdpfort()

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction saisie

Le rôle de cette fonction est de permettre à l’utilisateur de saisir un entier n compris strictement entre deux bornes inf et sup.

1- La fonction saisie(inf, sup) demande à l’utilisateur d’entrer un entier n.

2- Elle vérifie que n appartient à l’intervalle ouvert ] inf , sup [ (c’est-à-dire inf < n < sup). 3- Tant que la valeur saisie n’est pas valide (n ≤ inf ou n ≥ sup), la fonction redemande la saisie. 4- Une fois une valeur correcte entrée, la fonction retourne n.

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction test_motpasse

La fonction test_motpasse vérifie qu’un mot de passe n’est pas vide et qu’il ne contient ni caractères accentués ni espace, puis retourne Vrai s’il est valide et Faux sinon.

1- Test de non-vacuité

Si la longueur du mot de passe est nulle (len(motpasse) == 0), la fonction retourne Faux.

2- Parcours du mot de passe caractère par caractère

La variable i permet de parcourir la chaîne.

La boucle tant que continue tant que : on n’a pas atteint la fin du mot de passe  et le caractère courant n’est ni accentué ni un espace.

3- Vérification finale

Si un caractère interdit est rencontré, la fonction retourne Faux.

Si tous les caractères sont autorisés, la fonction retourne Vrai.

Déclaration des objets

Objet Type / Nature
i entier

 

La fonction saisie_motpasse

Cette fonction permet de saisir un mot de passe valide en obligeant l’utilisateur à recommencer la saisie tant que le mot de passe ne respecte pas les règles de validité définies par la fonction test_motpasse.

1- Saisie du mot de passe

L’utilisateur saisit un mot de passe au clavier.

2- Vérification de la validité

La fonction appelle test_motpasse(motpasse) pour vérifier si le mot de passe est valide.

3- Répétition de la saisie

Tant que le mot de passe est invalide (test_motpasse retourne False), l’utilisateur est invité à saisir un nouveau mot de passe.

4- Retour du résultat

Une fois un mot de passe valide saisi, la fonction le retourne.

Déclaration des objets

Objet Type / Nature
motpasse chaîne

 

La fonction calcul_bonus

Cette fonction calcule le bonus de sécurité d’un mot de passe en attribuant des points selon sa longueur et la diversité des caractères qu’il contient (minuscules, majuscules et caractères non alphabétiques).

1- Initialisation des compteurs

nbr_minuscule : nombre de lettres minuscules

nbr_majuscule : nombre de lettres majuscules

nbr_non_alphabetique : nombre de caractères autres que des lettres

2- Parcours du mot de passe

Chaque caractère est analysé :

s’il est entre 'a' et 'z', il est compté comme minuscule ;

s’il est entre 'A' et 'Z', il est compté comme majuscule ;

sinon, il est compté comme caractère non alphabétique.

3- Calcul du bonus

Le bonus est calculé à partir de la longueur du mot de passe, la présence de majuscules et de minuscules et la présence de caractères non alphabétiques (chiffres, symboles).

4- Retour du résultat

La fonction retourne la valeur du bonus calculé.

Déclaration des objets

Objet Type / Nature
nbr_minuscule entier
nbr_majuscule entier
nbr_non_alphabetique entier
i entier
bonus entier

 

La fonction calcul_penalites

Cette fonction calcule les pénalités de sécurité d’un mot de passe en fonction de la présence de longues suites consécutives de lettres : en minuscules  et en majuscules.

Plus ces suites sont longues, plus le mot de passe est considéré comme faible, donc plus la pénalité est élevée.

1- Initialisation

sequences_minuscules et sequences_majuscules servent à compter la longueur de la suite courante.

max_sequences_minuscules et max_sequences_majuscules mémorisent la plus longue suite trouvée.

2- Parcours du mot de passe

Le mot de passe est parcouru caractère par caractère.

Si deux caractères consécutifs sont tous les deux :

des minuscules → on augmente la suite de minuscules ;

des majuscules → on augmente la suite de majuscules.

Sinon, on compare la suite courante avec le maximum et on réinitialise la suite.

3- Calcul des pénalités

La pénalité est proportionnelle à la longueur maximale des suites détectées.

Chaque caractère d’une suite contribue à une pénalité de 2 points.

4- Retour du résultat

La fonction retourne la valeur totale des pénalités.

Déclaration des objets

Objet Type / Nature
max_sequences_minuscules entier
max_sequences_majuscules entier
sequences_minuscules entier
sequences_majuscules entier
i entier
penalites entier

 

La fonction force_motpasse

Cette fonction détermine le niveau de sécurité (force) d’un mot de passe à partir de son score.

1- La fonction reçoit en paramètre un score numérique.

2- Elle compare ce score à plusieurs seuils.

3- Selon l’intervalle dans lequel se situe le score, elle retourne un texte décrivant la force du mot de passe.

 

La procédure remplir_fichier_motspass

Cette procédure permet de créer et de remplir le fichier texte Motspass.txt avec n mots de passe valides saisis par l’utilisateur.

1- Affichage d’un message

Indique à l’utilisateur que le fichier des mots de passe est en cours de remplissage.

2- Ouverture du fichier

Le fichier Motspass.txt est ouvert en mode écriture ("w"). S’il existe déjà, son contenu est écrasé.

3- Saisie des mots de passe

La procédure exécute une boucle for de 0 à n-1.

À chaque itération :

- un mot de passe valide est saisi grâce à la fonction saisie_motpasse() ;

- le mot de passe est écrit dans le fichier, suivi d’un saut de ligne.

4- Fermeture du fichier

Le fichier est fermé après l’écriture de tous les mots de passe.

Déclaration des objets

Objet Type / Nature
f fichier
motpasse chaîne

 

La procédure remplir_fichier_forcemdp

Cette procédure crée et remplit le fichier binaire ForceMDP.dat en y enregistrant, pour chaque mot de passe, le mot de passe lui-même, son score de sécurité et sa force.

1- Affichage d’un message

Indique que le fichier binaire ForceMDP.dat est en cours de création/remplissage.

2- Ouverture des fichiers

Motspass.txt est ouvert en lecture pour récupérer les mots de passe.

ForceMDP.dat est ouvert en écriture binaire ("wb") pour stocker les données.

3- Lecture des mots de passe

Tous les mots de passe sont lus dans une liste (motspasses), chaque élément correspondant à une ligne du fichier.

Traitement de chaque mot de passe

Suppression du caractère de fin de ligne \n.

4- Calcul du score

score = bonus − pénalités.

Détermination de la force du mot de passe à partir du score.

Stockage des informations dans un enregistrement (enregistrement_motpasse).

Enregistrement binaire

L'enregistrement est sauvegardé dans le fichier ForceMDP.dat à l’aide de pickle.dump.

5- Affichage

Pour chaque mot de passe, le mot de passe, son score et sa force sont affichés à l’écran.

6- Fermeture des fichiers

Les deux fichiers sont fermés correctement.

Déclaration des objets

Objet Type / Nature
f_passe fichier
f_fort fichier
motspasses chaîne
motpasse chaîne
score entier
enregistrement_motpasse enregistrement

 

La procédure remplir_fichier_mdpfort

Cette procédure lit le fichier binaire ForceMDP.dat et extrait les mots de passe ayant une force “Très fort” et “Fort”, puis les enregistre dans le fichier texte MDPforce.txt en respectant l’ordre et la présentation demandés.

1- Ouverture des fichiers

ForceMDP.dat est ouvert en lecture binaire pour accéder aux enregistrements.

MDPforce.txt est ouvert en écriture pour stocker le résultat.

2- Lecture du fichier binaire

Les enregistrements (dictionnaires) sont lus un par un à l’aide de pickle.load.

La lecture continue jusqu’à la fin du fichier (EOFError).

3- Sélection des mots de passe

Si la force est « Très fort », le mot de passe est ajouté à la liste correspondante.

Si la force est « Fort », le mot de passe est ajouté à sa liste.

4- Affichage

Les deux listes sont affichées à l’écran (pour vérification).

5- Écriture dans le fichier texte

Les mots de passe Très fort sont écrits en premier.

Une ligne vide sépare les deux listes.

Les mots de passe Fort sont écrits ensuite, un par ligne.

6- Fermeture des fichiers

Les fichiers sont fermés correctement.

Déclaration des objets

Objet Type / Nature
f_fort fichier
f_mdp fichier
liste_tresfort chaîne
liste_fort chaîne
enregistrement_motpasse enregistrement

 

Solution en Python

Exécution du programme

0 commentaire

laisser un commentaire

Veuillez noter s'il vous plaît*

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Passion de robotique

Atelier robotique

Construction des robots

Bras robotique

Maison intelligente

But de ce site web

La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.

Coordonnées

Zaouiet Kontech-Jemmel-Monastir-Tunisie

+216 92 886 231

medaliprof@gmail.com

Photos des articles

Site robotique réalisé par Mohamed Ali Haj Salah - Prof Info