Nous sommes actuellement le 28 Mars 2024, 06:34

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 3 message(s) ] 
Auteur Message
MessagePublié: 02 Avr 2008, 20:12 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 19 Sep 2002, 14:29
Message(s) : 572
Localisation : Saint-Georges de Beauce
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 :P

Merci!

_________________
-+-Inazad-+-


Haut
 Profil  
Répondre en citant  
MessagePublié: 02 Avr 2008, 23:01 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
Au lieu de faire des printf, tu pourrais tout simplement mettre un breakpoint. Ça risque d'aller plus vite pour faire tes tests.

_________________
This posting is provided "AS IS" with no warranties, and confers no rights!
©2006 - 2014 Jump


Haut
 Profil  
Répondre en citant  
MessagePublié: 05 Avr 2008, 13:58 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 19 Sep 2002, 14:29
Message(s) : 572
Localisation : Saint-Georges de Beauce
J'ai trouvé l'erreur..

Code :
...
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'; // doit être chaine[5] = '\0';
                        }

                        if (chaine2[32] == '\n') {
                                chaine2[32] == '\0';   // doit être chaine2[32] = '\0';
                        }
...


C'était aussi simple que ça! :-)

A++

_________________
-+-Inazad-+-


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 3 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 5 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site