Vous êtes sur la page 1sur 2

Belgacem Hajji

Application:liste+str+fichier+dictionnaire

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, sachant qu’un mot de passe est une chaine de
caractères qui ne comporte pas d’espaces.

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 scre < 40, la force du mot de passe est "Faible"
 Sinon si le scre < 60, la force du mot de passe est "Moyen"
 Sinon si le scre < 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 carcatères − nombre de lettres majuscules) * 2
 (Nombre total de carcatères − nombre de lettres minuscules) * 3
 Nombre de carcatè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 "Ip&IB_cnc2017", le score de calcule comme suit :
la somme des bonus=13*4+(13-3)*2+(13-5)*2+6*5
car : - le nombre total de caractères=13
- 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 =3*2+2*2


car : - la longueur de la plus longue séquence de lettres minuscules("cnc")=3
- la longueur de la plus longue séquence de lettres majuscules("IB")=2

Le score final = 118-10= 108 ; puisque 118 > 80 alors le mot de passe est considéré
comme "Très fort"
Question 1: Ecrire une fonction en python nombrepasswd() qui
permet de saisir le nombre de mots de passe à tester, le nombre de
mots de passe ne doit pas dépasser 10.
Question 2: Ecrire une fonction saisipassword(n) qui permet de
remplir dans un fichier « password.txt » n mots de passe saisi par
l’utilisateur et séparé par une virgule, sachant qu’un mot de
passe est une chaine de caractère qui ne comporte pas d’espaces.
Question 3: Ecrire une fonction NB_Min_Maj_Nalpha(ch) qui retourne
à partir d’une chaine en paramètre un tuple contenant le nombre de

1
Belgacem Hajji

lettres minuscules, majuscules et le nombre de caractères non


alphabétique.
Ex :t=NB_Min_Maj_Nalpha("Ip&IB_cnc2017")
t=(3,5,6)
on peut utiliser les méthodes du type str :
isupper() et islower() : retournent True si la chaîne ne contient
respectivement que des majuscules/minuscules :
"b".isupper() retourne False
"B".isupper() retourne True
Question 4: Ecrire une fonction Seqmax_miniscule(ch) qui retourne
à partir d’une chaine en paramètre la longueur de la plus longue
séquence de lettres minuscules.
Question 5: Ecrire une fonction Seqmax_majuscule(ch) qui retourne
à partir d’une chaine en paramètre la longueur de la plus longue
séquence de lettres majuscules.
Question 6: Ecrire une fonction Scorepassword(ch) qui retourne à
partir d’une chaine en paramètre son score selon le calcul ci
dessus.
Question 7: Ecrire une fonction Forcepassword(score) qui retourne
la force du mot de passe à partir de la valeur du score en
paramètre.
Question 8: Ecrire une fonction Forcelistepassword() qui à partir
du fichier « password.txt », retourne un dictionnaire ayant comme
clé le mot de passe et sa valeur un tuple comportant son score et
sa force.
ex : contenu du fichier : Ip&IB_cnc2017,mp1,P$1
aprés appel de la fonction on obtient :
{ "Ip&IB_cnc2017": (108 , "Très fort"), "mp1" :(22,"Faible") ,
"P$1" :(33, "Faible") }
Question 9: Ecrire une fonction passwordfort(d) qui permet de
créer un fichier texte « passwordfort.txt » contenant tous les
mots de passe forts, à partir du dictionnaire retourné par la
fonction précédente

Vous aimerez peut-être aussi