commit 9eaeff3ece7059b0a6fe93ed118524ba78ddcffd
parent 05cc7ca4b808686a34ddd1bc359745130452cc96
Author: Matthias Jaros <jaros@mailbox.org>
Date: Mon, 23 Mar 2026 12:38:33 +0100
Added cli option to be able to select whether to display blocked ports
or not
Diffstat:
3 files changed, 17 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/it_jaros/network_scanner/App.java b/src/main/java/com/it_jaros/network_scanner/App.java
@@ -11,7 +11,7 @@ public class App {
ScanOptions options = cliParser.parseArgs(args);
Scanner scanner = new Scanner(options.openSocketLimit(), options.timeoutInMillis(),
options.delayInMillis(), options.maxWorkersPerHost(), options.maxTargetsLimit());
- printResults(scanner.scan(options));
+ printResults(scanner.scan(options), options.showBlockedPorts());
} catch (IllegalArgumentException e) {
System.out.printf("Error while parsing arguments: %s", e.getMessage());
cliParser.usageAndExit();
@@ -20,12 +20,12 @@ public class App {
}
}
- public static void printResults(List<ScanResult> results) {
- results.forEach(App::printResult);
+ public static void printResults(List<ScanResult> results, boolean showBlockedPorts) {
+ results.forEach((ScanResult r) -> printResult(r, showBlockedPorts));
}
- private static void printResult(ScanResult result) {
- if (result.openPorts().isEmpty() && result.blockedPorts().isEmpty()) {
+ private static void printResult(ScanResult result, boolean showBlockedPorts) {
+ if (result.openPorts().isEmpty() && (!showBlockedPorts || result.blockedPorts().isEmpty())) {
return;
}
@@ -33,7 +33,7 @@ public class App {
if (!result.openPorts().isEmpty()) {
System.out.println("\topen:\t" + map(result.openPorts()));
}
- if (!result.blockedPorts().isEmpty()) {
+ if (showBlockedPorts && !result.blockedPorts().isEmpty()) {
System.out.println("\tblocked:\t" + map(result.blockedPorts()));
}
System.out.println();
diff --git a/src/main/java/com/it_jaros/network_scanner/CliParser.java b/src/main/java/com/it_jaros/network_scanner/CliParser.java
@@ -4,12 +4,12 @@ import java.util.HashSet;
import java.util.Set;
public class CliParser {
-
+
public ScanOptions parseArgs(String[] args) {
if (args.length < 1 || args[0].trim().equals("")) {
throw new IllegalArgumentException("No argument given");
}
-
+
Set<String> targets = new HashSet<>();
int socketLimit = 1000;
int delayInMillis = 0;
@@ -17,6 +17,7 @@ public class CliParser {
int maxWorkersPerHost = 1000;
int maxTargetsLimit = 10;
String ports = "1-1024";
+ boolean showBlockedPorts = false;
for (int i = 0; i < args.length; i++) {
final String currentArg = args[i];
if (!currentArg.startsWith("-")) {
@@ -47,6 +48,9 @@ public class CliParser {
case "--ports", "-p":
ports = args[++i];
break;
+ case "--showBlocked", "-sb":
+ showBlockedPorts = true;
+ break;
default:
throw new IllegalArgumentException("No such param " + currentArg);
}
@@ -57,10 +61,10 @@ public class CliParser {
}
System.out.printf(
- "Parsed arguments: targets('%s'), ports(%s), socketLimit(%s), delayInMillis(%s), timeoutInMillis(%s), maxWorkersPerHost(%s), maxTargetsLimit(%s) %n",
- targets, ports, socketLimit, delayInMillis, timeoutInMillis, maxWorkersPerHost, maxTargetsLimit);
-
- return new ScanOptions(targets.stream().toList(), socketLimit, delayInMillis, timeoutInMillis, maxWorkersPerHost, maxTargetsLimit, ports);
+ "Parsed arguments: targets('%s'), ports(%s), socketLimit(%s), delayInMillis(%s), timeoutInMillis(%s), maxWorkersPerHost(%s), maxTargetsLimit(%s), showBlockedPorts(%s) %n",
+ targets, ports, socketLimit, delayInMillis, timeoutInMillis, maxWorkersPerHost, maxTargetsLimit, showBlockedPorts);
+
+ return new ScanOptions(targets.stream().toList(), socketLimit, delayInMillis, timeoutInMillis, maxWorkersPerHost, maxTargetsLimit, ports, showBlockedPorts);
}
public void usageAndExit() {
diff --git a/src/main/java/com/it_jaros/network_scanner/ScanOptions.java b/src/main/java/com/it_jaros/network_scanner/ScanOptions.java
@@ -2,4 +2,4 @@ package com.it_jaros.network_scanner;
import java.util.List;
-public record ScanOptions(List<String> targets, int openSocketLimit, int delayInMillis, int timeoutInMillis, int maxWorkersPerHost, int maxTargetsLimit, String ports) {}
+public record ScanOptions(List<String> targets, int openSocketLimit, int delayInMillis, int timeoutInMillis, int maxWorkersPerHost, int maxTargetsLimit, String ports, boolean showBlockedPorts) {}