Skip to content

Commit 5ec7aaa

Browse files
author
Fernando Fernández
committed
Add argsparse for flooder function
Signed-off-by: Fernando Fernández <ffernandezmancera@gmail.com>
1 parent e6639db commit 5ec7aaa

File tree

2 files changed

+44
-46
lines changed

2 files changed

+44
-46
lines changed

pentesting-multitool.py

Lines changed: 36 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,48 +9,62 @@ def main():
99
' It will be developed using Python3 adding some external libraries as DNSPython, pythonwhois or scapy.')
1010

1111
# Argument for DNS function
12-
13-
parser.add_argument('-DNS', metavar='--DNS', type=str, help='Using it you can get information about a DNS record of a specific domain.\n'
12+
parser.add_argument('-d', metavar='--DNS', type=str, help='Using it you can get information about a DNS record of a specific domain.\n'
1413
'Usage: <domain> -r <record> options: <-f --file>')
1514

1615
# Argument for whois function
17-
18-
parser.add_argument('-whois', metavar='--whois', type=str, help='Using it you can get information about a domain. '
16+
parser.add_argument('-w', metavar='--whois', type=str, help='Using it you can get information about a domain. '
1917
'Usage: <domain> options: <-f --file>.')
2018

2119
# Argument for shodan search function
22-
23-
parser.add_argument('-shodan', metavar='--shodan', type=str, help='Using it you can get information about the devices and services connected in a network.'
24-
'Usage: <search> (separating search arguments by \"-\") options: <-f --file, -full >')
20+
parser.add_argument('-s', metavar='--shodan', type=str, help='Using it you can get information about the devices and services connected in a network.'
21+
'Usage: <search> (separating search arguments by \"-\") options: <-f --file, -u >')
2522

2623
# Argument for banner grabber function
27-
28-
parser.add_argument('-bgrabber', metavar='--bgrabber', type=str, help='Using it you can get information about some services in the specified ports and IP.'
24+
parser.add_argument('-b', metavar='--bgrabber', type=str, help='Using it you can get information about some services in the specified ports and IP.'
2925
'Usage: <ip> -p <ports>(separated by \":\") options: <-file --file>.')
3026

27+
# Argument for flooder function
28+
parser.add_argument('-o', metavar='--flooder', type=int, help='Using it you can do a DOS Attack (Ping of death) or generate the PCAP file for do it.'
29+
'Usage: <number of packets (generator mode) or sends(flooder mode)> -f <filename> options: <-g --generator>.')
30+
31+
#Argument for fuzzer function
32+
parser.add_argument('-z', metavar='--fuzzer', type=str, help='Using it you can do a fuzzing test and write a PCAP with results. Please read documentation for know about the PCAP format.'
33+
'Usage:<ip> -ng <number of generations> -n <number of packets> -l <layer (UDP, TCP, ICMP)> -f <PCAP file name>')
34+
3135
# Optionals
36+
parser.add_argument('-l', metavar='--layer', required='-z' in sys.argv or '--fuzzer' in sys.argv, help='Layer that you want to use.')
3237

33-
parser.add_argument('-p', metavar='--ports', required='-p' in sys.argv or '--ports' in sys.argv, type=str, help='Specify ports.')
38+
parser.add_argument('-n', metavar='--number', required='-z' in sys.argv or '--fuzzer' in sys.argv, type=int, help='Number of packets.')
3439

35-
parser.add_argument('-full', action='store_true', help='Specify if you want the complete information or just the IP on shodan search.')
40+
parser.add_argument('-ng', metavar='--ngenerations', required='-z' in sys.argv or '--fuzzer' in sys.argv, type=int, help='Number of generations.')
3641

37-
parser.add_argument('-r', metavar='--record', required='-DNS' in sys.argv or '--DNS' in sys.argv, type=str, help='Record of a specific domain.')
42+
parser.add_argument('-g', action='store_true', help='Specify if you want to generate the file.')
3843

39-
parser.add_argument('-f', metavar='--file',type=str, help='Filename where you want to save the result.')
44+
parser.add_argument('-p', metavar='--ports', required='-b' in sys.argv or '--bgrabber' in sys.argv, type=str, help='Specify ports.')
4045

41-
#Defining args
46+
parser.add_argument('-u', action='store_true', help='Specify if you want the complete information or just the IP on shodan search.')
47+
48+
parser.add_argument('-r', metavar='--record', required='-d' in sys.argv or '--DNS' in sys.argv, type=str, help='Record of a specific domain.')
4249

50+
parser.add_argument('-f', metavar='--file', required='-o' in sys.argv or '--flooder' in sys.argv, type=str, help='Filename where you want to save the result.')
51+
52+
#Defining args
4353
args = parser.parse_args()
4454

4555
#Calls
46-
if args.DNS is not None:
47-
dns_utility.dns_scan(args.DNS, args.r, args.f)
48-
elif args.whois is not None:
49-
whois_utility.whois_scan(args.whois, args.f)
50-
elif args.shodan is not None:
51-
shodan_utility.shodan_search(args.shodan, args.f, args.full)
52-
elif args.bgrabber is not None:
53-
bannergrab_utility.banner_grabbing(args.bgrabber, args.p, args.f)
56+
if args.d is not None:
57+
dns_utility.dns_scan(args.d, args.r, args.f)
58+
elif args.w is not None:
59+
whois_utility.whois_scan(args.w, args.f)
60+
elif args.s is not None:
61+
shodan_utility.shodan_search(args.s, args.f, args.u)
62+
elif args.b is not None:
63+
bannergrab_utility.banner_grabbing(args.b, args.p, args.f)
64+
elif args.o is not None:
65+
flooder_utility.flooder_attack(args.o, args.g, args.f)
66+
elif args.z is not None:
67+
fuzzing_utility.fuzzing_attack(args.z, args.ng, args.n, args.l, args.f)
5468

5569
if __name__ == '__main__':
5670
main()

utility_scripts/flooder_utility.py

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,11 @@
11
#! /usr/bin/env python3
22

33
from scapy.all import IP, ICMP, wrpcap, rdpcap, sendpfast
4-
import sys
54

65
class flooder_attack(object):
76

8-
def check(self):
9-
if len(sys.argv) < 5:
10-
print('Usage: python3 pentesting-multitool flooder <mode> <number of packets (generator mode) or sends(flooder mode) <filename>\n'
11-
'<mode> : You can use it for generate a pcap file with an specified with \"generator\" or use it for do a flooding attack with \"flood\" \n')
12-
exit()
7+
def generator(self, n, filename):
138

14-
if sys.argv[2] == "generator":
15-
self.generator()
16-
elif sys.argv[2] == "flood":
17-
self.flooder()
18-
else:
19-
print("Invalid argument. (pentesting-multitool flooder <?>)")
20-
exit()
21-
22-
def generator(self):
23-
24-
n = int(sys.argv[3])
25-
filename = sys.argv[4]
269
time = 0.00114108 * n + 0.157758
2710
minutes = time/60
2811

@@ -33,10 +16,7 @@ def generator(self):
3316

3417
print('%s packets generated.' % (n))
3518

36-
def flooder(self):
37-
38-
n = int(sys.argv[3])
39-
filename = sys.argv[4]
19+
def flooder(self, n, filename):
4020

4121
print('Reading pcap file.')
4222
pkgs = rdpcap(filename)
@@ -46,6 +26,10 @@ def flooder(self):
4626
sendpfast(pkgs)
4727
print('Done, part %s of %s' % ((i + 1), n))
4828

49-
def __init__(self):
29+
def __init__(self, number, generator, filename):
5030
print('Initializing')
51-
self.check()
31+
if generator is True:
32+
self.generator(number, filename)
33+
else:
34+
self.flooder(number, filename)
35+
exit()

0 commit comments

Comments
 (0)