Version: 2.5.1 Update

This commit is contained in:
ᴋᴇʏ
2023-10-18 00:42:46 +08:00
committed by GitHub
parent 06fd54c9ce
commit 2e23388925

View File

@@ -5,13 +5,10 @@ import burp.core.processor.MessageProcessor;
import burp.ui.MainUI; import burp.ui.MainUI;
import burp.ui.board.MessagePanel; import burp.ui.board.MessagePanel;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.util.Map; import java.util.*;
import java.util.Objects;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.nio.charset.StandardCharsets;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
@@ -36,7 +33,7 @@ public class BurpExtender implements IBurpExtender, IHttpListener, IMessageEdito
this.callbacks = callbacks; this.callbacks = callbacks;
BurpExtender.helpers = callbacks.getHelpers(); BurpExtender.helpers = callbacks.getHelpers();
String version = "2.5"; String version = "2.5.1";
callbacks.setExtensionName(String.format("HaE (%s) - Highlighter and Extractor", version)); callbacks.setExtensionName(String.format("HaE (%s) - Highlighter and Extractor", version));
// 定义输出 // 定义输出
@@ -92,16 +89,18 @@ public class BurpExtender implements IBurpExtender, IHttpListener, IMessageEdito
IHttpService iHttpService = null; IHttpService iHttpService = null;
String host = "";
try { try {
iHttpService = messageInfo.getHttpService(); iHttpService = messageInfo.getHttpService();
host = iHttpService.getHost();
} catch (Exception ignored) { } catch (Exception ignored) {
} }
// 获取请求主机信息 if (Objects.equals(host, "")) {
assert iHttpService != null; List<String> requestTmpHeaders = helpers.analyzeRequest(content).getHeaders();
String host = iHttpService.getHost(); host = requestTmpHeaders.get(1).split(":")[1].trim();
}
String c = new String(content, StandardCharsets.UTF_8).intern();
List<Map<String, String>> result = null; List<Map<String, String>> result = null;
try { try {
@@ -125,19 +124,43 @@ public class BurpExtender implements IBurpExtender, IHttpListener, IMessageEdito
messageInfo.setHighlight(resColor); messageInfo.setHighlight(resColor);
String addComment = String.join(", ", result.get(1).get("comment")); String addComment = String.join(", ", result.get(1).get("comment"));
resComment = !Objects.equals(originalComment, "") ? String.format("%s, %s", originalComment, addComment) : addComment; String allComment = !Objects.equals(originalComment, "") ? String.format("%s, %s", originalComment, addComment) : addComment;
resComment = mergeComment(allComment);
messageInfo.setComment(resComment); messageInfo.setComment(resComment);
} }
String endComment = resComment.isEmpty() ? originalComment : resComment; String endComment = resComment.isEmpty() ? originalComment : resComment;
String endColor = resColor.isEmpty() ? originalColor : resColor; String endColor = resColor.isEmpty() ? originalColor : resColor;
if (!messageIsRequest && !endComment.isEmpty() && !endColor.isEmpty()) { if (!messageIsRequest && !Objects.equals(endComment, "") && !Objects.equals(endColor, "")) {
messagePanel.add(messageInfo, endComment, String.valueOf(content.length), endColor); messagePanel.add(messageInfo, endComment, String.valueOf(content.length), endColor);
} }
} }
} }
private String mergeComment(String comment) {
Map<String, Integer> itemCounts = new HashMap<>();
String[] items = comment.split(", ");
for (String item : items) {
String itemName = item.substring(0, item.lastIndexOf("(")).trim();
int count = Integer.parseInt(item.substring(item.lastIndexOf("(") + 1, item.lastIndexOf(")")).trim());
itemCounts.put(itemName, itemCounts.getOrDefault(itemName, 0) + count);
}
StringBuilder mergedItems = new StringBuilder();
for (Map.Entry<String, Integer> entry : itemCounts.entrySet()) {
String itemName = entry.getKey();
int count = entry.getValue();
mergedItems.append(itemName).append(" (").append(count).append("), ");
}
return mergedItems.substring(0, mergedItems.length() - 2);
}
class MarkInfoTab implements IMessageEditorTab { class MarkInfoTab implements IMessageEditorTab {
private final JTabbedPane jTabbedPane = new JTabbedPane(); private final JTabbedPane jTabbedPane = new JTabbedPane();
private JTable jTable = new JTable(); private JTable jTable = new JTable();
@@ -168,8 +191,8 @@ public class BurpExtender implements IBurpExtender, IHttpListener, IMessageEdito
@Override @Override
public boolean isEnabled(byte[] content, boolean isRequest) { public boolean isEnabled(byte[] content, boolean isRequest) {
String c = new String(content, StandardCharsets.UTF_8).intern();
List<Map<String, String>> result = null; List<Map<String, String>> result = null;
try { try {
result = messageProcessor.processMessage(helpers, content, isRequest, false, ""); result = messageProcessor.processMessage(helpers, content, isRequest, false, "");
} catch (NoSuchAlgorithmException e) { } catch (NoSuchAlgorithmException e) {
@@ -219,7 +242,6 @@ public class BurpExtender implements IBurpExtender, IHttpListener, IMessageEdito
*/ */
@Override @Override
public void setMessage(byte[] content, boolean isRequest) { public void setMessage(byte[] content, boolean isRequest) {
String c = new String(content, StandardCharsets.UTF_8).intern();
if (content.length > 0) { if (content.length > 0) {
if (isRequest) { if (isRequest) {
makeTable(extractRequestMap); makeTable(extractRequestMap);