ZNote Logo
ZNote
Off-Log
2026-05-11

Hashcat vs John the Ripper : La Battle Finale

Le match du siècle entre le vieux sage John et le monstre de puissance Hashcat. Qui va broyer tes hashes le plus vite ? Spoiler : c'est compliqué, et on va t'expliquer pourquoi avec des commandes et beaucoup trop d'analogies.

Cracking
Hashcat
John the Ripper
Humour
GPU vs CPU
Password Cracking
Walkthrough

Bienvenue dans l'Arène

On ne va pas se mentir : t'as récupéré une base de données pleine de hashes et maintenant tu te sens comme un pirate de film des années 90. Sauf que là tu fixes ton terminal et tu sais plus trop quoi faire.

Et voilà le dilemme ultime : John the Ripper ou Hashcat ?

C'est un peu comme choisir entre une Toyota Supra préparée pour le dragster et un Land Rover qui grimpe sur l'Everest. Les deux sont excellents. Dans des situations complètement différentes. Et si tu prends le mauvais, tu vas souffrir.

On décortique ça - avec des vraies commandes pour une fois.


John the Ripper - "Le Daron du Game"

John c'est ton tonton qui répare tout avec un bout de ficelle et un couteau suisse. Il est là depuis 1996 - oui, certains d'entre vous n'étaient même pas nés(j'en fais partie), et lui il crackait déjà des mots de passe sur des machines qui pesaient 30 kilos.

Ses super-pouvoirs

Il mange de tout - littéralement.

John a une famille de scripts dont le seul but dans la vie est de transformer n'importe quel fichier en hash crackable. ZIP protégé ? PDF avec mot de passe ? Clé SSH chiffrée ? Backup de routeur ? Il a un script pour ça :

# Fichier ZIP protégé
zip2john fichier.zip > hash.txt

# Clé SSH avec passphrase
ssh2john id_rsa > hash.txt

# Fichier PDF
pdf2john document.pdf > hash.txt

# Shadow Linux
unshadow /etc/passwd /etc/shadow > hash.txt

Et ensuite tu lances John sur le hash extrait :

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

C'est la beauté du truc : un workflow unifié peu importe la source.

Il tourne sur tout.

Ton vieux PC portable de 2012 ? Ton Raspberry Pi ? Le serveur de ta boîte qui prend la poussière ? John s'en fout - il utilise le CPU. Pas besoin de carte graphique, pas besoin de drivers spéciaux. Tu l'installes, tu l'utilises.

# Voir les hashes déjà crackés
john --show hash.txt

# Reprendre une session interrompue
john --restore

# Lister les formats supportés (spoiler : y'en a beaucoup)
john --list=formats

Ses règles sont légendaires.

John peut mutater des mots de passe selon des règles pour générer des variantes. passwordP@ssw0rd, Password123!, PASSWORD, etc. C'est ce qu'on appelle les rule-based attacks :

# Utiliser les règles prédéfinies "best64"
john hash.txt --wordlist=rockyou.txt --rules=best64

# Utiliser toutes les règles disponibles
john hash.txt --wordlist=rockyou.txt --rules=all

Son point faible

Il n'est pas très pressé.

Sur un CPU moderne, John craque un hash MD5 à environ 10-50 millions de tests par seconde. C'est pas mal. Mais comparé à une carte graphique, c'est comme essayer de vider une piscine olympique avec une cuillère à café. C'est précis. C'est propre. Mais c'est long.

Pour les hashes lents comme bcrypt (le hash utilisé par la plupart des sites modernes), c'est tolérable. Pour du MD5 ou du NTLM ? Tu vas regretter de ne pas avoir une RTX.


Hashcat - "Le Gars Qui Fait Que Les Jambes à la Salle"

Hashcat c'est le gars qui ne va à la salle que pour soulever des camions. Son carburant ? Tes cartes graphiques. Plusieurs si possible. Et si t'as un cluster de RTX 4090, il va te faire sourire.

