Skip to content

Commit 0983f79

Browse files
dns: allow DNS options to be called anywhere on the command line
1 parent 12a7fa0 commit 0983f79

1 file changed

Lines changed: 11 additions & 10 deletions

File tree

nxc/cli.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)