@@ -25,19 +25,26 @@ def gen_cli_args():
2525 CODENAME = "nxc4u"
2626 nxc_logger .debug (f"NXC VERSION: { VERSION } - { CODENAME } - { COMMIT } " )
2727
28- generic_parser = argparse .ArgumentParser (add_help = False )
28+ generic_parser = argparse .ArgumentParser (add_help = False , formatter_class = DisplayDefaultsNotNone )
2929 generic_group = generic_parser .add_argument_group ("Generic" , "Generic options for nxc across protocols" )
3030 generic_group .add_argument ("-t" , "--threads" , type = int , dest = "threads" , default = 256 , help = "set how many concurrent threads to use" )
3131 generic_group .add_argument ("--timeout" , default = None , type = int , help = "max timeout in seconds of each thread" )
3232 generic_group .add_argument ("--jitter" , metavar = "INTERVAL" , type = str , help = "sets a random delay between each authentication" )
3333
34- output_parser = argparse .ArgumentParser (add_help = False )
34+ output_parser = argparse .ArgumentParser (add_help = False , formatter_class = DisplayDefaultsNotNone )
3535 output_group = output_parser .add_argument_group ("Output" , "Options to set verbosity levels and control output" )
3636 output_group .add_argument ("--verbose" , action = "store_true" , help = "enable verbose output" )
3737 output_group .add_argument ("--debug" , action = "store_true" , help = "enable debug level information" )
3838 output_group .add_argument ("--no-progress" , action = "store_true" , help = "do not displaying progress bar during scan" )
3939 output_group .add_argument ("--log" , metavar = "LOG" , help = "export result into a custom file" )
4040
41+ dns_parser = argparse .ArgumentParser (add_help = False , formatter_class = DisplayDefaultsNotNone )
42+ dns_group = dns_parser .add_argument_group ("DNS" )
43+ dns_group .add_argument ("-6" , dest = "force_ipv6" , action = "store_true" , help = "Enable force IPv6" )
44+ dns_group .add_argument ("--dns-server" , action = "store" , help = "Specify DNS server (default: Use hosts file & System DNS)" )
45+ dns_group .add_argument ("--dns-tcp" , action = "store_true" , help = "Use TCP instead of UDP for DNS queries" )
46+ dns_group .add_argument ("--dns-timeout" , action = "store" , type = int , default = 3 , help = "DNS query timeout in seconds" )
47+
4148 parser = argparse .ArgumentParser (
4249 description = rf"""
4350 . .
@@ -59,17 +66,11 @@ def gen_cli_args():
5966 { highlight ('Commit' , 'red' )} : { highlight (COMMIT )}
6067 """ ,
6168 formatter_class = RawTextHelpFormatter ,
62- parents = [generic_parser , output_parser ]
69+ parents = [generic_parser , output_parser , dns_parser ]
6370 )
6471
6572 parser .add_argument ("--version" , action = "store_true" , help = "Display nxc version" )
6673
67- dns_parser = parser .add_argument_group ("DNS" )
68- dns_parser .add_argument ("-6" , dest = "force_ipv6" , action = "store_true" , help = "Enable force IPv6" )
69- dns_parser .add_argument ("--dns-server" , action = "store" , help = "Specify DNS server (default: Use hosts file & System DNS)" )
70- dns_parser .add_argument ("--dns-tcp" , action = "store_true" , help = "Use TCP instead of UDP for DNS queries" )
71- dns_parser .add_argument ("--dns-timeout" , action = "store" , type = int , default = 3 , help = "DNS query timeout in seconds (default: %(default)s)" )
72-
7374 # we do module arg parsing here so we can reference the module_list attribute below
7475 module_parser = argparse .ArgumentParser (add_help = False , formatter_class = DisplayDefaultsNotNone )
7576 mgroup = module_parser .add_argument_group ("Modules" , "Options for nxc modules" )
@@ -80,7 +81,7 @@ def gen_cli_args():
8081
8182 subparsers = parser .add_subparsers (title = "Available Protocols" , dest = "protocol" )
8283
83- std_parser = argparse .ArgumentParser (add_help = False , parents = [generic_parser , output_parser ], formatter_class = DisplayDefaultsNotNone )
84+ std_parser = argparse .ArgumentParser (add_help = False , parents = [generic_parser , output_parser , dns_parser ], formatter_class = DisplayDefaultsNotNone )
8485 std_parser .add_argument ("target" , nargs = "+" if not (module_parser .parse_known_args ()[0 ].list_modules or module_parser .parse_known_args ()[0 ].show_module_options ) else "*" , type = str , help = "the target IP(s), range(s), CIDR(s), hostname(s), FQDN(s), file(s) containing a list of targets, NMap XML or .Nessus file(s)" )
8586 credential_group = std_parser .add_argument_group ("Authentication" , "Options for authenticating" )
8687 credential_group .add_argument ("-u" , "--username" , metavar = "USERNAME" , dest = "username" , nargs = "+" , default = [], help = "username(s) or file(s) containing usernames" )
0 commit comments