jscanner

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

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:
Msrc/main/java/com/it_jaros/jscanner/CliDefaults.java | 2+-
Msrc/main/java/com/it_jaros/jscanner/CliParser.java | 43+++++++++++++++++++++++++------------------
Msrc/main/java/com/it_jaros/jscanner/Scanner.java | 3++-
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);