diff options
Diffstat (limited to 'src/main/java/com/it_jaros/jscanner/CliParser.java')
| -rw-r--r-- | src/main/java/com/it_jaros/jscanner/CliParser.java | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/src/main/java/com/it_jaros/jscanner/CliParser.java b/src/main/java/com/it_jaros/jscanner/CliParser.java deleted file mode 100644 index 7e27064..0000000 --- a/src/main/java/com/it_jaros/jscanner/CliParser.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.it_jaros.jscanner; - -import com.it_jaros.jscanner.scan.ScanOptions; - -import java.util.HashSet; -import java.util.Set; - -public class CliParser { - - public ScanOptions parseArgs(String[] args) { - if (args.length < 1 || args[0].trim().isEmpty()) { - throw new IllegalArgumentException("No argument given"); - } - - Set<String> hostsArgv = new HashSet<>(); - String hostsFile = null; - String ports = CliDefaults.PORTS; - boolean bannerRecognition = CliDefaults.BANNER_RECOGNITION; - boolean disableOnlineCheck = CliDefaults.DISABLE_HOST_CHECK; - boolean quiet = CliDefaults.QUIET; - boolean showFilteredPorts = CliDefaults.SHOW_FILTERED_PORTS; - int delayInMillis = CliDefaults.DELAY_IN_MILLIS; - int hostsLimit = CliDefaults.MAX_HOSTS_LIMIT; - int workersPerHostLimit = 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]; - if (!currentArg.startsWith("-")) { - hostsArgv.add(currentArg); - continue; - } - - switch (currentArg) { - case "--bannerRecognition", "-b": - bannerRecognition = true; - break; - case "--delay", "-d": - delayInMillis = parseIntOption(args, ++i, currentArg); - break; - case "--disableOnlineCheck", "-do": - disableOnlineCheck = true; - break; - case "--help", "-h": - printUsageHelp(); - throw new HelpRequested(); - case "--input", "-i": - hostsFile = getArgument(args, ++i, currentArg); - break; - case "--hostsLimit", "-hl": - hostsLimit = parseIntOption(args, ++i, currentArg); - break; - case "--workersPerHostLimit", "-whl": - workersPerHostLimit = parseIntOption(args, ++i, currentArg); - break; - case "--ports", "-p": - ports = getArgument(args, ++i, currentArg); - break; - case "--quiet", "-q": - quiet = true; - break; - case "--showFilteredPorts", "-sf": - showFilteredPorts = true; - break; - case "--socketLimit", "-sl": - socketLimit = parseIntOption(args, ++i, currentArg); - break; - case "--timeout", "-t": - timeoutInMillis = parseIntOption(args, ++i, currentArg); - break; - default: - throw new IllegalArgumentException("No such param " + currentArg); - } - } - - if (hostsArgv.isEmpty() && hostsFile == null) { - throw new IllegalArgumentException("No input provided. Check with --help for available options."); - } - - return new ScanOptions( - hostsArgv.stream().toList(), - hostsFile, - ports, - bannerRecognition, - disableOnlineCheck, - quiet, - showFilteredPorts, - delayInMillis, - hostsLimit, - workersPerHostLimit, - socketLimit, - timeoutInMillis - ); - } - - private String getArgument(String[] args, int index, String option) { - if (index >= args.length) { - throw new IllegalArgumentException(String.format("Missing argument for option %s", option)); - } - return args[index]; - } - - private int parseIntOption(String[] args, int index, String option) { - String value = getArgument(args, index, option); - try { - return Integer.parseInt(value); - } catch (NumberFormatException e) { - throw new IllegalArgumentException(String.format("Invalid argument %s for option %s", value, option)); - } - } - - public void printUsageHelp() { - StringBuilder usage = new StringBuilder(); - usage.append(""" - Usage: - java -jar jscanner.jar [OPTIONS] [<host>,...] - - Options: - """); - usage.append(""" - --bannerRecognition, -b:\t\tEnable banner recognition to find out which service is running behind port (Default: %b) - --delay, -d:\t\t\tWaiting period in millis for connection attempts for a host (Default: %d) - --disableOnlineCheck, -do:\t\tDon't check if Host is reachable (Default: %b) - --input, -i:\t\t\tRead file to get host targets to scan. If set to "-" than Stdin is read (Default: null) - --hostsLimit, -hl:\t\t\tMax number of hosts that are scanned in parallel (Default: %d) - --workersPerHostLimit, -whl:\tMax workers per host. (Default: %d) - --ports, -p:\t\t\tDefine ports to be scanned (Default: %s) - --quiet, -q:\t\t\tDo not output progress bar (Default: %b) - --showFilteredPorts, -sf:\t\tShow also filtered ports (Default: %b) - --socketLimit, -sl:\t\t\tSocket limit in total. You can not scan more ports than allowed here (Default: %d) - --timeout, -t:\t\t\tTimeout in millis per connection attempt, 0 means infinite (Default: %d) - """.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(""" - - Examples: - java -jar jscanner.jar localhost - java -jar jscanner.jar fd00::1 - """); - System.err.println(usage); - } -} |
