diff --git a/src/main/java/burp/BurpExtender.java b/src/main/java/burp/BurpExtender.java index 82a34f2..acf4665 100644 --- a/src/main/java/burp/BurpExtender.java +++ b/src/main/java/burp/BurpExtender.java @@ -33,7 +33,7 @@ public class BurpExtender implements IBurpExtender, IHttpListener, IMessageEdito this.callbacks = callbacks; BurpExtender.helpers = callbacks.getHelpers(); - String version = "2.0.5"; + String version = "2.0.6"; callbacks.setExtensionName(String.format("HaE (%s) - Highlighter and Extractor", version)); // 定义输出 stdout = new PrintWriter(callbacks.getStdout(), true); @@ -73,9 +73,8 @@ public class BurpExtender implements IBurpExtender, IHttpListener, IMessageEdito // 判断是否是响应,且该代码作用域为:REPEATER、INTRUDER、PROXY(分别对应toolFlag 64、32、4) if (toolFlag == 64 || toolFlag == 32 || toolFlag == 4) { Map> obj; - byte[] content = messageInfo.getRequest(); // 流量清洗 - String urlString = helpers.analyzeRequest(messageInfo.getHttpService(), content).getUrl().toString(); + String urlString = helpers.analyzeRequest(messageInfo.getHttpService(), messageInfo.getRequest()).getUrl().toString(); urlString = urlString.indexOf("?") > 0 ? urlString.substring(0, urlString.indexOf("?")) : urlString; // 正则判断 @@ -84,28 +83,28 @@ public class BurpExtender implements IBurpExtender, IHttpListener, IMessageEdito } if (messageIsRequest) { + byte[] byteRequest = messageInfo.getRequest(); // 获取报文头 - List requestTmpHeaders = helpers.analyzeRequest(messageInfo.getHttpService(), content).getHeaders(); + List requestTmpHeaders = helpers.analyzeRequest(messageInfo.getHttpService(), byteRequest).getHeaders(); String requestHeaders = String.join("\n", requestTmpHeaders); // 获取报文主体 - int requestBodyOffset = helpers.analyzeRequest(messageInfo.getHttpService(), content).getBodyOffset(); - byte[] byteRequest = messageInfo.getRequest(); + int requestBodyOffset = helpers.analyzeRequest(messageInfo.getHttpService(), byteRequest).getBodyOffset(); byte[] requestBody = Arrays.copyOfRange(byteRequest, requestBodyOffset, byteRequest.length); - obj = ec.matchRegex(content, requestHeaders, requestBody, "request"); + obj = ec.matchRegex(byteRequest, requestHeaders, requestBody, "request"); } else { + byte[] byteResponse = messageInfo.getResponse(); + // 获取报文头 - List responseTmpHeaders = helpers.analyzeRequest(messageInfo.getHttpService(), content).getHeaders(); + List responseTmpHeaders = helpers.analyzeRequest(messageInfo.getHttpService(), byteResponse).getHeaders(); String responseHeaders = String.join("\n", responseTmpHeaders); // 获取报文主体 - int responseBodyOffset = helpers.analyzeResponse(content).getBodyOffset(); - byte[] byteResponse = messageInfo.getResponse(); + int responseBodyOffset = helpers.analyzeResponse(byteResponse).getBodyOffset(); byte[] responseBody = Arrays.copyOfRange(byteResponse, responseBodyOffset, byteResponse.length); - content = messageInfo.getResponse(); - obj = ec.matchRegex(content, responseHeaders, responseBody, "response"); + obj = ec.matchRegex(byteResponse, responseHeaders, responseBody, "response"); } List colorList = da.highlightList(obj); @@ -156,14 +155,14 @@ public class BurpExtender implements IBurpExtender, IHttpListener, IMessageEdito } catch (Exception e) { return false; } + IRequestInfo iRequestInfo = helpers.analyzeRequest(controller.getHttpService(), content); // 获取报文头 - List requestTmpHeaders = helpers.analyzeRequest(controller.getHttpService(), content).getHeaders(); + List requestTmpHeaders = iRequestInfo.getHeaders(); String requestHeaders = String.join("\n", requestTmpHeaders); // 获取报文主体 - int requestBodyOffset = helpers.analyzeRequest(controller.getHttpService(), content).getBodyOffset(); - byte[] byteRequest = controller.getRequest(); - byte[] requestBody = Arrays.copyOfRange(byteRequest, requestBodyOffset, byteRequest.length); + int requestBodyOffset = iRequestInfo.getBodyOffset(); + byte[] requestBody = Arrays.copyOfRange(content, requestBodyOffset, content.length); obj = ec.matchRegex(content, requestHeaders, requestBody, "request"); if (obj.size() > 0) { @@ -172,14 +171,13 @@ public class BurpExtender implements IBurpExtender, IHttpListener, IMessageEdito return true; } } else { - + IResponseInfo iResponseInfo = helpers.analyzeResponse(content); // 获取报文头 - List responseTmpHeaders = helpers.analyzeResponse(content).getHeaders(); + List responseTmpHeaders = iResponseInfo.getHeaders(); String responseHeaders = String.join("\n", responseTmpHeaders); // 获取报文主体 - int responseBodyOffset = helpers.analyzeResponse(content).getBodyOffset(); - byte[] byteResponse = controller.getResponse(); - byte[] responseBody = Arrays.copyOfRange(byteResponse, responseBodyOffset, byteResponse.length); + int responseBodyOffset = iResponseInfo.getBodyOffset(); + byte[] responseBody = Arrays.copyOfRange(content, responseBodyOffset, content.length); obj = ec.matchRegex(content, responseHeaders, responseBody, "response"); if (obj.size() > 0) {