Ses super-pouvoirs

Vitesse pure - on parle pas du tout des mêmes chiffres.

Quelques benchmarks réels pour te donner une idée (RTX 4090) :

Hash typeJohn (CPU i7)Hashcat (RTX 4090)Ratio
MD5~50 MH/s~164 000 MH/s×3280
NTLM~30 MH/s~300 000 MH/s×10000
SHA-256~10 MH/s~22 000 MH/s×2200
bcrypt~10 000 H/s~200 000 H/s×20

Pour le bcrypt la différence est moins énorme - c'est fait exprès, c'est un hash volontairement lent. Pour le MD5 et NTLM en revanche, Hashcat c'est une moissonneuse-batteuse.

Les modes d'attaque.

Hashcat a plusieurs modes (-a) selon ce que tu veux faire :

# Mode 0 - Dictionnaire (wordlist classique)
hashcat -m 0 -a 0 hash.txt rockyou.txt

# Mode 1 - Combinaison (combine deux wordlists)
hashcat -m 0 -a 1 hash.txt wordlist1.txt wordlist2.txt

# Mode 3 - Brute-force (mask attack)
# ?l = lettre minuscule, ?u = majuscule, ?d = chiffre, ?s = symbole
hashcat -m 0 -a 3 hash.txt ?u?l?l?l?l?d?d

# Mode 6 - Wordlist + mask (wordlist suivi d'un pattern)
hashcat -m 0 -a 6 hash.txt rockyou.txt ?d?d?d

Identifier le type de hash.

Avant de lancer Hashcat, tu dois savoir quel est le type de hash (-m). Si tu sais pas, hashid ou hash-identifier sont tes amis :

hashid '$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy'
# Résultat : bcrypt → -m 3200 dans Hashcat

Les types les plus courants :

Hash-mExemple
MD505f4dcc3b5aa765d61d8327deb882cf99
SHA-25614005e884898da2...
NTLM10008846f7eaee8fb117ad06bdd830b7586c
bcrypt3200$2y$10$...
SHA-512crypt (/etc/shadow)1800$6$...

Les règles marchent aussi.

Hashcat a son propre système de règles, compatible avec celles de John :

# Règles Hashcat incluses
hashcat -m 1000 -a 0 hash.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule

# OneRuleToRuleThemAll (règle communautaire très efficace)
hashcat -m 1000 -a 0 hash.txt rockyou.txt -r OneRuleToRuleThemAll.rule

Son point faible

C'est une diva.

Il lui faut les bons drivers. La bonne version d'OpenCL ou de CUDA. Si ton driver graphique a 3 jours de retard, il va te faire une crise. Et si t'as pas de GPU dédié - genre t'es sur un laptop avec un Intel HD Graphics - il va tourner sur CPU en te regardant de travers.

# Vérifier que Hashcat reconnaît bien ton GPU
hashcat -I

# Si ça retourne rien de bon, c'est l'heure de mettre à jour tes drivers

Moins polyvalent sur les formats exotiques.

Pour cracker un fichier ZIP ou une clé SSH, Hashcat a besoin que tu lui donnes un hash dans un format précis. Et extraire ce hash ? C'est le boulot de John. Les deux outils sont donc complémentaires, pas concurrents.


Le Match - Tableau Récap

CatégorieJohn the RipperHashcatVainqueur
Vitesse brute (MD5)~50 MH/s~164 000 MH/sHashcat (×3000)
Vitesse brute (bcrypt)~10 000 H/s~200 000 H/sHashcat (×20)
Formats supportésZIP, PDF, SSH, shadow, etc.Hashes propres principalementJohn
InstallationDéjà sur Kali, zéro configDrivers GPU requisJohn
Règles / mutationsExcellentExcellentÉgalité
Bruit de ton PCCalme platDécollage d'un Boeing 747John (tes oreilles)
Laptop sans GPU dédiéParfaitSouffreJohn
PC fixe gamerSous-exploitéDans son élémentHashcat

