From e698bb1caa62e78d5788ffb337c637681cbadfd8 Mon Sep 17 00:00:00 2001 From: gh0stkey <24655118+gh0stkey@users.noreply.github.com> Date: Thu, 28 Sep 2023 01:23:36 +0800 Subject: [PATCH] Version: 2.4.7 Update --- src/main/java/burp/action/ExtractContent.java | 38 +++++++++---------- src/main/java/burp/ui/Databoard.java | 2 +- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/main/java/burp/action/ExtractContent.java b/src/main/java/burp/action/ExtractContent.java index 19f5c6c..781f131 100644 --- a/src/main/java/burp/action/ExtractContent.java +++ b/src/main/java/burp/action/ExtractContent.java @@ -89,6 +89,7 @@ public class ExtractContent { result.clear(); result.addAll(tmpList); + String nameAndSize = String.format("%s (%s)", name, result.size()); if (!result.isEmpty()) { tmpMap.put("color", color); String dataStr = String.join("\n", result); @@ -97,40 +98,37 @@ public class ExtractContent { // 添加到全局变量中,便于Databoard检索 if (!host.isEmpty()) { String[] splitHost = host.split("\\."); - String anyHost = splitHost.length > 2 ? host.replace(splitHost[0], "*") : ""; + String anyHost = (splitHost.length > 2 && !host.matches("\\b(?:\\d{1,3}\\.){3}\\d{1,3}\\b")) ? host.replace(splitHost[0], "*") : ""; List dataList = Arrays.asList(dataStr.split("\n")); if (Config.globalDataMap.containsKey(host)) { - Map> gRuleMap = Config.globalDataMap.get(host); - // 判断匹配规则是否存在(逻辑同Host判断) + Map> gRuleMap = new HashMap<>(Config.globalDataMap.get(host)); if (gRuleMap.containsKey(name)) { List gDataList = gRuleMap.get(name); - List mergeDataList = new ArrayList<>(gDataList); - // 合并两个List - mergeDataList.addAll(dataList); - // 去重操作 - tmpList = new HashSet(mergeDataList); - mergeDataList.clear(); - mergeDataList.addAll(tmpList); - // 替换操作 - gRuleMap.replace(name, gDataList, mergeDataList); + gDataList.addAll(dataList); + gDataList = new ArrayList<>(new HashSet<>(gDataList)); + gRuleMap.replace(name, gDataList); } else { gRuleMap.put(name, dataList); } - } else if (!Config.globalDataMap.containsKey(anyHost) && !anyHost.isEmpty()) { - // 添加通配符Host,实际数据从查询哪里将所有数据提取 - Config.globalDataMap.put(anyHost, new HashMap<>()); - } else if (!Config.globalDataMap.containsKey("*")) { - // 添加通配符全匹配Host,同上 - Config.globalDataMap.put("*", new HashMap<>()); + Config.globalDataMap.remove(host); + Config.globalDataMap.put(host, gRuleMap); } else { Map> ruleMap = new HashMap<>(); ruleMap.put(name, dataList); // 添加单一Host Config.globalDataMap.put(host, ruleMap); } + + if (!Config.globalDataMap.containsKey(anyHost) && anyHost.length() > 0) { + // 添加通配符Host,实际数据从查询哪里将所有数据提取 + Config.globalDataMap.put(anyHost, new HashMap<>()); + } else if (!Config.globalDataMap.containsKey("*")) { + // 添加通配符全匹配,同上 + Config.globalDataMap.put("*", new HashMap<>()); + } } - map.put(name, tmpMap); + map.put(nameAndSize, tmpMap); } } @@ -139,7 +137,7 @@ public class ExtractContent { try { t.join(); } catch (InterruptedException e) { - e.printStackTrace(); + BurpExtender.stdout.println(e); } diff --git a/src/main/java/burp/ui/Databoard.java b/src/main/java/burp/ui/Databoard.java index 1d0df0a..3562b53 100644 --- a/src/main/java/burp/ui/Databoard.java +++ b/src/main/java/burp/ui/Databoard.java @@ -218,7 +218,7 @@ public class Databoard extends JPanel { tabbedPane.removeAll(); for(Map.Entry> entry: selectHost.entrySet()){ - tabbedPane.addTab(entry.getKey(), new JScrollPane(new HitRuleDataList(entry.getValue()))); + tabbedPane.addTab(String.format("%s (%s)", entry.getKey(), entry.getValue().size()), new JScrollPane(new HitRuleDataList(entry.getValue()))); } textField.setText(hostComboBox.getSelectedItem().toString()); }