From 8b018babbe933558c445ad76bf64eb21102df723 Mon Sep 17 00:00:00 2001 From: Matthias Jaros Date: Mon, 23 Mar 2026 16:19:04 +0100 Subject: Added host online check --- .../java/com/it_jaros/network_scanner/CliDefaults.java | 2 +- .../java/com/it_jaros/network_scanner/Scanner.java | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) (limited to 'src/main') 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 6164aff..de7bf3d 100644 --- a/src/main/java/com/it_jaros/network_scanner/CliDefaults.java +++ b/src/main/java/com/it_jaros/network_scanner/CliDefaults.java @@ -5,7 +5,7 @@ public class CliDefaults { public static final int DELAY_IN_MILLIS = 0; public static final int TIMEOUT_IN_MILLIS = 300; public static final int MAX_WORKERS_PER_HOST = 1000; - public static final int MAX_TARGETS_LIMIT = 3; + public static final int MAX_TARGETS_LIMIT = 10; public static final String PORTS = "1-1024"; public static final boolean SHOW_FILTERED_PORTS = false; } 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 8144d6b..85cc46a 100644 --- a/src/main/java/com/it_jaros/network_scanner/Scanner.java +++ b/src/main/java/com/it_jaros/network_scanner/Scanner.java @@ -76,9 +76,15 @@ public class Scanner { BitSet openPorts = new BitSet(PortRange.MAX_PORT); BitSet filteredPorts = new BitSet(PortRange.MAX_PORT); - Progress progress = new Progress(target, portRange.getTotal(), new AtomicInteger(), new AtomicInteger(), new AtomicInteger() ); + Progress progress = new Progress(target, portRange.getTotal(), new AtomicInteger(), new AtomicInteger(), new AtomicInteger()); progressBar.submit(progress); + if(!checkHostOnline(target)) { + // Visually show that this host is basically done + progress.done().set(progress.total()); + return new ScanResult(target, openPorts, filteredPorts); + } + try (ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor()) { List> futures = new ArrayList<>(); while (portRange.hasNext()) { @@ -127,6 +133,16 @@ public class Scanner { return new ScanResult(target, openPorts, filteredPorts); } + private boolean checkHostOnline(String target) { + try { + return InetAddress.getByName(target).isReachable(2000); + } catch (IOException e) { + // something went wrong + } + + return false; + } + private void waitForSlot(AtomicLong scanSlotFactory) { if (delayInNanos > 0) { long slot = scanSlotFactory.getAndAdd(delayInNanos); -- cgit v1.3.1