Dans cette dernière étape, nous allons comparer l'attaque par masque que vous venez d'effectuer avec une attaque par dictionnaire traditionnelle afin de comprendre leurs forces respectives.
Une attaque par dictionnaire (-a 0) est très rapide si le mot de passe se trouve dans la liste de mots (wordlist). Nous disposons d'un petit fichier de dictionnaire nommé dict.txt qui contient le mot de passe de l'étape précédente.
Exécutons une attaque par dictionnaire contre pattern_hash.txt :
hashcat -a 0 -m 1000 pattern_hash.txt dict.txt
Comme labex se trouve dans dict.txt, Hashcat le trouve presque instantanément.
hashcat (v6.2.5) starting
OpenCL API (OpenCL 2.0 pocl 1.8 Linux, None+Asserts, RELOC, LLVM 11.1.0, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
=====================================================================================================================================
* Device #1: pthread-Intel(R) Xeon(R) Platinum 8575C, 6808/13680 MB (2048 MB allocatable), 4MCU
Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256
INFO: All hashes found in potfile! Use --show to display them.
Started: Sat Oct 11 16:05:20 2025
Stopped: Sat Oct 11 16:05:20 2025
Hashcat nous informe que le hachage a déjà été trouvé et stocké dans le fichier potfile. Pour voir le mot de passe déchiffré, nous pouvons utiliser l'option --show :
hashcat -a 0 -m 1000 pattern_hash.txt dict.txt --show
Sortie :
2bf7d33ec706798e0308f5df34bc7d2f:labex
Alors, quand une attaque par masque a-t-elle l'avantage ? Une attaque par dictionnaire ne réussira que si le mot de passe exact existe dans la liste de mots. Si le mot de passe avait été testx au lieu de cela, et que cela n'était pas dans notre dictionnaire, l'attaque aurait échoué.
Cependant, l'attaque par masque de l'Étape 4 (?l?l?l?l?l) réussirait toujours car elle génère et teste systématiquement tous les mots de passe qui correspondent au modèle, qu'ils soient dans un dictionnaire ou non. Elle testerait labex, testx, hello, et ainsi de suite.
Conclusion :
- Attaque par dictionnaire (
-a 0) : Idéale pour déchiffrer des mots de passe courants ou lorsque vous disposez d'une liste de mots ciblée et de haute qualité. Elle est rapide mais limitée par le contenu du dictionnaire.
- Attaque par masque (
-a 3) : Idéale lorsque vous connaissez la structure ou le modèle du mot de passe (par exemple, à partir d'une politique de mot de passe connue). Elle est bien plus complète qu'une attaque par dictionnaire et infiniment plus efficace qu'une attaque par force brute pure.