Pourquoi j'ai fait ça
Avant toute chose, c'était le nouvel an, j'avais des partiels à préparer pour êter sur de passer, donc plutôt que d'aller boire avec les quadragénaires au rez-de-chaussée, j'ai pondu un peu de C.
C'est disponible ici : https://github.com//0000md5.git.
C'est quoi ?
C'est un bout de code simple et rapide qui lit un fichier et un masque (genre 1337
ou 0000
) et qui va bruteforcer un suffixe pour que le md5 du fichier se termine par le masque demandé.
Plutôt qu'un long discours, une petite démonstration :
Prenons un fichier d'entrée :
$ hexdump -C entree
00000000 48 61 70 70 79 20 6e 65 77 20 79 65 61 72 20 21 |Happy new year !|
00000010 0a |.|
00000011
Calculons son MD5
$ md5sum entree
a3c5fca333c36296dc676c2ac9af2691 entree
Trouvons le bon suffixe pour que le md5 finisse par 001337 :
$ ./0000md5 entree sortie 001337
Mask : 00 13 37
Mask len : 3
md5('entree') : a3c5fca333c36296dc676c2ac9af2691
Suffix length :
Thread reaches level 1
Thread reaches level 2
Thread reaches level 3
Time : 4s
md5( entree + ' a2 04 a1 ' ) = 1d76ea63fb000658e37fdaaf76001337
3 bytes written.
Observons le résultat :
$ hexdump -C sortie
00000000 48 61 70 70 79 20 6e 65 77 20 79 65 61 72 20 21 |Happy new year !|
00000010 0a a2 04 a1 |....|
00000014
$ md5sum sortie
1d76ea63fb000658e37fdaaf76001337 sortie
\o/