INVERSE DU MD5() EN PHP

Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 - 22 avril 2007 à 03:37
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 1 mai 2007 à 11:08
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/42401-inverse-du-md5-en-php

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
1 mai 2007 à 11:08
"le password circule bien en clair sur le réseau d'ou un man in the middle possible.. "

en rsa, si les clefs n'ont pas deja ete echangees, l'homme du millieu peut serrer les deux mains et quand meme avoir le message en clair
PerfectSlayer Messages postés 30 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 29 août 2007
1 mai 2007 à 09:56
En effet, le password circule bien en clair sur le réseau d'ou un man in the middle possible.. Mais tu sais, un simple leylog ou même un hook peuvent prendre tes passwords..
Je m'occupe du site. Dès lors, tout ce qui sort du serveur.. c'est plus mon domaine.. :/
cs_emilia123 Messages postés 122 Date d'inscription mercredi 19 décembre 2001 Statut Membre Dernière intervention 5 janvier 2009
1 mai 2007 à 09:33
bonjour,

[mode parano activé]
si c'est pour un formulaire web:
- soit le mot de passe de l'internaute n'est pas changé avant la validation du formulaire, il passe en clair sur le réseau, puis le md5 est calculé avec le grain de sel qui dans ce cas n'est connu de personne. par contre le mot de passe circule en clair sur le réseau.

-soit le mot de passe est mis en MD5 avec le grain de sel coté internaute (donc le grain de sel est visible par tous). dans ce cas le mot de passe circule en MD5 mais le grain de sel est connu par tous ceux qui visualise le formulaire ou le javascript lié.

c'est sur que c'est mieux avec un grain de sel, mais je ne pense pas que cela soit non plus "la solution ultime".

[mode parano eteint, je retourne me coucher]

Em.
PerfectSlayer Messages postés 30 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 29 août 2007
1 mai 2007 à 08:55
Emilia > Oui en effet pourquoi ? J'aurais du préciser en effet..
cs_emilia123 Messages postés 122 Date d'inscription mercredi 19 décembre 2001 Statut Membre Dernière intervention 5 janvier 2009
30 avril 2007 à 21:36
>PerfectSlayer>
quand tu parles de chaque log, tu parles de connexion d'un internaute via un formulaire web (loggin) par exemple ?
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
30 avril 2007 à 16:24
Arreter de critiquer en disant que c'est long :P,
Le but de cette source n'est pas vraiment de cracker un mdp et encore moins si il n'est pas a nous.
Sont but est de montrer le brutforce, et comment le coder, vous pouvait faire des critique sur le code sa oui :P, si il est mal coder... mais pas parceque il est lent a brutforcer un texte à 8 caractères..., c'set sur que vous n'y arriverai pas meme en asm (afin du moins c'est très long)
PerfectSlayer Messages postés 30 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 29 août 2007
30 avril 2007 à 13:58
Bah personnellement, "le" grain de sel que j'utilise est généré côté serveur, différent pour chacun des couples : (user,pass), pas stoqué avec les pass (dans une BDD donc) et calculé à chaque log dans une variable au nom dynamique. Donc apres ca devient un peu plus dur pour le trouver.. Mais c'est vrai que rien n'est impossible. Mais le fait que le grain dépende du couple doit augmenter la difficulté du reverse.
cs_emilia123 Messages postés 122 Date d'inscription mercredi 19 décembre 2001 Statut Membre Dernière intervention 5 janvier 2009
30 avril 2007 à 13:44
bonjour,

juste pour mettre mon grain de sel dans cette histoire...
si on pense que rajouter un grain de sel permet de passer à coté d'un casse de hash, je pense qu'on reve..
Ex on trouve souvent des formulaires web réalisant le hash coté client et envoyant ce code pour vérification. pour traiter correctement le hash il faut que le grain de sel soit aussi coté client...
donc il suffirait d'aller sur le formulaire, de regarder le code qui réalise le hash, et de chercher un résultat du style : hash =>bruteforce=> grain de sel + code.

le grain de sel ne marche que si il (le grain) n'est pas accessible en meme temps que le hash.
Si on est arrivé à récupérer un hash, on doit pas loin du grain de sel (fichier avec code en dur, formulaire d'identification web, etc) vu que l'un sert à l'autre.

Enfin peut etre me trompe je .

EM.
PerfectSlayer Messages postés 30 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 29 août 2007
30 avril 2007 à 09:13
Bonjour.
Personnellement, je trouve le code un peu crade mais surtout inutile.. En effet, on ne cherche à faire un reverse sur un hash md5.. La plupart du temps, les passwords enregistrés ne subissent pas qu'un md5. Un simple salt (grain de sel) et toute cette méthode (qui reste vraiment limitée) tombe. Et puis imaginez que le password fasse 8 caractères (dont le premier commence par un Z comme "ZemixX#3") et qui contient des caractères particuliers.. De plus si on augmente le script de quelques caractères, le temps d'execution croit incroyablement :/
apxa Messages postés 188 Date d'inscription mercredi 15 mai 2002 Statut Membre Dernière intervention 25 avril 2009
24 avril 2007 à 20:29
Iop all
He oui Rudy c'est vrai mais en faite il faudrait rajouter une virgule après inverse ce qui éviterait les confusions.

Have Fun ;)
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
24 avril 2007 à 11:08
APXA --> "Reverse engineering qui est l'algorithme inverse du hashage md5".

Heu l'algorithme inverse n'existe pas, et n'existera jammais..., c'est un hash pas un cryptage
apxa Messages postés 188 Date d'inscription mercredi 15 mai 2002 Statut Membre Dernière intervention 25 avril 2009
24 avril 2007 à 02:34
Je rajouterais juste une chose, tu devrais plutot orienter ton code pour faire une bonne demonstration sur l'utilisation des tableaux multidimensionnels, codes ascii et boucle.
Pour l'innovation ce pas ca mais ce qui compte c'est le code et ceux qu'il peut apporter en terme d'exemple pour des débutant(e)s.

Have Fun ;)
apxa Messages postés 188 Date d'inscription mercredi 15 mai 2002 Statut Membre Dernière intervention 25 avril 2009
24 avril 2007 à 02:27
Iop all,
Bon le mieux en faite se serait d'expliquer ta methode qui en effet et un brute force c'est à dire comparaison de la chaine crypté par une autre chaine crypté générée automatiquement ce qui en effet ne correspond pas avec le principe de Reverse engineering qui est l'algorithme inverse du hashage md5.
Après au niveau du code il est vrai qu'il est un peu brouillon (pas commenté et pas optimsé).