Cas d'Usage Concrets

"J'ai récupéré un /etc/shadow"

# Étape 1 - Extraire les hashes combinés
unshadow /etc/passwd /etc/shadow > hashes_shadow.txt

# Étape 2 - Identifier le type
# Les hashes Linux modernes commencent par $6$ (SHA-512) ou $y$ (yescrypt)
# $6$ → -m 1800 dans Hashcat

# Étape 3 - Lancer Hashcat
hashcat -m 1800 -a 0 hashes_shadow.txt rockyou.txt -r best64.rule

# Si t'as pas de GPU, John fait ça très bien aussi
john hashes_shadow.txt --wordlist=rockyou.txt --rules=best64

"J'ai un fichier ZIP avec mot de passe"

# John extrait le hash - Hashcat craque
zip2john archive.zip > hash_zip.txt
hashcat -m 17200 -a 0 hash_zip.txt rockyou.txt

# Ou directement avec John si t'as pas de GPU
john hash_zip.txt --wordlist=rockyou.txt

"J'ai des hashes NTLM (dump AD)"

# NTLM c'est le format Windows Active Directory
# Hashcat est LARGEMENT préférable ici (×10000 plus rapide)
hashcat -m 1000 -a 0 ntlm_hashes.txt rockyou.txt -r OneRuleToRuleThemAll.rule

# En mask attack si la wordlist donne rien (passwords type "Printemps2024!")
hashcat -m 1000 -a 3 ntlm_hashes.txt ?u?l?l?l?l?l?l?d?d?d?d?s

"J'ai une clé SSH chiffrée"

# John extrait le hash
ssh2john id_rsa > hash_ssh.txt

# John ou Hashcat pour cracker
john hash_ssh.txt --wordlist=rockyou.txt
# ou
hashcat -m 22921 -a 0 hash_ssh.txt rockyou.txt   # SSH RSA

Le Combo de Pro (Le Workflow qui Doit Devenir un Réflexe)

C'est là où les deux outils s'associent comme Batman et Robin :

# === ÉTAPE 1 - JOHN extrait le hash (peu importe le format) ===
zip2john fichier.zip > hash.txt
# ou ssh2john, pdf2john, office2john, etc.

# === ÉTAPE 2 - Identifier le mode Hashcat ===
hashid hash.txt
# Note le numéro de mode (-m XXXX)

# === ÉTAPE 3 - HASHCAT craque à la vitesse de la lumière ===
hashcat -m XXXX -a 0 hash.txt rockyou.txt -r best64.rule --status

# === ÉTAPE 4 - Si ça trouve rien, essaie le mask attack ===
hashcat -m XXXX -a 3 hash.txt ?u?l?l?l?l?d?d?d?s

# === ÉTAPE 5 - Récupérer les résultats ===
hashcat -m XXXX hash.txt --show

[!TIP] Lance toujours --status pour voir la progression en temps réel. Et --status-timer 10 pour une mise à jour toutes les 10 secondes. Sinon tu regardes un écran noir en espérant que quelque chose se passe.


Le Verdict de ZCook

T'as un laptop sans GPU dédié ? John. Directement. Pas de débat, pas de douleur.

T'as un PC fixe de gamer qui prend la poussière ? Lance Hashcat, fais chauffer la pièce (ça économise le chauffage en hiver) et regarde les hashes tomber comme des mouches.

La vraie réponse : utilise les deux. John pour extraire, Hashcat pour craquer. C'est pas une rivalité, c'est un duo. Comme le café et le sucre. Comme les CTF et la nuit blanche.

Et si t'as encore des hashes non crackés après tout ça - c'est peut-être que le mot de passe était vraiment bien choisi. Ou que t'as oublié de lancer --rules. C'est souvent ça.


Rédigé avec amour (et beaucoup de ventilos qui tournent) par ZCook