1
1
from argparse import ArgumentParser , Namespace
2
- from logging import info
2
+ from logging import info , error
3
+ from socket import gethostbyname
3
4
from sys import argv , exit
4
5
5
- from PyQt5 .QtWidgets import QApplication
6
-
7
- from icmpflood .gui .main_window import MainWindow
8
- from icmpflood .flooder_runner import FlooderConsoleRunner
6
+ from icmpflood .flooder_runner import FlooderRunner
9
7
10
8
11
9
def log_print ():
@@ -19,28 +17,34 @@ def log_print():
19
17
20
18
21
19
def launch_gui ():
22
- app = QApplication (argv )
23
- window = MainWindow ()
24
- window .show ()
25
- exit (app .exec_ ())
20
+ try :
21
+ from PyQt5 .QtWidgets import QApplication
22
+ from icmpflood .gui .main_window import MainWindow
23
+
24
+ app = QApplication (argv )
25
+ window = MainWindow ()
26
+ window .show ()
27
+ exit (app .exec_ ())
28
+
29
+ except ImportError as err :
30
+ error (msg = f'Failed while importing PyQt5 libraries: { err } ' )
31
+ error (msg = f'{ argument_parser .usage } ' )
26
32
27
33
28
34
def launch_cmd (cmd_options : Namespace ):
29
- FlooderConsoleRunner (
35
+ ip_address = gethostbyname (cmd_options .u ) if cmd_options .u else cmd_options .i
36
+ FlooderRunner (
30
37
threads_number = cmd_options .t ,
31
38
arguments = {
32
- 'ip ' : cmd_options . i ,
39
+ 'address ' : ip_address ,
33
40
'port' : cmd_options .p ,
34
- 'length ' : cmd_options .l ,
35
- 'frequency ' : cmd_options .f
41
+ 'delay ' : cmd_options .d ,
42
+ 'length ' : cmd_options .l
36
43
}
37
- ).run ()
38
-
44
+ ).launch_flooder ()
39
45
40
- if __name__ == "__main__" :
41
- log_print ()
42
46
43
- argumentParser = ArgumentParser (
47
+ argument_parser = ArgumentParser (
44
48
prog = 'ICMP-Flooder' ,
45
49
usage = '''python3 icmpflood.py { gui | cmd [options] }
46
50
There are two modes to use this simple application:
@@ -59,20 +63,22 @@ def launch_cmd(cmd_options: Namespace):
59
63
allow_abbrev = True
60
64
)
61
65
62
- subArgumentParser = argumentParser .add_subparsers (title = 'Script Modes' , dest = 'mode' , required = True )
66
+ sub_arg_parser = argument_parser .add_subparsers (title = 'Script Modes' , dest = 'mode' , required = True )
67
+ sub_arg_parser .add_parser ('gui' , help = 'Allows to run application with GUI interface.' )
68
+ cmd_args = sub_arg_parser .add_parser ('cmd' , help = 'Run application into terminal (print -h for more details).' )
63
69
64
- subArgumentParser .add_parser ('gui' , help = 'Allows to run application with GUI interface.' )
65
- cmd = subArgumentParser .add_parser ('cmd' , help = 'Run application into terminal (print -h for more details).' )
70
+ cmd_args .add_argument ('-u' , metavar = '--url' , help = 'Target url-address' , required = False , type = str )
71
+ cmd_args .add_argument ('-i' , metavar = '--ip' , help = 'Target ip-address' , required = False , type = str )
72
+ cmd_args .add_argument ('-p' , metavar = '--port' , help = 'Target port number (for ip-address)' ,
73
+ required = False , choices = range (0 , 65536 ), default = 80 , type = int )
66
74
67
- cmd .add_argument ('-u' , metavar = '--url' , help = 'Target url-address' , required = False , type = str )
68
- cmd .add_argument ('-i' , metavar = '--ip' , help = 'Target ip-address' , required = True , type = str )
69
- cmd .add_argument ('-p' , metavar = '--port' , help = 'Target address port number (for ip-address)' ,
70
- required = False , choices = range (0 , 65536 ), default = 80 , type = int )
75
+ cmd_args .add_argument ('-t' , metavar = '--threads' , help = 'Threads amount' , required = False , default = 1 , type = int )
76
+ cmd_args .add_argument ('-l' , metavar = '--length' , help = 'Packet frame length' , required = False , default = 60 , type = int )
77
+ cmd_args .add_argument ('-d' , metavar = '--delay' , help = 'Packet sending delay' , required = False , default = 0.1 , type = float )
71
78
72
- cmd .add_argument ('-t' , metavar = '--threads' , help = 'Threads amount' , required = False , default = 1 , type = int )
73
- cmd .add_argument ('-l' , metavar = '--length' , help = 'Packet frame length' , required = False , default = 60 , type = int )
74
- cmd .add_argument ('-f' , metavar = '--frequents' , help = 'Frequents of sending' , required = False , default = 0.1 , type = float )
75
79
76
- arguments = argumentParser .parse_args ()
80
+ if __name__ == "__main__" :
81
+ log_print ()
77
82
83
+ arguments = argument_parser .parse_args ()
78
84
launch_gui () if arguments .mode == "gui" else launch_cmd (arguments )
0 commit comments