From 088889a95b7c0a1dcd70e07f71def437d1cccd1c Mon Sep 17 00:00:00 2001 From: Matthias Jaros Date: Mon, 10 Aug 2026 21:25:03 +0200 Subject: Instead of reading a string as banner read bytes and then in ServiceDetector convert to string --- src/main/java/com/it_jaros/jscanner/ServiceDetector.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/main/java/com/it_jaros/jscanner/ServiceDetector.java') diff --git a/src/main/java/com/it_jaros/jscanner/ServiceDetector.java b/src/main/java/com/it_jaros/jscanner/ServiceDetector.java index 425372c..4d4f76e 100644 --- a/src/main/java/com/it_jaros/jscanner/ServiceDetector.java +++ b/src/main/java/com/it_jaros/jscanner/ServiceDetector.java @@ -1,5 +1,6 @@ package com.it_jaros.jscanner; +import java.nio.charset.StandardCharsets; import java.util.List; import java.util.regex.Pattern; @@ -20,13 +21,14 @@ public class ServiceDetector { new ServicePattern(ServiceType.SSH, Pattern.compile("(?i)^SSH-")) ); - public static ServiceType detect(String banner) { - if (banner == null || banner.isBlank()) { + public static ServiceType detect(byte[] banner) { + if (banner == null || banner.length == 0) { return ServiceType.UNKNOWN; } + String bannerString = new String(banner, StandardCharsets.UTF_8); for (ServicePattern servicePattern : patterns) { - if (servicePattern.matches(banner)) { + if (servicePattern.matches(bannerString)) { return servicePattern.serviceType(); } } -- cgit v1.3.1