Salut tlm !
J'essaie de faire comparer deux hashes en MD5 pour pouvoir trouver le mot original appartenant au hashe en question.
Exemple :
Je veux decrypter un hash MD5 dont je sais que le mot d'origine contient 5 lettres. Donc je génère toutes les possibilitées de mots (26^5) dans un fichier et j'y inscrit également toutes les possibilités en MD5 pour un mot de 5 lettres (également 26^5) dans un autre fichier.
Mon problème se situe lorsque je compare les 2 strings (le MD5 que je veux découvrir et tous les MD5 dans le fichier)...
Mon code ne sort pas de la boucle et pourtant les MD5 sont exacts..
Voici mon code :
Code :
// Programme qui cree des tables de hashages en MD5
// Le programme debute selon 2 parametres demandes a l'usager
// Param 1 : Type de caracteres
// Param 2 : Nombre de caracteres
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#include <conio.h>
#include "md5.h" // on inclut les libraires MD5
#include "atoz.h" // on inclut atoz
void decryptmd5(char encrypted[]);
#define TAILLE_MAX 1000
int main (void)
{
char md52decrypt[33];
char choice = 'j';
printf("MD5 decrypt program v1.2\n\n");
printf("Do you want to create the files words_output.txt and md5_output.txt ? Y/N : ");
scanf("%c",&choice);
if (choice == 'Y')
{
printf("\n\nAtoZ will start...\n\n");
atoz();
printf("WriteMD52File will start...");
writemd52file();
}
printf("\nNow enter a 5 alpha MD5 string to decrypt it : \n\n");
scanf("%s",md52decrypt);
decryptmd5(md52decrypt);
}
void decryptmd5(char encrypted[])
{
FILE* fichier_mots = NULL;
FILE* fichier_md5 = NULL;
char chaine[TAILLE_MAX] = "";
char chaine2[TAILLE_MAX] = "";
int found = 0;
fichier_mots = fopen("words_output.txt", "r");
fichier_md5 = fopen("md5_output.txt", "r");
if (fichier_mots != NULL && fichier_md5 != NULL)
{
while ((fgets(chaine, TAILLE_MAX, fichier_mots) != NULL) && fgets(chaine2, TAILLE_MAX, fichier_md5) != NULL && found == 0)
{
encrypted[32] = '\0';
if (chaine[5] == '\n') {
chaine[5] == '\0';
}
if (chaine2[32] == '\n') {
chaine2[32] == '\0';
}
if (strcmp(encrypted,chaine2) == 0)
{
found = 1;
printf("\n\nFOUND --> %s : %s\n\n",chaine,chaine2);
} else
{
printf("%s : %s\n",chaine,chaine2);
}
}
fclose(fichier_mots);
fclose(fichier_md5);
}
}
Les autres fichiers tel que md5.h et atoz.h n'ont rien a voir avec le probleme des MD5.
J'attends une aide précieuse
Merci!