Version: 2.4 Update

This commit is contained in:
AnonymousUser
2022-06-23 15:34:22 +08:00
parent 7ebba02200
commit f401214524
17 changed files with 323 additions and 107 deletions

View File

@@ -2,7 +2,6 @@ package burp.action;
import java.nio.charset.StandardCharsets;
import java.util.*;
import burp.Config;
import dk.brics.automaton.Automaton;
import dk.brics.automaton.AutomatonMatcher;
@@ -17,7 +16,7 @@ import jregex.Pattern;
public class ExtractContent {
public Map<String, Map<String, Object>> matchRegex(byte[] content, String headers, byte[] body, String scopeString) {
public Map<String, Map<String, Object>> matchRegex(byte[] content, String headers, byte[] body, String scopeString, String host) {
Map<String, Map<String, Object>> map = new HashMap<>(); // 最终返回的结果
Config.ruleConfig.keySet().forEach(i -> {
String matchContent = "";
@@ -61,6 +60,7 @@ public class ExtractContent {
} else {
pattern = new Pattern(regex, Pattern.IGNORE_CASE);
}
Matcher matcher = pattern.matcher(matchContent);
while (matcher.find()) {
// 添加匹配数据至list
@@ -94,6 +94,38 @@ public class ExtractContent {
}
});
// host: {Name, List}
if (!host.isEmpty()) {
map.keySet().forEach(i -> {
Map<String, Object> tmpMap = map.get(i);
List<String> dataList = Arrays.asList(tmpMap.get("data").toString().split("\n"));
// 判断Host是否存在如存在则进行数据更新反之则新增数据
if (Config.globalDataMap.containsKey(host)) {
Map<String, List<String>> gRuleMap = Config.globalDataMap.get(host);
// 判断匹配规则是否存在逻辑同Host判断
if (gRuleMap.containsKey(i)) {
List<String> gDataList = gRuleMap.get(i);
List<String> mergeDataList = new ArrayList<>();
// 合并两个List
mergeDataList.addAll(gDataList);
mergeDataList.addAll(dataList);
// 去重操作
HashSet tmpList = new HashSet(mergeDataList);
mergeDataList.clear();
mergeDataList.addAll(tmpList);
// 替换操作
gRuleMap.replace(i, gDataList, mergeDataList);
} else {
gRuleMap.put(i, dataList);
}
} else {
Map<String, List<String>> ruleMap = new HashMap<>();
ruleMap.put(i, dataList);
Config.globalDataMap.put(host, ruleMap);
}
});
}
return map;
}
}