commit 8e72b7e0e500af630cb0999a02bfda17e066f048
parent 1080e5e415824804fab289e04a67a00081ed372d
Author: Matthias Jaros <jaros@mailbox.org>
Date: Wed, 1 Jul 2026 18:49:38 +0200
CLI options sorted, renamed and description fixed
Fixed wrong default values by using one source of truth
Diffstat:
3 files changed, 28 insertions(+), 20 deletions(-)
diff --git a/src/main/java/com/it_jaros/jscanner/CliDefaults.java b/src/main/java/com/it_jaros/jscanner/CliDefaults.java
@@ -3,7 +3,7 @@ package com.it_jaros.jscanner;
public class CliDefaults {
public static final int SOCKET_LIMIT = 1000;
public static final int DELAY_IN_MILLIS = 0;
- public static final int TIMEOUT_IN_MILLIS = 300;
+ public static final int TIMEOUT_IN_MILLIS = 1000;
public static final int MAX_WORKERS_PER_HOST = 1000;
public static final int MAX_HOSTS_LIMIT = 10;
public static final String PORTS = "1-1024";
diff --git a/src/main/java/com/it_jaros/jscanner/CliParser.java b/src/main/java/com/it_jaros/jscanner/CliParser.java
@@ -41,10 +41,10 @@ public class CliParser {
case "--timeout", "-t":
timeoutInMillis = parseIntOption(args, ++i, currentArg);
break;
- case "--maxWorkersPerHost", "-wh":
+ case "--maxWorkersPerHost", "-mh":
maxWorkersPerHost = parseIntOption(args, ++i, currentArg);
break;
- case "--maxHostsLimit", "-tl":
+ case "--maxHostsLimit", "-m":
maxHostsLimit = parseIntOption(args, ++i, currentArg);
break;
case "--ports", "-p":
@@ -53,10 +53,10 @@ public class CliParser {
case "--showFilteredPorts", "-sf":
showFilteredPorts = true;
break;
- case "--disableOnlineCheck", "-dt":
+ case "--disableOnlineCheck", "-do":
disableOnlineCheck = true;
break;
- case "--file", "-f":
+ case "--input", "-i":
hostsFile = requireValue(args, ++i, currentArg);
break;
default:
@@ -88,25 +88,32 @@ public class CliParser {
}
public void usageAndExit() {
- System.err.println("""
+ StringBuilder usage = new StringBuilder();
+ usage.append("""
Usage:
- java -jar scanner.jar [OPTIONS] <host>
+ java -jar jscanner.jar [OPTIONS] [<host>,...]
Options:
- --delay, -d:\t\tWaiting period in millis for connection attempts for a host (Default: 0)
- --socketLimit, -sl:\t\tSocket Connection limit for a host (Default: 1000)
- --timeout, -t:\t\tTimeout per connection attempt, 0 means infinite (Default: 1000)
- --ports, -p:\t\tPorts to be scanned
- --maxWorkersPerHost, -wh:\tVirtual Worker Threads run per Host. Higher doesn't mean necessarily faster. But the more you use the more RAM is required (Default: 1000)
- --maxHostsLimit, -tl:\tMax number of Hosts that are scanned at the same time (Default: 10)
- --showFilteredPorts, -sf:\tShow also filtered ports
- --disableOnlineCheck, -dt:\tDon't check if Host is reachable
- --file, -f:\t\t\tRead hosts to scan from file instead of stdin
+ """);
+ usage.append("""
+ --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)
+ --maxHostsLimit, -m:\tMax number of hosts that are scanned at the same time (Default: %d)
+ --maxWorkersPerHost, -mh:\tVirtual Worker Threads run per Host. Higher doesn't mean necessarily faster. But the more you use the more RAM is required (Default: %d)
+ --ports, -p:\t\tDefine ports to be scanned (Default: %s)
+ --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.SHOW_FILTERED_PORTS, CliDefaults.SOCKET_LIMIT, CliDefaults.TIMEOUT_IN_MILLIS)
+ );
+ usage.append("""
Examples:
- java -jar scanner.jar localhost
- java -jar scanner.jar fd00::1
+ java -jar jscanner.jar localhost
+ java -jar jscanner.jar fd00::1
""");
- System.exit(1);
+ System.err.println(usage);
+ System.exit(0);
}
}
diff --git a/src/main/java/com/it_jaros/jscanner/Scanner.java b/src/main/java/com/it_jaros/jscanner/Scanner.java
@@ -19,6 +19,8 @@ import java.util.stream.Stream;
public class Scanner {
+ private static final int READ_BUFFER_SIZE = 1024;
+
private final Counter counter = new Counter();
private final ProgressBar progressBar = new ProgressBar();
private final Semaphore socketLimit;
@@ -219,7 +221,6 @@ public class Scanner {
}
private String getBanner(Socket socket) {
- int READ_BUFFER_SIZE = 1024;
byte[] buffer = new byte[READ_BUFFER_SIZE];
try (InputStream input = socket.getInputStream()) {
socket.setSoTimeout(timeoutInMillis);