NewbieContest

Divers => Hacking => Discussion démarrée par: Mic3276 le 10 Août 2006 à 05:42:03



Titre: Les md5
Posté par: Mic3276 le 10 Août 2006 à 05:42:03
Salut, il y a pas longtemps, alors que j'étais sous Windows, j'utilisais Cain pour bruteforcer les md5.

Je voudrais savoir si vous connaissez l'équivalent sur Linux, pour bruteforcer les md5 pures(ceux de 32 caractères). J'ai essayé John the Ripper, mais il ne fonctionne apparemment qu'avec des variantes de md5. Tant qu'à MDCrack, il ne compile pas sur mon ordi 64 bit.

C'est ça qui est ça.. :)

Auriez-vous une solution?


Titre: Les md5
Posté par: Nebelmann le 13 Août 2006 à 09:44:05
euh ça m'étonne que john ne marche pas avec un MD5 de base...


Titre: Les md5
Posté par: Mic32768 le 18 Août 2006 à 05:02:52
Moi aussi, ça m'a étonné, mais ça m'a l'air bien vrai :/

Mais j'ai vraiment besoin d'aide! J'ai essayé de décrypter ça (avec John the Ripper):
0cc175b9c0f1b6a831c399e269772661 (qui signifie 'a')
mais ça marque: '0 passwords loaded' :cry:
et si je le mets dans un fichier, il marque 2 password loaded.. donc il n'interprète pas bien le hash.
Si quelqu'un est capable de bruteforcer ça sur Linux, dis-moi comment s'il vous plaît!

A+


Titre: Les md5
Posté par: Gardel le 18 Août 2006 à 15:11:25
J'ai eu le même problème avec John et les md5.
Mais je n'ai pas trouvé comment faire ^^
Mais normalement John The Ripper sait tout faire :cool:


Titre: Les md5
Posté par: Crisis le 18 Août 2006 à 15:31:52
Ou autrement, utilisez des sites avec des dico
~ http://ice.breaker.free.fr/
~ http://md5.c.la/
Pour ne pas les citer. =D


Titre: Les md5
Posté par: lordzak le 18 Août 2006 à 16:08:23
j'ai codé un algorithme basique de brute force en PHP si ca vous interresse ; il faudra que je le recode en C/C++... mais déjà si ça vous interresse je peux le balancer. C'est un algo simple, que vous pouvez evidemment adaptez à n'importe quel algorithme de cryptage. Pour le md5, c'est pas compliqué, en php c'est md5($chaine) ^^

C'est pas en récursif, on peut reprendre à partir d'une chaine sans problème, donc ça prend moins de mémoire. Je sais que le PHP c'est pas génial pour ce genre d'application mais pour les chaines de caractères c'est quand même plus facile (c'est pour ça que je ne l'ai pas directement codé en C).

Mais bon ca n'a rien de bien compliqué comme algo.

Si en plus qqun veut le réécrire en C/C++ ca pourrait rendre service :)

A++

PS : on peut se servir de l'algo pour générer des rain bow table of course


Titre: Les md5
Posté par: Gardel le 18 Août 2006 à 16:24:40
Tu me le montrera juste par curiosité :) Je verrai si j'ai les compétences pour le refaire en C :)


Titre: Les md5
Posté par: lordzak le 18 Août 2006 à 16:54:36
ok mais tu me le rend après ^^


Titre: Les md5
Posté par: Crisis le 18 Août 2006 à 16:59:09
Moi ça m'intérèsse en tout cas. =D
Pas pour le retransmettre en C parce que j'ai pas le niveau je pense, mais pour m'en servir, je veux bien. :P


Titre: Les md5
Posté par: lordzak le 18 Août 2006 à 17:11:50
haaan l'interressé... attendez j'en fais qqchose de propre et je l'envoi... enfin je pense :p


Titre: Les md5
Posté par: Gardel le 18 Août 2006 à 17:22:07
Ok je te le rend après :D avec des intérêts =D


Titre: Les md5
Posté par: S0410N3 le 18 Août 2006 à 18:34:03
en nature les intérets ? :P


Titre: Les md5
Posté par: Mic32768 le 18 Août 2006 à 19:15:55
:? ...

Intéressant le bruteforcer en php!


Titre: Les md5
Posté par: lordzak le 18 Août 2006 à 19:48:56
Voili voilà :

Code:
<?php

$alphabet 
'abcdefghijklmnopqrstuvwxyz';

