md5 est hash qu’on est censé ne pas remonter facilement !

Avec l’outil hashcat on va montrer que c’est malgré tout faisable mais non sans difficultés !

Répertoire de travail :

répertoire : ~/Works/hackmd5

installation de l’outil sous Debian

sudo apt update
sudo apt install hashcat

on va se générer en md5 le hash de « etudiant » notre mot de passe au lycée pour des raison purement pédagogique

bruno@elliott:~/Works/hackmd5$ echo -n "etudiant" > mdp.txt
bruno@elliott:~/Works/hackmd5$ cat mdp.txt 
etudiantbruno@elliott:~/Works/hackmd5$ 
bruno@elliott:~/Works/hackmd5$ md5sum mdp.txt 
a3c6c43c72c71ed874d16ce12f8cede1  mdp.txt
bruno@elliott:~/Works/hackmd5$ 
bruno@elliott:~/Works/hackmd5$ md5sum mdp.txt > hashmd5.txt
bruno@elliott:~/Works/hackmd5$ cat hashmd5.txt 
a3c6c43c72c71ed874d16ce12f8cede1  mdp.txt
bruno@elliott:~/Works/hackmd5$ ls
hashmd5.txt  mdp.txt  mon_hash.txt
bruno@elliott:~/Works/hackmd5$ 
a3c6c43c72c71ed874d16ce12f8cede1  mdp.txt

on peut enlever mdp.txt à la main avec vi … mais on va exploiter la puissance de cut !

bruno@elliott:~/Works/hackmd5$ cat hashmd5.txt | cut -d " " -f1
a3c6c43c72c71ed874d16ce12f8cede1
bruno@elliott:~/Works/hackmd5$ 
bruno@elliott:~/Works/hackmd5$ cat hashmd5.txt | cut -d " " -f1 > md5.txt
bruno@elliott:~/Works/hackmd5$ cat md5.txt
a3c6c43c72c71ed874d16ce12f8cede1
bruno@elliott:~/Works/hackmd5$

qui peut savoir que a3c6c43c72c71ed874d16ce12f8cede1 correspond à etudiant sans accent !

On va se faire un petit dictionnaire au format ascii texte

# Créer le dictionnaire
echo -e "admin\npassword\n123456\netudiant\nazerty" > dico_mini.txt


cat dico_mini.txt 
admin
password
123456
etudiant
azerty
bruno@elliott:~/Works/hackmd5$

allez on attaque !

# Lancer l'attaque
hashcat -m 0 -a 0 md5.txt dico_mini.txt

combien de temps pour trouver le bon mot ! lequel ! le problème c’est qu’il a déja découvert le mot de passe et c’est intelligent donc ca ne relance pas tout !

On obtient le résultat avec –show (dans le potfile !)

bruno@elliott:~/Works/hackmd5$ hashcat -m 0 md5.txt --show
a3c6c43c72c71ed874d16ce12f8cede1:etudiant
bruno@elliott:~/Works/hackmd5$ 

Pour le refaire chercher il faut utiliser l’option potfile-disable

hashcat -m 0 -a 0 md5.txt dico_mini.txt --potfile-disable

Le potfile est simplement la !

bruno@elliott:~/Works/hackmd5$ cat ~/.local/share/hashcat/hashcat.potfile
a3c6c43c72c71ed874d16ce12f8cede1:etudiant
bruno@elliott:~/Works/hackmd5$

on peut aussi l’effacer !! , pour le relancer !

et utiliser la fonction time qui va nous permettre d’obtenir le temps d’exécution du hashcat

time hashcat -m 0 -a 0 md5.txt dico_mini.txt

Explication sur les temps, celui qui nous interresse vraiment et le real : 70 milliseconde

real (0,070s) → le temps total que tu as attendu (70 millisecondes)

user (0,029s) → le temps passé par le CPU à calculer

sys (0,041s) → le temps passé par le noyau à gérer les entrées/sorties (lecture du fichier, initialisation OpenCL, etc.)

👉 Le temps sys est ici plus élevé que user, ce qui est normal pour une attaque ultra-courte : l'initialisation d'Hashcat (chargement du moteur OpenCL, détection du matériel) prend plus de temps que le calcul des 5 petits hashs !

Ici on se rend compte que notre dictionnaire est plutôt petit 🙂 et le mot est dedans !

dictionnaire rockyou.txt

wget https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt

grâce a ce nouveau dictionnaire !! retrouver le mot de passe etudiant !

force brut

y a des inconnus !! 🙂 ? jocker une lettre !

echo -n "secret" | md5sum | cut -d' ' -f1 > test6.txt
time hashcat -m 0 -a 3 test6.txt ?l?l?l?l?l?l

expliquer

mesurer le temps

tester avec votre date de naissance !

Conclusion: