Bonjour à tous,
Je suis en ce moment sur un site de "challenges" et dans la rubrique javascript j'ai commencé un challenge en bruteforce. Le script initial est :
J'aimerais retranscrire ce code en C, et cela me donne pour l'instant :
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
31
32
33
34
35
36 <script type="text/javascript" language="JavaScript"> var total_erreur=0; function Check() { var tabc=Check.arguments; var ok=0; var tab=" azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789_$&#@"; for (var no=0;no<tabc.length;no++) { checksum=tabc[no]; var login=document.forms["flog"].elements["login"].value; var password="souris"; var nblog=login.length; var nbpass=password.length; var sum=1; var n=Math.max(nblog,nbpass) for (var i=0;i<n;i++) { var index1=tab.indexOf(login.substring(i,i+1))+10; var index2=tab.indexOf(password.substring(i,i+1))+10; sum=sum+(index1*n*(i+1))*(index2*(i+1)*(i+1)); } if (sum==checksum) { window.location="/epreuves/javascript/"+login+".php"; ok=1; no=100; } } if (ok==0) { total_erreur++; alert("Mauvais login ou mot de passe"); if (total_erreur>2) { alert("Vous avez atteint les 3 essais !\nAu revoir"); window.location="index.php"; } } } function Verifie() { Check(3696619) } </script>
J'ai essayé de l'indenter au maximum pour une meilleure compréhension ce celui-ci + quelques commentaires ...
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 #include <cstdlib> #include <iostream> #include <stdio.h> #include <stdlib.h> #include <strings.h> using namespace std; char tab[] = " azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789_$&#@"; int indexof (char c){ int nb=0; while(c!=tab[nb]){ if(c==tab[nb]){ break; } nb++; } return nb; } int main() { char a,b,c,d,e,f; int i , n0 , tabclength=1 , sum=1, indexof1=0,indexof2=0, n; int index1=0, index2=0; char login[7]=" "; char pwd[7]="souris"; // generation du login pour le test for (int a='A';a<'z';a++){ for (int b='A';b<'z';b++){ for (int c='A';c<'z';c++){ for (int d='A';d<'z';d++){ for (int e='A';e<'z';e++){ for (int f='A';f<'z';f++){ login[0] = a ; login[1] = b ; login[2] = c ; login[3] = d ; login[4] = e ; login[5] = f ; // Opération sur le login (6 fois) for(i=0;i<6;i++){ // longueur du login = 6 index1 = login[i]; index2 = pwd[i]; indexof1=indexof(index1)+10; indexof2=indexof(index2)+10; index2 = pwd[i]+10; sum=sum+(index1*n*(i+1))*(index2*(i+1)*(i+1)); if (sum==3696619) printf("%s |",login); // condition pour afficher le login } // boucle for TEST } } } } } } // derniere boucle FOR generation du login printf("FIN"); return 0; }
En gros, la génération du login (6 caractères) se fait bien (AAAAAA,AAAAAB,....), et le programme suit bien toutes les boucles. Je pense que mon problème vient du substring (en javascript), que je ne sais pas trop comment écrire en C ...
Voila dites moi ce que vous en pensez, je me tiens à votre disposition pour des plus amples informations
Cordialement,
olivier1209.
PS : site source = http://www.newbiecontest.org
Partager