// password de départ
if(isset($_GET['pass'])) $pwd $_GET['pass']; 
else 
$pwd=$alphabet[0];

$size_alph strlen($alphabet);
$size_pwd strlen($pwd);
$position $size_pwd-1// focus

$fini 0;
while(!
$fini)
{
if(tester_password($pwd))
{
echo $pwd;
$fini 1;
}

$position=strlen($pwd)-1// on place le focus sur le dernier caractère

// tant que l'on a le dernier caractère, on remonte
while($pwd[$position]==$alphabet[$size_alph-1]) $position--;

// Si on a trop remonté, on crée un nouveau caractère
if($position<0)
{
$pwd.=0// ajout d'un élément vide

$size_pwd=strlen($pwd); // on actualise la taille
// on remet tout à zéro :
$first_letter=$alphabet[0];
for($i=0;$i<$size_pwd;$i++) $pwd[$i]=$first_letter;
}
else
{
// sinon on incrémente le caractère sur lequel on a le focus
$current_char=$pwd[$position];
$i=0
$next_letter='';
// on cherche la lettre suivante dans l'alphabet
while(!$next_letter)
{
if($alphabet[$i]==$current_char$next_letter=$alphabet[$i+1];
$i++;
}
// on met à jour la caractère
$pwd[$position]=$next_letter;

// tous les caractères qui suivent le caractère changé doivent être remis à zéro  
for($i=$position+1;$i<$size_pwd;$i++) $pwd[$i]=$alphabet[0];
}
}

function 
tester_password($pwd)
{
// Routine de vérification à changer selon les besoins :
$enc md5($pwd)
if($enc == 'hash à cracker') return 1;
else return 0;
}

?>
Si vous avez des améliorations mais surtout des optimisations je suis preneur !
Au niveau des améliorations, je pense à un max_char ; mais ça tout le monde peut le faire c'est pas bien compliqué ; enfin, si ca interresse qqun je peux le faire.


Have fun ! =D


Titre: Les md5
Posté par: Mic32768 le 19 Août 2006 à 08:04:21
Salut!

Je crois bien que je vais essayer de transporter ça en c++, si j'en suis capable =)

Mais pour ceux que ça  intéresse, j'ai trouvé comment bruteforcer les MD5 avec John :P
Voici les étapes:

1-Télécharger John the Ripper (chez moi, ça fonctionne qu'avec la version 7): http://ftp://ftp.ibiblio.org/pub/linux/distributions/openwall/projects/john/1.7

2-Télécharger la patch: http://www.openwall.com/john/contrib/john-1.7-rawmd5-ipb2-4.diff.gz
3-Décompressez John ou vous voulez.
4-Décompressez le fichier contenu dans l'archive de la patch à l'intérieur du dossier 'src' de John.
5- Positionnez-vous dans le répertoire 'src' de John à l'aide de la console,

Il va maintenant falloir patcher la source originale pour qu'elle puisse accepter les MD5 standards.

6-patch -p2 < john-1.7-rawmd5-ipb2-4.diff
7-Tapez 'make' pour voir les architectures disponibles. Choisissez celle qui vous correspond.
8- Tapez 'make clean [votre-architecture-ici]

Vous pouvez ensuite aller dans le répertoire 'run' et exécuter John normalement avec le support des MD5 standards.

Voilà, j'espère que ça aura été utile à quelqu'un ;)


Titre: Les md5
Posté par: Gardel le 19 Août 2006 à 12:37:51
merci Mic32768 !

En effet, j'ai lu un article sur John hier qui disait qu'il ne supportait pas les md5, ce qui confirme le pourquoi du comment :)


Titre: Les md5
Posté par: Freem le 24 Août 2006 à 23:51:05
Euh... pour ce qui est du code en C, il n'y a presque rien a changer, a part déclarer les varaibles au début du prog, inclure les bibliothèques et gérer les E/S....
Par contre, (j'ai envie de mettre un p'tit grain de mer**) tu aurai pu eviter un if ainsi que la fonction de test.
Enfin, poour mieux m'expliquer, j'ai "traduit" en C mais avec des E/S de console (je ne me souvient plus comment on fait pour les E/S avec une page web):
Code:
// il faudra penser a inclure la bibliothèque qui contient la fonction "char *md5(char *)"

#include <stdio.h>
#include <string.h>

