From 3fe789ec0d7fc6dd343ac80cb97cf36ed6614553 Mon Sep 17 00:00:00 2001 From: Chvalov Date: Fri, 31 May 2024 02:14:06 +0300 Subject: [PATCH 1/2] Fix: Added fallback decoding for Base64 encoded strings - Updated `importWStalker` method to handle both standard and URL-safe Base64 encoded strings. - Standard Base64 decoding is attempted first, with a fallback to URL-safe decoding if an IllegalArgumentException is thrown. This change addresses the issue where some Base64 encoded strings were causing decoding failures due to illegal characters. --- .../loggerplusplus/imports/LoggerImport.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/nccgroup/loggerplusplus/imports/LoggerImport.java b/src/main/java/com/nccgroup/loggerplusplus/imports/LoggerImport.java index 1792fb1..60d97ca 100644 --- a/src/main/java/com/nccgroup/loggerplusplus/imports/LoggerImport.java +++ b/src/main/java/com/nccgroup/loggerplusplus/imports/LoggerImport.java @@ -97,10 +97,24 @@ public static ArrayList importWStalker() { String[] v = line.split(","); // Format: "base64(request),base64(response),url" String url = v[3]; - Base64Utils b64Decoder = LoggerPlusPlus.montoya.utilities().base64Utils(); HttpService httpService = HttpService.httpService(url); - HttpRequest httpRequest = HttpRequest.httpRequest(httpService, b64Decoder.decode(v[0], Base64DecodingOptions.URL)); - HttpResponse httpResponse = HttpResponse.httpResponse(b64Decoder.decode(v[1], Base64DecodingOptions.URL)); + Base64Utils b64Decoder = LoggerPlusPlus.montoya.utilities().base64Utils(); + + // Attempt to decode using standard Base64 + ByteArray decodedRequest; + ByteArray decodedResponse; + try { + decodedRequest = b64Decoder.decode(v[0]); + decodedResponse = b64Decoder.decode(v[1]); + } catch (IllegalArgumentException e) { + // If decoding with URL-safe Base64 fails, try standard Base64 decoding + log.warn("Standard Base64 decoding failed, trying URL-safe Base64 decoding"); + decodedRequest = b64Decoder.decode(v[0], Base64DecodingOptions.URL); + decodedResponse = b64Decoder.decode(v[1], Base64DecodingOptions.URL); + } + + HttpRequest httpRequest = HttpRequest.httpRequest(httpService, decodedRequest); + HttpResponse httpResponse = HttpResponse.httpResponse(decodedResponse); HttpRequestResponse requestResponse = HttpRequestResponse.httpRequestResponse(httpRequest, httpResponse); requests.add(requestResponse); From cec73f2d0ab1a6b427ac099f5db9315a9322c7e7 Mon Sep 17 00:00:00 2001 From: Chvalov Date: Fri, 31 May 2024 08:48:22 +0300 Subject: [PATCH 2/2] fix comment - importWStalker --- .../java/com/nccgroup/loggerplusplus/imports/LoggerImport.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/nccgroup/loggerplusplus/imports/LoggerImport.java b/src/main/java/com/nccgroup/loggerplusplus/imports/LoggerImport.java index 60d97ca..fc6b1a0 100644 --- a/src/main/java/com/nccgroup/loggerplusplus/imports/LoggerImport.java +++ b/src/main/java/com/nccgroup/loggerplusplus/imports/LoggerImport.java @@ -107,7 +107,7 @@ public static ArrayList importWStalker() { decodedRequest = b64Decoder.decode(v[0]); decodedResponse = b64Decoder.decode(v[1]); } catch (IllegalArgumentException e) { - // If decoding with URL-safe Base64 fails, try standard Base64 decoding + // If decoding with standard Base64 fails, try URL-safe Base64 decoding log.warn("Standard Base64 decoding failed, trying URL-safe Base64 decoding"); decodedRequest = b64Decoder.decode(v[0], Base64DecodingOptions.URL); decodedResponse = b64Decoder.decode(v[1], Base64DecodingOptions.URL);