diff options
| author | 2026-03-23 16:37:13 +0100 | |
|---|---|---|
| committer | 2026-07-09 09:59:28 +0200 | |
| commit | ba0c849b95c2752a592b8a6c3c4f9ae3eb5a03f6 (patch) | |
| tree | 68c01c9dd78413b1fea061a62b2acb05946003dc | |
| parent | 8b018babbe933558c445ad76bf64eb21102df723 (diff) | |
Added cli option for online check
5 files changed, 16 insertions, 8 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 index a06b88a..acb29a6 100644 --- a/src/main/java/com/it_jaros/network_scanner/App.java +++ b/src/main/java/com/it_jaros/network_scanner/App.java @@ -10,7 +10,7 @@ public class App { try { ScanOptions options = cliParser.parseArgs(args); Scanner scanner = new Scanner(options.openSocketLimit(), options.timeoutInMillis(), - options.delayInMillis(), options.maxWorkersPerHost(), options.maxTargetsLimit()); + options.delayInMillis(), options.maxWorkersPerHost(), options.maxTargetsLimit(), options.disableTargetCheck()); printResults(scanner.scan(options), options.showFilteredPorts()); } catch (IllegalArgumentException e) { System.out.printf("Error while parsing arguments: %s", e.getMessage()); diff --git a/src/main/java/com/it_jaros/network_scanner/CliDefaults.java b/src/main/java/com/it_jaros/network_scanner/CliDefaults.java index de7bf3d..1a6a3eb 100644 --- a/src/main/java/com/it_jaros/network_scanner/CliDefaults.java +++ b/src/main/java/com/it_jaros/network_scanner/CliDefaults.java @@ -8,4 +8,5 @@ public class CliDefaults { public static final int MAX_TARGETS_LIMIT = 10; public static final String PORTS = "1-1024"; public static final boolean SHOW_FILTERED_PORTS = false; + public static final boolean DISABLE_TARGET_CHECK = false; } diff --git a/src/main/java/com/it_jaros/network_scanner/CliParser.java b/src/main/java/com/it_jaros/network_scanner/CliParser.java index cebd7c4..e60f5f8 100644 --- a/src/main/java/com/it_jaros/network_scanner/CliParser.java +++ b/src/main/java/com/it_jaros/network_scanner/CliParser.java @@ -18,6 +18,7 @@ public class CliParser { int maxTargetsLimit = CliDefaults.MAX_TARGETS_LIMIT; String ports = CliDefaults.PORTS; boolean showFilteredPorts = CliDefaults.SHOW_FILTERED_PORTS; + boolean disableTargetCheck = CliDefaults.SHOW_FILTERED_PORTS; for (int i = 0; i < args.length; i++) { final String currentArg = args[i]; @@ -52,6 +53,9 @@ public class CliParser { case "--showFilteredPorts", "-sf": showFilteredPorts = true; break; + case "--disableTargetCheck", "-dt": + disableTargetCheck = true; + break; default: throw new IllegalArgumentException("No such param " + currentArg); } @@ -62,10 +66,10 @@ public class CliParser { } System.out.printf( - "Parsed arguments: targets('%s'), ports(%s), socketLimit(%s), delayInMillis(%s), timeoutInMillis(%s), maxWorkersPerHost(%s), maxTargetsLimit(%s), showFilteredPorts(%s) %n", - targets, ports, socketLimit, delayInMillis, timeoutInMillis, maxWorkersPerHost, maxTargetsLimit, showFilteredPorts); + "Parsed arguments: targets('%s'), ports(%s), socketLimit(%s), delayInMillis(%s), timeoutInMillis(%s), maxWorkersPerHost(%s), maxTargetsLimit(%s), showFilteredPorts(%s), disableTargetCheck(%s) %n", + targets, ports, socketLimit, delayInMillis, timeoutInMillis, maxWorkersPerHost, maxTargetsLimit, showFilteredPorts, disableTargetCheck); - return new ScanOptions(targets.stream().toList(), socketLimit, delayInMillis, timeoutInMillis, maxWorkersPerHost, maxTargetsLimit, ports, showFilteredPorts); + return new ScanOptions(targets.stream().toList(), socketLimit, delayInMillis, timeoutInMillis, maxWorkersPerHost, maxTargetsLimit, ports, showFilteredPorts, disableTargetCheck); } public void usageAndExit() { @@ -81,6 +85,7 @@ public class CliParser { --maxWorkersPerHost, -wh:\tVirtual Worker Threads run per target. Higher doesn't mean necessarily faster. But the more you use the more RAM is required (Default: 1000) --maxTargetsLimit, -tl:\\tMax number of targets that are scanned at the same time (Default: 10) --showFilteredPorts, -sf:\\\\tShow also filtered ports + --disableTargetCheck, -dt:\\\\\\\\tDon't check if target is reachable Examples: java -jar scanner.jar localhost diff --git a/src/main/java/com/it_jaros/network_scanner/ScanOptions.java b/src/main/java/com/it_jaros/network_scanner/ScanOptions.java index 4e48202..c383676 100644 --- 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, boolean showFilteredPorts) {} +public record ScanOptions(List<String> targets, int openSocketLimit, int delayInMillis, int timeoutInMillis, int maxWorkersPerHost, int maxTargetsLimit, String ports, boolean showFilteredPorts, boolean disableTargetCheck) {} diff --git a/src/main/java/com/it_jaros/network_scanner/Scanner.java b/src/main/java/com/it_jaros/network_scanner/Scanner.java index 85cc46a..3d85ec2 100644 --- a/src/main/java/com/it_jaros/network_scanner/Scanner.java +++ b/src/main/java/com/it_jaros/network_scanner/Scanner.java @@ -19,13 +19,15 @@ public class Scanner { private final long delayInNanos; private final int maxWorkersPerHost; private final int maxTargetsLimit; + private final boolean disableTargetCheck; - public Scanner(int socketLimit, int timeoutInMillis, int delayInMillis, int maxWorkersPerHost, int maxTargetsLimit) { + public Scanner(int socketLimit, int timeoutInMillis, int delayInMillis, int maxWorkersPerHost, int maxTargetsLimit, boolean disableTargetCheck) { this.timeoutInMillis = timeoutInMillis; this.delayInNanos = TimeUnit.MILLISECONDS.toNanos(Math.max(0, delayInMillis)); this.socketLimit = new Semaphore(socketLimit); this.maxWorkersPerHost = maxWorkersPerHost; this.maxTargetsLimit = maxTargetsLimit; + this.disableTargetCheck = disableTargetCheck; } public List<ScanResult> scan(ScanOptions target) { @@ -79,7 +81,7 @@ public class Scanner { Progress progress = new Progress(target, portRange.getTotal(), new AtomicInteger(), new AtomicInteger(), new AtomicInteger()); progressBar.submit(progress); - if(!checkHostOnline(target)) { + if(!disableTargetCheck && !checkHostOnline(target)) { // Visually show that this host is basically done progress.done().set(progress.total()); return new ScanResult(target, openPorts, filteredPorts); @@ -135,7 +137,7 @@ public class Scanner { private boolean checkHostOnline(String target) { try { - return InetAddress.getByName(target).isReachable(2000); + return InetAddress.getByName(target).isReachable(timeoutInMillis); } catch (IOException e) { // something went wrong } |