void main(void)
{
char alphabet[]="abcdefghijklmnopqrstuvwxyz";
unsigned long=size_alph=strlen(alphabet),
size_pwd=strlen(pwd),
position=0,//focus
i;
char first_letter, current_char, next_letter;

//if(isset($_GET['pass'])) pwd = _GET['pass'];
scanf("%s",pwd);
/*je ne sais pas comment remplacer la ligne au dessus, donc, bah...
mon prog ne s'éxécute pas en cgi ;) mais dans une console.
En fait, on peut dire que je n'ai rien changé a une ou deux lignes,
puisque le PHP (comme le java) est dérivé du C pour la syntaxe (entre autres)
Pour refaire le prog comme dans sa version PHP, il suffit de modifier les E/S*/
else pwd=alphabet[0];

while(!strcmp(md5(pwd),"hash a cracker"))
{
    position=strlen(pwd)-1; // on place le focus sur le dernier caractère

    // tant que l'on a le dernier caractère, on remonte
    while(pwd[position]==alphabet[size_alph-1]) position--;

    // Si on a trop remonté, on crée un nouveau caractère
    if(position==pow(2,1+sizeof(long))-1)
    {
        $pwd.=0; // ajout d'un élément vide
       
        size_pwd=strlen(pwd); // on actualise la taille
        // on remet tout à zéro :
        first_letter=alphabet[0];
        for(i=0;i<size_pwd;i++) pwd[i]=first_letter;
    }
    else
    {
        // sinon on incrémente le caractère sur lequel on a le focus
        current_char=pwd[position];
        i=0;
        next_letter='';
        // on cherche la lettre suivante dans l'alphabet
        while(!next_letter)
        {
            if(alphabet[i]==current_char) next_letter=alphabet[i+1];
            i++;
        }
        // on met à jour le caractère
        pwd[position]=next_letter;

        // tous les caractères qui suivent le caractère changé doivent être remis à zéro  
        for(i=position+1;i<size_pwd;i++) pwd[i]=alphabet[0];
    }
}
printf("%s",pwd);
}


Titre: Les md5
Posté par: Mic32768 le 25 Août 2006 à 00:50:00
Es-tu certain que la fonction md5() existe en C :?:


Titre: Les md5
Posté par: Freem le 25 Août 2006 à 18:53:36
En fait elle n'existe pas dans la bibliothèque standard, mais je suis (quasi) sur que les bibliothèques php sont compatibles avec le C, voire même qu'elles ont été écrites en C/C++...
Mon prof d'info m'avait dit (si je me souvient bien) que les fonctions de php étaient dérivées du C, donc bon...
En plus, le php est un langage interprêté, donc beaucoups plus lent... je suis donc persuadé que les fonctions qu'il utilise ne sont pas codées en php.

Le problème revient donc a trouver dans quelle librairie cette fonction se trouve.


Titre: Les md5
Posté par: Nebelmann le 27 Août 2006 à 09:15:49
dans les libs de crypto... ou alors tu peux utiliser la commande md5sum sinon


Titre: Les md5
Posté par: Folcan le 27 Août 2006 à 22:51:06
Citation
Mon prof d'info m'avait dit (si je me souvient bien) que les fonctions de php étaient dérivées du C, donc bon...
Le php viens bien du C


Citation
1994/95 L’idée de Rasmus Lerdorf

Le langage PHP a été créé par un Danois, Rasmus Lerdorf en 1994 parce qu’il cherchait à élaborer un script simple pour enregistrer les passages sur une passage personnelle sur laquelle son CV était présenté. Ne trouvant rien de vraiment commode, il décide de créer on propre langage de script pour résoudre le problème.

Il faut dire que Rasmus Lerdorf n’est pas le premier informaticien venu : c’est un spécialiste des solutions Unix qui a déjà dix ans d’expérience dans le domaine. Mais au moment où il crée sa page perso, il est à la recherche d’un employeur, et se dit que montrer une page avec les logs des visiteurs peut en impressionner plus d’un.

Mais sa page est vue aussi par de nombreux webmasters, qui lui réclament son script (au départ une simple collection d’outils sous forme de scripts perl/cgi). Les premiers scripts sont déjà capables d’exécuter des requêtes mSql, et de gérer des formulaires.

L’ensemble constitue les "PHP Tools" (Personal Home Page Tools, outils pour pages personnelles), et c’est ce qui explique l’origine du nom PHP.

1995 : version 1.0 - l’interpréteur

