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 !
