Les données sont un atout vital dans le monde numérique d’aujourd’hui. Plus de huit millions de personnes sont victimes de pirates informatiques chaque année et plus de 2200 cyberattaques ont lieu chaque jour. Avec un taux de cybercriminalité aussi alarmant, il devient prioritaire d’utiliser les meilleures pratiques pour se protéger des pirates informatiques. L’un des aspects les plus importants de tout compte est son mot de passe.


Si un pirate compromet votre mot de passe, il peut accéder à vos informations personnelles, et même à votre compte bancaire, en quelques minutes seulement. Bien que cela puisse sembler effrayant, vous pouvez apprendre à sécuriser vos mots de passe en utilisant les meilleures pratiques et en créant votre propre programme Python pour vérifier leur force.

Différentes règles pour définir des mots de passe forts

Voici quelques règles relatives aux mots de passe forts que vous pourriez envisager de mettre en place :

  1. Le mot de passe doit comporter au moins 12 caractères. Plus le mot de passe est long, moins il y a de chances qu’une attaque par force brute le compromette.
  2. Le mot de passe doit contenir une combinaison de lettres minuscules, de lettres majuscules, de chiffres et de caractères spéciaux.
  3. Évitez de répéter des caractères dans le mot de passe.
  4. Il ne doit pas contenir de détails personnels tels que des noms, des numéros de téléphone ou tout autre élément que quelqu’un pourrait facilement deviner.
  5. Il ne doit pas s’agir d’un mot du dictionnaire courant, bien que vous puissiez utiliser des mots dans des phrases de mot de passe plus longues.
  6. Le mot de passe ne doit pas être le même pour plusieurs comptes. Vous pouvez configurer un gestionnaire de mots de passe pour qu’il remplisse automatiquement différents mots de passe pour divers sites sans avoir à se souvenir de chacun d’entre eux.

Il existe différentes façons de créer un mot de passe inviolable dont vous pouvez vous souvenir. Certaines d’entre elles consistent à utiliser des comptines, des citations de films, du jargon industriel, etc.

Comment vérifier la force de votre mot de passe en utilisant Python

Vous pouvez construire un programme pour tester la force d’un mot de passe en vérifiant les caractéristiques ci-dessus. Pour cette construction, vous aurez besoin de deux modules : chaîne de caractères et collections.

Vous pouvez également utiliser l’option getpass pour cacher un mot de passe lorsque l’utilisateur le saisit. Cela permet de protéger votre mot de passe lorsque vous devez le taper en public. Pour installer getpass dans votre environnement local, ouvrez un terminal et tapez :

 pip install getpass4 

Vous pouvez utiliser la classe String pour vérifier si un caractère est une lettre, un chiffre ou un symbole. Vous pouvez utiliser des collections pour vérifier si le mot de passe contient des caractères qui se répètent.

Utilisez le mot-clé def pour définir une fonction nommée check_password_strength() et passez-lui en paramètre le mot de passe que vous obtiendrez.

Initialise six variables : nombre_alpha_inférieur, nombre_alpha_supérieur, nombre_count, nombre de caractères spéciaux, longueur, commun à zéro. Ils vérifieront la présence d’un alphabet minuscule, d’un alphabet majuscule, de chiffres, de caractères spéciaux, de la longueur, de la répétition de caractères dans un mot de passe.

Passez le mot de passe que vous obtenez de l’utilisateur à l’utilisateur. liste() pour le convertir en une liste de caractères. En utilisant la boucle for, itérer sur chaque caractère de la liste. Utilisez l’instruction if-else pour vérifier si le caractère est un alphabet minuscule, un alphabet majuscule, un chiffre ou un caractère spécial et mettez à jour le compte respectivement.

Vous pouvez supposer que tout autre caractère que l’alphabet ou le nombre est un caractère spécial. Pour plus de restrictions, vous pouvez stocker les caractères spéciaux sous forme de chaîne de caractères et vérifier si le caractère du mot de passe est présent dans celle-ci. En outre, certains sites Web vous permettent d’utiliser des espaces dans un mot de passe. Vous pouvez définir une variable différente et l’incrémenter ou la prendre en compte dans le décompte des caractères spéciaux lui-même.

 import string
import collections

def check_password_strength(password):
    lower_alpha_count = upper_alpha_count = number_count = special_char_count = length = common = 0

    for char in list(password):
        if char in string.ascii_lowercase:
            lower_alpha_count += 1
        elif char in string.ascii_uppercase:
            upper_alpha_count += 1
        elif char in string.digits:
            number_count += 1
        else:
            special_char_count += 1

Vous aurez besoin d’une liste de mots de passe ou d’une base de données pour vérifier si le mot de passe de l’utilisateur est commun. Vous pouvez télécharger une liste d’un million de mots de passe les plus populaires depuis le dépôt GitHub Common-Credential de SecLists.