Lerdorf a rapidement fait évoluer ses scripts, pour créer un véritable interpréteur de tags HTML qui simplifiait l’utilisation de ses scripts. Ce mini langage a connu un succès immédiat. Stimulé par la communauté des utilisateurs, qui lui suggèrent de doter le langage de boucles structures conditionnelles et d’autres fonctionnalités sympathiques, Lerdorf se plonge dans les langages évolués de l’époque pour en retirer le meilleur.

1996 : version 2.0 - PHP devient un véritable langage évolué

Lerdorf n’est pas un développeur expert, donc il garde la syntaxe du C, qui lui est familière, mais il s’imprègne également de concepts issus de Bison GNU et de YACC.

La version 2.0 est une révolution, car elle permet d’insérer dans une page HTML des instructions puissantes, mais aussi des requêtes sql, avec une facilité déconcertante. L’une des qualités les plus remarquées du PHP, c’est aussi la rapidité d’exécution des scripts, car il fonctionne comme un module compilé avec le serveur web Apache.

PHP/FI (c’est son nom à l’époque) intéresse déjà plusieurs sites commerciaux, qui l’adoptent. A partir de 1998, plusieurs hébergeurs commencent à proposer à leurs clients ce langage. Le phénomène PHP est lancé...

1998 : version 3.0 - La consécration

Le nombre d’installations augmentant, de nouveaux besoins apparaissent, et certains défauts sont devenus plus difficilement tolérables. Mais face à l’ampleur de la tâche, Lerdorf se fait aider cette fois-ci par une équipe de nouveaux développeurs bénévoles : on peut citer Stig Bakken, Shane Caraveo, Andi Gutmans, Zeev Suraski, et Jim Winstead.

C’est grâce à cette version que le php s’est imposé rapidement comme un véritable langage idéal pour générer des pages dynamiques. Associé à la base mysql, il s’est répandu chez la plupart des hébergeurs, gratuits ou payants, comme le successeur définitif des Perl CGI sur les serveurs LINUX/UNIX.

1999 : la version 4.0 - Le moteur Zend

Réécrit entièrement par Andi Gutmans et Zeev Suraski, le nouveau "moteur" du langage PHP, baptisé Zend, est intégré dans la version de base et donne la version 4.0 du langage. Cette version intègre une gestion des sessions, qui permet de faciliter l’écriture de pages dynamiques personnalisées.

2004 : vers la version 5.0...

Mais là on a un peu de temps pour en reparler...



source : http://www.webmaster-hub.com/publication/article9.html


Titre: Les md5
Posté par: lordzak le 28 Août 2006 à 09:04:32
Ah c'est cool d'avoir fait une réécriture en C mais elle n'est pas encore très au point :D
je ferai la mienne quand j'aurais le temps.

Le PHP gère les chaines de caractères dynamiquement, bcp plus facilement qu'en C c'est pour ça que ce n'est pas forcément évident :/


Titre: Les md5
Posté par: lilxam le 28 Août 2006 à 10:22:24
Moi avec John the ripper sa marche presque pas!!
Hier quand j'ai fai l'épreuve n°2 de hacking, pour decrypter le md5 j'ai passer au moins trois heures!
J'ai lue l'article sur newbiecontest puis enfin j'y suis arriver et quand j'ai voulu le refaire sa marchait plu!!!j'avait pourtant retaper exactement les meme commandes!!!
Comment sa se fait?


Titre: Les md5
Posté par: Folcan le 28 Août 2006 à 14:02:37
Parce que tu l'as mal fait...

Perso j'ai testé pas mal de fois, et tout fonctionne normallement !


Titre: Les md5
Posté par: lilxam le 28 Août 2006 à 14:36:57
Oui c bon j'ai trouver!!
Je le faisait effectivement mal !


Titre: Les md5
Posté par: MastringIp le 31 Août 2006 à 11:16:06
Sinon, il y a des sites interessants...

Comme Milw0rm


Titre: Les md5
Posté par: lordzak le 31 Août 2006 à 11:18:16
Citation
Access Denied (content_filter_denied)

Votre demande a été refusée à cause de sa catégorie: "Criminal Skills;Malicious Sites"
:rolleyes:


Titre: Les md5
Posté par: Delta le 31 Août 2006 à 11:49:28
Sinon il y a PasswordsPro qui est simple et permet des attaques comme BruteForce, Hybride, Masque ou Dictionnaire .