summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Matthias Jaros <jarlucmat@mailbox.org>2026-07-01 18:49:38 +0200
committerGravatar Matthias Jaros <jarlucmat@mailbox.org>2026-07-09 09:59:28 +0200
commit928e1b0342dce2654d59e8f2980d228e77cf8a95 (patch)
tree026c7166cba923ede7aaf9e33433a7379ad7cb8b /src
parent2bb2b0e64f3e3f1b9c4fa15dac856f784502d96d (diff)
CLI options sorted, renamed and description fixed
Fixed wrong default values by using one source of truth
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/it_jaros/jscanner/CliDefaults.java2
-rw-r--r--src/main/java/com/it_jaros/jscanner/CliParser.java43
-rw-r--r--src/main/java/com/it_jaros/jscanner/Scanner.java3
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
index ee24660..d01e528 100644
--- 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
index bd25acc..dd6e3d0 100644
--- 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
index 1c9b8ea..e8cd9e8 100644
--- 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);