Enregistrez le fichier texte sous liste_de_mots_de_passe_communs.txt. Utilisez l’instruction with pour effectuer la gestion des exceptions et ouvrir le fichier de mots de passe en mode lecture. Utilisez l’instruction read() pour récupérer le contenu présent dans le fichier et le stocker dans une variable nommée content.

Si le mot de passe saisi par l’utilisateur n’est pas présent dans la liste des mots de passe communs, incrémenter la valeur de la variable common de un.

     with open("common_password_list.txt", 'r') as file:
        content = file.read()

        if password not in content:
            common += 1

Pour vérifier la longueur du mot de passe, il suffit de le passer à la fonction len() et vérifiez si elle est supérieure ou égale à douze. Si c’est le cas, incrémentez la valeur de la variable longueur.

     if len(password) >= 12:
       length += 1

Pour vérifier la répétition de caractères dans un mot de passe, utilisez la sous-classe Counter de Collections. Counter est une collection non ordonnée de paires clé-valeur où la clé est l’élément lui-même et la valeur est le nombre d’éléments.

Utilisez la méthode de compréhension de liste pour créer une liste de caractères répétés à partir du dictionnaire que vous obtenez en utilisant Collections. Faites un itération sur le dictionnaire et vérifiez si le nombre de caractères est supérieur à un. Si le nombre est supérieur, ajoutez-le à une liste et stockez-la dans repeated.

     countOfWords = collections.Counter(password)
    repeated = [i for i in countOfWords if countOfWords[i] > 1]

Maintenant que vous avez les valeurs des caractéristiques individuelles, initialisez une variable nommée force à zéro. Comme son nom l’indique, vous utiliserez cette variable pour vérifier la force du mot de passe. Le système de notation est sur sept, un point pour chaque inclusion d’un caractère et d’une caractéristique d’un mot de passe fort.

Vérifiez si le nombre d’alphabet minuscule, alphabet majuscule, chiffres, caractères spéciaux est supérieur ou égal à un et incrémentez la force d’un point pour chaque présence. De même, vérifiez si la longueur et la variable commune sont égales à un et si la longueur des caractères répétés est égale à zéro. Si c’est le cas, incrémenter la valeur de la variable force.

     strength = 0

    if lower_alpha_count >= 1:
        strength += 1

    if upper_alpha_count >= 1:
        strength += 1

    if number_count >= 1:
        strength += 1

    if special_char_count >= 1:
        strength += 1

    if length == 1:
        strength += 1

    if common == 1:
        strength += 1

    if len(repeated) == 0:
        strength += 1

Utilisez la chaîne multiligne (trois guillemets) pour afficher plusieurs lignes de texte dans une seule instruction d’impression. Utilisez les chaînes littérales Sring Interpolation ou f-strings ou pour afficher le nombre de caractéristiques. Vous pouvez y parvenir en écrivant f au début de la chaîne de caractères dans l’instruction d’impression et placez les variables entre crochets. Vous utilisez l’interpolation de chaîne car le contenu de l’instruction d’impression est une chaîne, mais la valeur des variables est un entier.

     print(f"""Your password has:- 
    {lower_alpha_count} lowercase letters
    {upper_alpha_count} uppercase letters
    {number_count} digits
    {special_char_count} special characters
    {length} length
    {common} common
    {repeated} repeated
    "Password score: {strength}/7""")

Enfin, utilisez l’instruction input pour recevoir le mot de passe de l’utilisateur et le passer à l’instruction check_password_strength fonction. En fonction de la force du mot de passe, le programme affichera le score ainsi que le nombre de caractéristiques présentes dans le mot de passe.

 password = input("Enter the password: ")
check_password_strength(password)

Résultat du vérificateur de la force du mot de passe

En entrant un mot de passe fort basé sur les caractéristiques mentionnées, le programme Python affiche la force comme 7/7 :

Sortie du vérificateur de mot de passe lorsqu'un mot de passe fort est saisi.

Lors de la saisie d’un mot de passe faible et courant, le programme Python affiche une force de 1/7 :

Sortie du vérificateur de mot de passe lors de la saisie d'un mot de passe faible

Mots de passe et sécurité

Si vous pouvez définir le mot de passe le plus fort qui soit, il existe d’autres moyens pour un pirate de s’introduire dans votre système. 95 % des cyberattaques sont le résultat d’une erreur humaine. L’une des méthodes les plus courantes utilisées par les pirates est l’ingénierie sociale. Le pirate peut vous envoyer des liens contrefaits vers des sites de médias sociaux ou de commerce électronique qui semblent légitimes, mais qui compromettent votre mot de passe si vous les utilisez.

Pour vous protéger de ces techniques, veillez à n’ouvrir que des liens provenant d’une source fiable et à ne saisir ou stocker les informations importantes que de manière sécurisée.