Bonjour à tous,

Dans le cadre d'un challenge, qui consiste à trouver un login, j'ai fait un script pour tester plusieurs combinaisons (26^5 combinaisons).
Novice, et constatant que ça prenait un temps fou je me pose les questions suivantes:

1) 26^5 combinaisons, ça fait beaucoup pour un processeur ? (désolé pour ma naïveté )
2) Le fait de faire des threads me permettra t'il de diviser le temps de calcul ?
3) Comment m'y prendre si je veux "partager les calculs" dans mes threads, ie: comment réservé un jeu de combinaison pour le thread1 et un autre jeu de combinaisons pour un thread2
4) Si je fais des threads, puis-je écrire dans le même fichiers mes résultats ?

Voilà le script, sans thread.
nb: j'avais commencé sur 26^6 combinaisons mais après une nuit, j'étais qu'à 0,2% d'avancement

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
84
85
86
87
88
89
90
91
 
#!c:\perl\bin\perl.exe
 
use String;
@charset;
 
$CHECKSUM="3696619";
my $Tab=new String("                   azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789_$&#@");
$PASSWORD="souris";
 
while($i!=26)
{
      $charset[$i]=chr($i+97);
      $charset[$i+26]=chr($i+65);
      $i++;
}
$i=0;
#push(@charset,chr(95));
#push(@charset,chr(36));
#push(@charset,chr(38));
#push(@charset,chr(35));
#push(@charset,chr(64));
$total=($#charset+1)*($#charset+1)*($#charset+1)*($#charset+1)*($#charset+1);
#$total=($#charset+1)*($#charset+1);
$compteur=0;
$lastpourcent;
for(my $i=0;$i<=$#charset;$i++)
{
      for(my $j=0;$j<=$#charset;$j++)
      {
            for(my $k=0;$k<=$#charset;$k++)
            {
                    for(my $l=0;$l<=$#charset;$l++)
                    {
                            for(my $m=0;$m<=$#charset;$m++)
                            { 
                                    #for(my $n=0;$n<=$#charset;$n++)
                                    #{
                                            $login=$charset[$i].$charset[$j].$charset[$k].$charset[$l].$charset[$m];
                                            &Check($login);
                                            $pourcent=sprintf("%.2f",($compteur/$total*100));
                                            $compteur++;
                                            if($pourcent ne $lastpourcent)
                                            {
                                                  print "$pourcent %\n";
                                                  $lastpourcent=$pourcent;
                                            }
                                    #}
                            }
                    }
            }
      }
}
 
 
sub Check()
{
      my $login=shift;
      for($no=0;$no<length($CHECKSUM);$no++)
      {
            $nblog=length($login);
            $nbpass=length($PASSWORD);
            my $sum=1;
            if($nblog>$nbpass)
            {
                  $n=$nblog;
            }
            else
            {
                  $n=$nbpass;
            }
 
            for (my $i=0;$i<$n;$i++)
            {
                  my $pos1=$Tab->indexOf(substr($login,$i,1));
                  my $pos2=$Tab->indexOf(substr($PASSWORD,$i,1));
 
                  my $index1=$pos1+10;
                  my $index2=$pos2+10;
                  $sum=$sum+(($index1*$n*($i+1))*($index2*($i+1)*($i+1)));
            }
            if($sum==$CHECKSUM)
            {
                  open(fic,">>newbie_brutforce.txt");
                  print fic "$login : $sum\n";
                  close(fic);
 
            }
      }
 
}
Merci pour vos réponses !!