Version: 2.4 Update
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user