jscanner

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

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:
Msrc/main/java/com/it_jaros/network_scanner/App.java | 12++++++------
Msrc/main/java/com/it_jaros/network_scanner/CliParser.java | 16++++++++++------
Msrc/main/java/com/it_jaros/network_scanner/ScanOptions.java | 2+-
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) {}