Hashcat ou John the Ripper : quel cracker choisir ?
Comparaison pratique de hashcat et John the Ripper — forces GPU et CPU, détection automatique, modes -m, formats jumbo, dictionnaires et règles — avec des commandes d'exemple.
Une fois le hash identifié, la décision suivante consiste à choisir l'outil à lui opposer. Les deux crackers de mots de passe dominants sont hashcat et John the Ripper. Ils se recoupent largement, mais chacun a son domaine de prédilection, et savoir lequel dégainer fait gagner un temps précieux.
Ce qui distingue les deux outils
Hashcat privilégie le GPU. Il est conçu pour saturer une ou plusieurs cartes graphiques, et sur des hash rapides et non salés, ce débit est colossal. La contrepartie : hashcat est explicite, vous devez lui indiquer l'algorithme via un mode numérique -m. Il n'y a aucune détection automatique — vous fournissez le mode obtenu lors de l'identification.
John the Ripper privilégie le CPU et la simplicité. La version communautaire « jumbo » prend en charge un catalogue immense de formats, dont beaucoup que hashcat ne couvre pas, et elle détecte automatiquement le format du fichier dans la plupart des cas. John embarque aussi les utilitaires *2john (zip2john, pdf2john, etc.) qui extraient un hash cassable d'un fichier conteneur.
Une règle empirique raisonnable : optez pour hashcat quand vous disposez d'un GPU et d'un hash courant et rapide comme MD5 ou SHA-256 ; optez pour John quand vous êtes sur CPU, face à un format inhabituel, ou que vous voulez laisser la détection automatique réfléchir à votre place.
Commandes d'exemple
Une attaque par dictionnaire directe dans hashcat contre une empreinte MD5 (mode 0) :
hashcat -m 0 -a 0 hash.txt rockyou.txt
Pour NTLM, vous changez uniquement le mode en 1000 ; pour bcrypt, c'est 3200. Le numéro correspondant figure sur chaque page de type de hash.
L'équivalent dans John the Ripper, en le laissant détecter le format, est tout simplement :
john --wordlist=rockyou.txt hash.txt
Si vous voulez imposer le format explicitement — utile quand la détection hésite, par exemple entre MD5 brut et NTLM — nommez-le :
john --format=nt --wordlist=rockyou.txt hash.txt
Dictionnaires et règles
Les deux outils ne valent que ce que valent les candidats que vous leur fournissez. Un dictionnaire fournit les essais de base ; les règles les mutent — ajout de chiffres, substitution de lettres par des symboles, bascule de la casse — si bien qu'une seule entrée comme password se déploie en Password1, p@ssw0rd et des milliers de variantes. Ajoutez des règles avec -r best64.rule dans hashcat ou --rules dans John.
Les algorithmes lents et salés comme sha512crypt résistent à la force brute par conception ; contre eux, un dictionnaire intelligent piloté par des règles l'emporte à chaque fois sur la vitesse brute. Si la différence entre hash rapides et lents vous est encore floue, l'article suivant — pourquoi les hash rapides sont dangereux — explique précisément pourquoi le choix de l'algorithme domine tout le calcul.