Bonsoir,
pour un projet de C, je dois écrire un programme qui casse les mots de passe de la forme [a-z0-9] pouvant aller de 1 à 8 caractères.
J'ai réalisé le code qui me permet de trouver des mots de passe de 1 caractère
J'ai également un fichier texte comportant les mots de passe hachés que je dois donc décrypter:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 1 #include <unistd.h> /* pour crypt * 2 #include <stdio.h> /* pour printf */ 3 #include <string.h> /* pour strcmp et strlen */ 4 int main(void) 5 { 6 int i = 0; 7 int longueur = 36; 8 char chaine[2] = {'x','\0'}; 9 char tableau[36] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p' ,'q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9'}; 10 11 char hachedpwdWithoutSalt [] = 12 "0HHtSA4cVzz0G2I.gswgTG93A8rvH5HCyWsjdMfomNSfiPmsPXGqq5EYfLlS1rEf9bOl6Ho8w1zdV/C2sv /B/."; 13 14 for (i=0; i<longueur; i++) 15 { 16 chaine[0] = tableau[i]; 17 18 if ( strcmp( crypt(chaine, "$6$QSX8hjVa$") + strlen("$6$QSX8hjVa$"), 19 hachedpwdWithoutSalt ) 20 == 0 ){ 21 printf("mdp du root craque ----> %s\n", chaine); 22 break; 23} 24 else 25 printf("mdp du root pas encore craque!!\n"); 26 } 27 return 0; 28 }
Pour la longueur 1 j'ai trouvé le mot de passe "h"Longueur 1:
type et salt: $6$QSX8hjVa$
mdp haché sans salt: 0HHtSA4cVzz0G2I.gswgTG93A8rvH5HCyWsjdMfomNSfiPmsPXGqq5EYfLlS1rEf9bOl6Ho8w1zdV/C2sv/B/.
Longueur 2:
type et salt: $6$QSX8hjVa$
mdp haché sans salt: gNPp/B3vf8UUotZQ8kB9MbZvC9XWBSU6yEykbEGSYoaW2Z7NEfcivrWWt9kPSuWB0TwdzbO51lRqRCBVmNYgR0
Longueur 3:
type et salt: $6$QSX8hjVa$
mdp haché sans salt: Sb6pCN8KN1u9aUfYOLt2cQx4l61YHBz7kjTFS0A7pdDs1r0Xmm3nW7meyy9Fyt6e.JhkbN4zwaHC6whN9vP/..
Longueur 4:
type et salt: $6$QSX8hjVa$
mdp haché sans salt: R..F1fyDnsTOy1g8jk5eupizgPcpkt1uZnFF0BP0bjEuhVbA01J3LFjzVdh.nuSDmFbHShDaYXQK.5OC47Tr70
Longueur 4:
type et salt: $6$QSX8hjVa$
mdp haché sans salt: Oj9IAu50jSsAAm62MOo63Ea4p1o8DC0zcR6I8N5f4jRgE0Bv0WRFEJwO4hGxAAMyOF2ON5Dwze2InWV9nDWVm1
Longueur 5:
type et salt: $6$QSX8hjVa$
mdp haché sans salt: nWgWe1FPL5XZqbEkdrkAX2bLfxvtD84rHaJ2jV7V.34U0txSUdYDC7PTDooxHIi0uJc7XcyUqgPfYIFPGiApE0
Longueur 6:
type et salt: $6$QSX8hjVa$
mdp haché sans salt: FGFMnq/y2zcEKz2NLVoWolGI7bG3s.bxf0NJFYunhng7bCGhfAbtmsqcsaCW5tIFPBh0XVSrQxfW66XwUCYQ8.
Longueur 6:
type et salt: $6$_SX5gjVa$
mdp haché sans salt: H3YBkLGM.OhpGRMtlwplT.wClyZEyhWhO1JB0GqmiM603CRYjL5tLU8IWhje1oSW7URGOIRVf/gPVIXWr37WK1
Longueur 7:
type et salt: $6$QSX8hjVa$
mdp haché sans salt: Iqh9UUWWMXzf7hzZ309httUrebuH1vCGirtR0r3i0RFvH0wc0UaQVnUXMOdUbQsBM1ssmdbaUzcyvPTfRB4km0
Longueur 8:
type et salt: $6$QSX8hjVa$
mdp haché sans salt: R6oPGKiym3490f4q9P5I1MIeAXVpL8KP%9EssLtusurP2aezPMdq9vgo3qWguWrFfctdkQXO2iXqI8ks5NCplD/
Pour la longueur 2 j'ai trouvé le mot de passe "j5"
Pour la longueur 3 j'ai trouvé lemot de passe "f47" (mais je n'en suis pas sûr)
Mon but serait désormais de permettre à l'utilisateur d'entrer une longueur comprise entre 1 & 8, et selon la longueur choisie, la script ira chercher le hach du mot de passe et le comparera au salt afin de trouver le mot de passe de longueur N (où N étant la longueur choisie par l'utilisateur).
J'espère que quelqu'un pourra m'aider car je ne suis que débutant en C, et j'avoue que je ne vois pas trop comment m'y prendre.
Merci, toute aide que vous pourrez m'apporter sera bonne à prendre![]()
Partager