Have Fun ;)
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
23 avril 2007 à 17:02
Arto_8000 -> L'autre code en PHP que j'ai tester n'utiliser pas de dico, il généré des solution au fure et a mesure
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
23 avril 2007 à 13:05
vous avez ici une version rapide, claire et mieux codee (en 10 minutes j'en conviens :) )
http://www.phpcs.com/code.aspx?ID=42416
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
23 avril 2007 à 12:33
si tu as des critiques au sujet de mon site, parles en a mon pere, c'est lui qui l'a tue (je suis 13 semaines sur 16 a 800 km de mon serveur... et ce, sans acces ssh ou autre)

un bruteforce, c'est tester tout les pass les uns apres les autres, c'est bidon comme technique... t'as retrouve un de tes pass de 4 caracteres... super password, il n'etait pas tres sure...

pour les critiques, elles sont toujours constructives, j'ai jamais dit simplement cette source c'est de la merde... sauf peut-etre sur des sources vraiment vraiment simplettes... et j'ai toujours corrige les sources des autres quand je le pouvais... ca permet de voir les gens s'ameliorer...
marcel1307 Messages postés 22 Date d'inscription mercredi 28 mai 2003 Statut Membre Dernière intervention 5 juin 2008
23 avril 2007 à 10:03
Salut, ton code m'a servi a retrouver un de mes passwd. Alors merci :o)

Je sais que je ne suis pas très actif sur ce site mais je le lis beaucoup... je voudrai donc dire à coucou747 qu'il existe d'autres moyens de communiquer que le dédain. Tu es certainement beaucoup plus fort que tout le monde ici et je reconnais en toi le savoir faire absolu. A contrario, je trouve tout de même malheureux qu'à force de surfer sur ce site, dès que je vois ton avatar j'ai le pré sentiment de voir un reproche derrière. Au lieu de casser la tête aux gens, apprend leur et regarde ton site...
Cordialement, le Marcel des campagnes
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
23 avril 2007 à 00:00
Rudy3212 -> La vitesse dépend aussi de la méthode utiliser en PHP. Avec une attaque par dictionnaire c'est clair que ça prend très peu de temps pour des mots très communs.
richie3366 Messages postés 14 Date d'inscription samedi 21 octobre 2006 Statut Membre Dernière intervention 23 avril 2007
22 avril 2007 à 23:35
Ok merci pour vos commentaires...
Je dépose ma première source sur ce site et je vois que les réponses sont rapides et très utiles.
Je modifierai la structure dès que je pourrais... mais pas d'ici trois jours ...
Encore merci
++
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
22 avril 2007 à 22:09
Temps du brutforce pour le hash de "mot" :
Ton script en PHP : 17 secondes
Un autre Script en PHP : 2 secondes
En ASM : Moins de 1 seconde

Donc ce n'est pas le PHP qui est lent mais ton script, il faut que tu le revoit
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
22 avril 2007 à 21:56
"Par contre, si vous voulez trouver un mot de passe de plus de 4 caractères ... il faudra attendre théoriquement ... plus de 2h20 pour 5 caractères.
Il faudrait 6 jours pour trouver une chaine de 6 caractères."

deja, et ensuite, envoi lui un hash correct, et modifie son code pour gerrer plus que 4 caracteres
thekid23 Messages postés 77 Date d'inscription vendredi 24 novembre 2000 Statut Membre Dernière intervention 28 novembre 2007
22 avril 2007 à 21:50
Encore des corections ... il n'a pas déchifré le mot ThEkiD109
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
22 avril 2007 à 21:25
for($i=0;$i<1000000000000000;$i++){


Oh Oh Oh !

Un :
do {
//
} while ( $trouver );
aurait été plus judicieux.
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
22 avril 2007 à 19:01
Oui c'(est ce que je voulait dire lol, le principe du code du bruteforce
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
22 avril 2007 à 18:55
"Mais bon pour le principe du code je met 7"=> le principe d'un bruteforce ...
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
22 avril 2007 à 18:28
Pour prouver que ton code est lent :P,
J'ai télécharger et compiler un bruteforceur md5, il ma trouve le hash de test en moins de 1 seconde.

Toi tu a dit que le tient mettait 49 secondes.

49 secondes ont peut attendre pour 4 caractères mais imagines la diffrence sur 6 caractères avec minuscule, majuscuele et caractère spéciaux...

Mais bon pour le principe du code je met 7
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
22 avril 2007 à 17:32
une fonction reciproque du md5 n'existe pas mathematiquement, il faut une relation... md5 n'est pas une fonction injective... bref...
c'est mal code, on n'a pas de recherche disons plus mathematique d'un antecedant bref... c'est note en initie, alors que c'est un simple bruteforce... moi je mets 2
sebastienmz Messages postés 139 Date d'inscription mardi 16 mai 2006 Statut Membre Dernière intervention 23 juin 2008
22 avril 2007 à 17:26
je donne 9 car je trouve pas mal mais le code un peut "bordel" mais sinon c'est bien
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
22 avril 2007 à 17:13
# for($i=0;$i<1000000000000000;$i++){
...
# if($c1==64 or $trouve==1){ $i=1000000000000000000000; echo" ...FIN";}


utilise une boucle infinie et un break; ca le fera mieux...

le md5 n'a pas vraiment de reverse, et ton debut est foireux, utilise soit une chaine, soit un tableau
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
22 avril 2007 à 14:30
...
Ce code est loin d'etre pour des initiés ... de plus il est très sale.
Enfin le brute force en php ... no comment ...
jdalton42 Messages postés 200 Date d'inscription samedi 25 décembre 2004 Statut Membre Dernière intervention 19 août 2009
22 avril 2007 à 11:16
salut beh moi 4 caractere en minuscule il lui a falut 45 secondes :D

je testerais tantot pour 5 caracteres
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
22 avril 2007 à 03:37
C'est généralement très lent faire du brute force avec PHP, avec des logiciels faits pour cela on peut en quelques heures trouver un mot de 8 caractères, ce qui est largmement plus rapide que ton script.

Pour le brute force avec PHP, ça ce limite à des attaques par dictionnaires ou avec des rainbow table SQL.

Pour le temps d'exécution, il suffit de rajouter settimelimit(0) au début de script.
Rejoignez-nous