Script python simple pour tester robustesse

AccueilInformatiqueScript python simple pour tester robustesse

Il faut seulement 0,29 secondes pour casser un mot de passe de 7 caractères sans majuscule ni symbole. Ajoutez deux caractères, et ce délai grimpe à environ 5 ans. Passez à 16 caractères bien choisis, et un attaquant mettrait théoriquement un milliard d’années à en venir à bout. Ces chiffres, issus des recherches sur la force brute, illustrent mieux que n’importe quel discours pourquoi la robustesse d’un mot de passe n’est pas une question de confort, mais de survie numérique. Je vous propose ici de construire un script Python élémentaire pour tester la robustesse d’un mot de passe, étape par étape, avec des explications concrètes sur chaque choix technique.

Ce que signifie vraiment un mot de passe robuste

Avant d’écrire une seule ligne de code, il faut poser des critères clairs. Un mot de passe est considéré comme robuste au sens basique s’il dépasse 8 caractères et contient au moins un chiffre et une lettre. Mais cette définition minimale ne suffit plus vraiment face aux outils modernes d’attaque par dictionnaire ou par force brute.

La définition élaborée exige au moins 10 caractères, une lettre majuscule, une lettre minuscule et un chiffre. Pour une sécurité optimale, je recommande personnellement de viser 12 à 14 caractères, voire plus, en combinant toutes ces familles de caractères avec des symboles spéciaux. Les mots de passe faibles, volés ou réutilisés restent d’ailleurs la majeure cause des fuites de données, tous secteurs confondus.

Voici les indicateurs que je vais intégrer dans notre vérificateur Python :

  • Longueur minimale de 10 caractères
  • Au moins une lettre majuscule
  • Au moins une lettre minuscule
  • Au moins un chiffre
  • Au moins un caractère spécial (ponctuation, symbole)
  Flasher le firmware du robot connecté : guide complet

Ces critères correspondent à ce que les professionnels de la sécurité appliquent en pratique. Il est aussi conseillé de renouveler ses mots de passe tous les 3 à 4 mois, et surtout de ne jamais réutiliser le même sésame sur plusieurs comptes.

Construire le script Python de vérification pas à pas

Le module central ici est re, le moteur d’expressions régulières de Python. C’est lui qui va inspecter chaque famille de caractères avec précision. La approche re.search() retourne un objet si la correspondance existe, ou None dans le cas contraire, ce qui se convertit naturellement en booléen. Si vous débutez avec Python et que vous cherchez à apprendre le langage Python pour automatiser des tâches, ce type d’exercice est un superbe point de départ.

Voici le code complet, structuré en quatre parties selon les bonnes pratiques pédagogiques :

import re

# --- Variables globales ---
MIN_LENGTH = 10

# --- Fonctions secondaires ---
def has_uppercase(s) :
    return bool(re.search(r'[A-Z]', s))

def has_lowercase(s) :
    return bool(re.search(r'[a-z]', s))

def has_digit(s) :
    return bool(re.search(r'\d', s))

def has_special(s) :
    return bool(re.search(r'[^a-zA-Z0-9]', s))

# --- Fonction principale ---
def check_password(s) :
    """
    Retourne True si s est un mot de passe fort.
    >>> check_password("abc")
    False
    >>> check_password("Abcdefgh1 !")
    True
    """
    longenough = len(s) >= MINLENGTH
    return longenough and hasuppercase(s) and has_lowercase(s) \
           and hasdigit(s) and hasspecial(s)

# --- Appel protégé ---
if name == "main" :
    attempts = 0
    while attempts  3 :
        pwd = input("Entrez un mot de passe : ")
        if check_password(pwd) :
            print("Mot de passe robuste.")
            break
        else :
            print("Mot de passe trop faible.")
            attempts += 1
    if attempts == 3 :
        print("Nombre maximum d'essais atteint.")

L’architecture par booléen par condition est délibérée. Chaque fonction secondaire retourne un True ou False indépendant. La fonction check_password() applique ensuite l’opérateur and sur l’ensemble. Ajouter un nouveau critère demande juste d’écrire une fonction supplémentaire et d’en inclure le résultat dans le return final. Le script limite aussi à 3 essais avant de quitter, ce qui simule un comportement réaliste de verrouillage.

  Les meilleurs templates Notion gratuits en français à télécharger pour votre organisation

Pour valider le tout, on lance les doctests depuis le terminal :

python -m doctest ex05_password.py -v

Tous les doctests doivent passer sans erreur. C’est un réflexe de développeur propre que j’applique systématiquement, même sur de petits scripts utilitaires.

Longueur du mot de passe Temps estimé pour le craquer
7 caractères, sans complexité 0,29 secondes
9 caractères ~5 ans
16 caractères complexes ~1 milliard d’années

Script python simple pour tester robustesse

Aller plus loin : outils, bonnes pratiques et mots de passe en conditions réelles

Ce script teste la syntaxe d’un mot de passe, mais pas son historique. Des services comme haveibeenpwned.com croisent votre saisie avec des bases de données de fuites réelles pour vérifier si un mot de passe a déjà été exposé. Les données saisies n’y quittent jamais le navigateur, ce qui garantit la confidentialité de la démarche.

Côté bibliothèques Python, on peut enrichir ce type de script avec hashlib pour comparer un condensé MD5 ou SHA-1 contre une liste noire locale, ou ajouter une interface graphique via pygtk pour les utilisateurs moins à l’aise avec la ligne de commande. Ce sont des extensions classiques pour transformer un exercice pédagogique en outil opérationnel.

Pour la gestion quotidienne des mots de passe, un gestionnaire dédié change réellement la donne. Bitwarden, classé numéro 1 pour les entreprises sur la plateforme G2, utilise notamment l’outil zxcvbn pour calculer la robustesse de manière fiable. Si vous cherchez à sécuriser efficacement vos mots de passe avec un gestionnaire open source, c’est une lecture complémentaire qui vaut le détour.

Éviter les schémas reconnaissables reste le conseil le plus sous-estimé. Un mot de passe complexe en apparence, mais qui suit un pattern connu (“P@ssw0rd2024”), sera détecté très rapidement par une attaque par dictionnaire enrichie. Des combinaisons véritablement aléatoires, générées par un outil fiable, restent la meilleure protection que je connaisse.

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici