La wordlist la plus célèbre du monde de la cybersécurité, combinée à John the Ripper, pour comprendre comment (et pourquoi) on casse des hashs de mots de passe.

Casser des hashs de mots de passe avec John the Ripper

John the Ripper (souvent abrégé John) est l'outil de référence pour le cassage de mots de passe hors ligne : à partir d'un hash récupéré (fichier /etc/shadow, dump de base de données, hash extrait d'un fichier chiffré, CTF...), il tente de retrouver le mot de passe en clair, soit par dictionnaire, soit par brute-force, soit par règles de mutation.

Rappel important : John ne doit être utilisé que sur des hashs que vous êtes autorisé à tester — votre propre infra, un CTF, un pentest avec mandat écrit. Cracker le mot de passe de quelqu'un d'autre sans autorisation est illégal.

rockyou.txt, la wordlist historique

rockyou.txt est une liste de plus de 14 millions de mots de passe, issue de la fuite de données du site RockYou en 2009 (mots de passe stockés en clair, base entière exfiltrée). Malgré son âge, elle reste redoutablement efficace : les habitudes de création de mots de passe (dates, prénoms, motifs clavier, suffixes numériques) ont très peu changé en quinze ans.

Sur Kali Linux, elle est présente mais compressée :

ls -la /usr/share/wordlists/rockyou.txt.gz
gunzip /usr/share/wordlists/rockyou.txt.gz
Caractéristique Valeur
Nombre d'entrées~14,3 millions
Taille décompressée~133 Mo
OrigineFuite RockYou (2009)
TriPar fréquence d'usage réelle

Préparer un hash à cracker

Exemple avec un hash au format shadow (Linux) — on combine /etc/passwd et /etc/shadow pour que John identifie correctement l'algorithme de hash :

sudo unshadow /etc/passwd /etc/shadow > hash.txt

Pour un hash isolé (MD5, SHA1, NTLM...), un simple fichier texte contenant le hash suffit :

echo '5f4dcc3b5aa765d61d8327deb882cf99' > hash.txt

Lancer l'attaque par dictionnaire

john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

John détecte automatiquement le format du hash (MD5, SHA-256, bcrypt, NTLM, etc.). Pour forcer un format précis :

john --wordlist=/usr/share/wordlists/rockyou.txt --format=NT hash.txt

Afficher les mots de passe déjà cassés (session interrompue ou reprise) :

john --show hash.txt

Aller plus loin : les règles de mutation

Beaucoup de mots de passe sont des variantes d'un mot du dictionnaire (majuscule initiale, chiffre en suffixe, symbole final). John applique des règles qui génèrent ces variantes à la volée, sans avoir besoin d'une wordlist dix fois plus grosse :

john --wordlist=/usr/share/wordlists/rockyou.txt --rules hash.txt

Exemple de transformations générées par la règle Jumbo à partir de password : Password, password1, P@ssword, drowssap (inversé), PASSWORD...

Identifier le type de hash avant de cracker

Avant de lancer John, encore faut-il savoir quel algorithme a produit le hash récupéré. Un hash MD5 et un hash SHA-256 non salé font tous les deux 32 et 64 caractères hexadécimaux respectivement, mais la longueur et le format donnent déjà de gros indices :

Format Longueur Algorithme probable
5f4dcc3b5aa765d61d8327deb882cf9932 hexMD5
aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d40 hexSHA-1
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d864 hexSHA-256
$2y$10$...60 car.bcrypt (préfixe explicite $2y$, $2a$, $2b$)
$6$...variableSHA-512 crypt (shadow Linux)

Plutôt que de deviner à l'œil, des outils automatisent cette identification en analysant le format, la longueur et l'alphabet du hash :

# hashid — le plus répandu, souvent préinstallé sur Kali
hashid '5f4dcc3b5aa765d61d8327deb882cf99'

# name-that-hash — plus récent, plus précis, donne aussi un lien vers le module John/hashcat correspondant
nth --text '5f4dcc3b5aa765d61d8327deb882cf99'

Ces outils ne font que reconnaître un format — ils ne cassent rien. Mais ils évitent de perdre du temps à lancer John avec le mauvais --format, surtout sur des hashs salés ou peu courants (Django, WordPress, Joomla ont chacun leurs variantes).

Vérificateurs de hash en ligne : CrackStation et consorts

Avant de mobiliser sa propre puissance de calcul, il existe des bases de données en ligne qui pré-cassent des milliards de hashs courants (MD5, SHA-1, SHA-256 non salés) à partir de wordlists déjà passées dessus — dont rockyou et bien d'autres. Un simple lookup suffit souvent :

  • crackstation.net — la référence historique, base de plus de 15 milliards d'entrées (MD5, SHA1, SHA256, SHA512, NTLM...). Coller le hash, cliquer Crack Hashes, résultat en quelques secondes si le mot de passe est courant.
  • hashes.com — base collaborative, supporte beaucoup plus d'algorithmes (bcrypt inclus dans certains cas), avec un système de recherche par lot.
  • md5decrypt.net — spécialisé MD5/SHA1, utile en complément si CrackStation ne trouve rien.

Attention à la confidentialité : soumettre un hash à un site tiers revient à lui signaler que ce hash existe et à espérer qu'il ne le journalise pas. Ne jamais y coller un hash réel issu d'un système en production ou d'une donnée sensible — réserver ces services aux hashs de CTF, de démonstration, ou de tests sur ses propres mots de passe. Pour tout hash sensible, le cassage doit rester local, avec John ou hashcat.

Ces bases en ligne sont un bon premier réflexe car elles couvrent en un clic ce que rockyou.txt + règles couvriraient en quelques minutes en local — mais elles ne remplacent pas John dès que le mot de passe sort du lot des plus courants, ou que le hash est salé individuellement (auquel cas aucune base pré-calculée ne peut aider, et seul un cassage local ciblé fonctionne).

Et si rockyou ne suffit pas ?

Situation Approche
Mot de passe long et complexeDictionnaire seul insuffisant → combiner avec des règles, ou passer en brute-force incrémental (john --incremental hash.txt), très lent au-delà de 8-9 caractères
Contexte ciblé (entreprise, personne)Générer une wordlist sur mesure avec CeWL (scrape le site web de la cible) ou Crunch (motifs personnalisés)
Hash lent (bcrypt, Argon2)Accélérer avec le GPU via hashcat, bien plus rapide que John sur ce terrain

En résumé

  • John the Ripper + rockyou.txt = le combo le plus rapide pour tester si un hash correspond à un mot de passe "commun".
  • Identifier le type de hash (hashid, name-that-hash) avant de cracker évite de perdre du temps avec le mauvais format.
  • Les bases en ligne comme crackstation.net ou hashes.com donnent un résultat immédiat sur les hashs non salés déjà connus — mais jamais avec un hash sensible réel.
  • Les règles de mutation démultiplient l'efficacité d'une wordlist sans la faire grossir.
  • Au-delà de rockyou, pensez wordlists ciblées (CeWL, Crunch) ou passage à hashcat pour les hashs lents.
  • Toujours dans un cadre autorisé : labo perso, CTF, ou mandat de pentest écrit.
Étiquettes