From baca284c3fb7a94dd35a8c883e65f9559675f62c Mon Sep 17 00:00:00 2001 From: ddwightx Date: Sun, 1 Sep 2024 14:20:41 -0400 Subject: [PATCH] Fixed Then Parse HTTP Message to handle blank HTTP Message field. --- extension/build.gradle | 2 +- .../rules/thens/ThenParseHttpMessage.java | 23 ++++++++++++++----- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/extension/build.gradle b/extension/build.gradle index 796fc02..8fa8c42 100644 --- a/extension/build.gradle +++ b/extension/build.gradle @@ -4,7 +4,7 @@ plugins { group 'com.synfron.reshaper.burp' archivesBaseName = 'reshaper-for-burp' -version '2.5.0' +version '2.5.1' targetCompatibility = '21' sourceCompatibility = '21' diff --git a/extension/src/main/java/synfron/reshaper/burp/core/rules/thens/ThenParseHttpMessage.java b/extension/src/main/java/synfron/reshaper/burp/core/rules/thens/ThenParseHttpMessage.java index 571cc72..2085f01 100644 --- a/extension/src/main/java/synfron/reshaper/burp/core/rules/thens/ThenParseHttpMessage.java +++ b/extension/src/main/java/synfron/reshaper/burp/core/rules/thens/ThenParseHttpMessage.java @@ -2,9 +2,11 @@ import lombok.Getter; import lombok.Setter; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; import synfron.reshaper.burp.core.messages.EventInfo; import synfron.reshaper.burp.core.messages.HttpDataDirection; +import synfron.reshaper.burp.core.messages.HttpEventInfo; import synfron.reshaper.burp.core.messages.MessageValueHandler; import synfron.reshaper.burp.core.messages.entities.http.HttpRequestMessage; import synfron.reshaper.burp.core.messages.entities.http.HttpResponseMessage; @@ -54,9 +56,12 @@ public RuleResponse perform(EventInfo eventInfo) { } private List> parseRequestMessage(EventInfo eventInfo) { - HttpRequestMessage httpRequestMessage = new HttpRequestMessage(eventInfo.getWorkspace(), eventInfo.getEncoder().encode( - VariableString.getTextOrDefault(eventInfo, httpMessage, "") - ), eventInfo.getEncoder()); + String message = VariableString.getTextOrDefault(eventInfo, httpMessage, ""); + HttpRequestMessage httpRequestMessage = StringUtils.isNotEmpty(message) ? + new HttpRequestMessage(eventInfo.getWorkspace(), eventInfo.getEncoder().encode( + message + ), eventInfo.getEncoder()) : + eventInfo.getHttpRequestMessage(); List> variables = new ArrayList<>(); for (MessageValueGetter messageValueGetter : getMessageValueGetters()) { String variableName = messageValueGetter.getDestinationVariableName().getText(eventInfo); @@ -83,9 +88,15 @@ private List> parseRequestMessage(EventInfo eventInfo) { } private List> parseResponseMessage(EventInfo eventInfo) { - HttpResponseMessage httpResponseMessage = new HttpResponseMessage(eventInfo.getWorkspace(), eventInfo.getEncoder().encode( - VariableString.getTextOrDefault(eventInfo, httpMessage, "") - ), eventInfo.getEncoder()); + String message = VariableString.getTextOrDefault(eventInfo, httpMessage, ""); + HttpResponseMessage httpResponseMessage; + if (StringUtils.isNotEmpty(message)) { + httpResponseMessage = new HttpResponseMessage(eventInfo.getWorkspace(), eventInfo.getEncoder().encode(message), eventInfo.getEncoder()); + } else if (eventInfo instanceof HttpEventInfo httpEventInfo) { + httpResponseMessage = httpEventInfo.getHttpResponseMessage(); + } else { + httpResponseMessage = new HttpResponseMessage(eventInfo.getWorkspace(), new byte[0], eventInfo.getEncoder()); + } List> variables = new ArrayList<>(); for (MessageValueGetter messageValueGetter : getMessageValueGetters()) { String variableName = messageValueGetter.getDestinationVariableName().getText(eventInfo);