diff options
| author | 2026-07-02 11:49:42 +0200 | |
|---|---|---|
| committer | 2026-07-09 09:59:28 +0200 | |
| commit | 53ad9b193e3c5fd2324edeca838e5a8e4cce7ed1 (patch) | |
| tree | feeae69ba9ae8f2c619a1d984f79a896c33c9cbf /src/main/java/com/it_jaros/jscanner/CliParser.java | |
| parent | 2624f889d5adadc592c015e31deeb32a8d0e3a23 (diff) | |
Added banner recognition parameter to enable it depending on use case
Diffstat (limited to 'src/main/java/com/it_jaros/jscanner/CliParser.java')
| -rw-r--r-- | src/main/java/com/it_jaros/jscanner/CliParser.java | 61 |
1 files changed, 31 insertions, 30 deletions
diff --git a/src/main/java/com/it_jaros/jscanner/CliParser.java b/src/main/java/com/it_jaros/jscanner/CliParser.java index 8cc4a61..afad4b7 100644 --- a/src/main/java/com/it_jaros/jscanner/CliParser.java +++ b/src/main/java/com/it_jaros/jscanner/CliParser.java @@ -6,21 +6,22 @@ import java.util.Set; public class CliParser { public ScanOptions parseArgs(String[] args) { - if (args.length < 1 || args[0].trim().equals("")) { + if (args.length < 1 || args[0].trim().isEmpty()) { throw new IllegalArgumentException("No argument given"); } Set<String> hostsArgv = new HashSet<>(); - int socketLimit = CliDefaults.SOCKET_LIMIT; - int delayInMillis = CliDefaults.DELAY_IN_MILLIS; - int timeoutInMillis = CliDefaults.TIMEOUT_IN_MILLIS; - int maxWorkersPerHost = CliDefaults.MAX_WORKERS_PER_HOST; - int maxHostsLimit = CliDefaults.MAX_HOSTS_LIMIT; + String hostsFile = null; String ports = CliDefaults.PORTS; - boolean showFilteredPorts = CliDefaults.SHOW_FILTERED_PORTS; + boolean bannerRecognition = CliDefaults.BANNER_RECOGNITION; boolean disableOnlineCheck = CliDefaults.DISABLE_HOST_CHECK; boolean quiet = CliDefaults.QUIET; - String hostsFile = null; + boolean showFilteredPorts = CliDefaults.SHOW_FILTERED_PORTS; + int delayInMillis = CliDefaults.DELAY_IN_MILLIS; + int maxHostsLimit = CliDefaults.MAX_HOSTS_LIMIT; + int maxWorkersPerHost = CliDefaults.MAX_WORKERS_PER_HOST; + int socketLimit = CliDefaults.SOCKET_LIMIT; + int timeoutInMillis = CliDefaults.TIMEOUT_IN_MILLIS; for (int i = 0; i < args.length; i++) { final String currentArg = args[i]; @@ -30,49 +31,48 @@ public class CliParser { } switch (currentArg) { - case "--help", "-h": - usageAndExit(); - break; - case "--socketLimit", "-sl": - socketLimit = parseIntOption(args, ++i, currentArg); + case "--bannerRecognition", "-b": + bannerRecognition = true; break; case "--delay", "-d": delayInMillis = parseIntOption(args, ++i, currentArg); break; - case "--timeout", "-t": - timeoutInMillis = parseIntOption(args, ++i, currentArg); + case "--disableOnlineCheck", "-do": + disableOnlineCheck = true; break; - case "--maxWorkersPerHost", "-mh": - maxWorkersPerHost = parseIntOption(args, ++i, currentArg); + case "--help", "-h": + usageAndExit(); + break; + case "--input", "-i": + hostsFile = requireValue(args, ++i, currentArg); break; case "--maxHostsLimit", "-m": maxHostsLimit = parseIntOption(args, ++i, currentArg); break; + case "--maxWorkersPerHost", "-mh": + maxWorkersPerHost = parseIntOption(args, ++i, currentArg); + break; case "--ports", "-p": ports = requireValue(args, ++i, currentArg); break; + case "--quiet", "-q": + quiet = true; + break; case "--showFilteredPorts", "-sf": showFilteredPorts = true; break; - case "--disableOnlineCheck", "-do": - disableOnlineCheck = true; - break; - case "--input", "-i": - hostsFile = requireValue(args, ++i, currentArg); + case "--socketLimit", "-sl": + socketLimit = parseIntOption(args, ++i, currentArg); break; - case "--quiet", "-q": - quiet = true; + case "--timeout", "-t": + timeoutInMillis = parseIntOption(args, ++i, currentArg); break; default: throw new IllegalArgumentException("No such param " + currentArg); } } - System.out.printf( - "Parsed arguments: hostsArgv('%s'), ports(%s), socketLimit(%s), delayInMillis(%s), timeoutInMillis(%s), maxWorkersPerHost(%s), maxHostsLimit(%s), showFilteredPorts(%s), disableOnlineCheck(%s), file(%s), quiet(%b) %n", - hostsArgv, ports, socketLimit, delayInMillis, timeoutInMillis, maxWorkersPerHost, maxHostsLimit, showFilteredPorts, disableOnlineCheck, hostsFile, quiet); - - return new ScanOptions(hostsArgv.stream().toList(), socketLimit, delayInMillis, timeoutInMillis, maxWorkersPerHost, maxHostsLimit, ports, showFilteredPorts, disableOnlineCheck, hostsFile, quiet); + return new ScanOptions(hostsArgv.stream().toList(), socketLimit, delayInMillis, timeoutInMillis, maxWorkersPerHost, maxHostsLimit, ports, showFilteredPorts, disableOnlineCheck, hostsFile, quiet, bannerRecognition); } private String requireValue(String[] args, int index, String option) { @@ -100,6 +100,7 @@ public class CliParser { Options: """); usage.append(""" + --bannerRecognition, -b:\tEnable banner recognition to find out which service is running behind port (Default :%b) --delay, -d:\t\tWaiting period in millis for connection attempts for a host (Default: %d) --disableOnlineCheck, -do:\tDon't check if Host is reachable (Default: %b) --input, -i:\t\tRead file to get host targets to scan (Default: null) @@ -110,7 +111,7 @@ public class CliParser { --showFilteredPorts, -sf:\tShow also filtered ports (Default: %b) --socketLimit, -sl:\t\tSocket limit in total. You can not scan more ports than allowed here (Default: %d) --timeout, -t:\t\tTimeout in millis per connection attempt, 0 means infinite (Default: %d) - """.formatted(CliDefaults.DELAY_IN_MILLIS, CliDefaults.DISABLE_HOST_CHECK, CliDefaults.MAX_HOSTS_LIMIT, CliDefaults.MAX_WORKERS_PER_HOST, CliDefaults.PORTS, CliDefaults.QUIET, CliDefaults.SHOW_FILTERED_PORTS, CliDefaults.SOCKET_LIMIT, CliDefaults.TIMEOUT_IN_MILLIS) + """.formatted(CliDefaults.BANNER_RECOGNITION, CliDefaults.DELAY_IN_MILLIS, CliDefaults.DISABLE_HOST_CHECK, CliDefaults.MAX_HOSTS_LIMIT, CliDefaults.MAX_WORKERS_PER_HOST, CliDefaults.PORTS, CliDefaults.QUIET, CliDefaults.SHOW_FILTERED_PORTS, CliDefaults.SOCKET_LIMIT, CliDefaults.TIMEOUT_IN_MILLIS) ); usage.append(""" |
