Version: 4.0.1 Update

This commit is contained in:
gh0stkey
2024-12-31 15:40:05 +08:00
parent daacb2e146
commit e83a6a1478
4 changed files with 31 additions and 30 deletions

View File

@@ -18,7 +18,7 @@ public class HaE implements BurpExtension {
@Override @Override
public void initialize(MontoyaApi api) { public void initialize(MontoyaApi api) {
// 设置扩展名称 // 设置扩展名称
String version = "4.0"; String version = "4.0.1";
api.extension().setName("HaE - Highlighter and Extractor"); api.extension().setName("HaE - Highlighter and Extractor");
// 加载扩展后输出的项目信息 // 加载扩展后输出的项目信息

View File

@@ -111,7 +111,7 @@ public class RegularMatcher {
} }
} }
public static void putDataToGlobalMap(MontoyaApi api, String host, String name, List<String> dataList, boolean flag) { public synchronized static void putDataToGlobalMap(MontoyaApi api, String host, String name, List<String> dataList, boolean flag) {
// 添加到全局变量中便于Databoard检索 // 添加到全局变量中便于Databoard检索
if (!Objects.equals(host, "") && host != null) { if (!Objects.equals(host, "") && host != null) {
Config.globalDataMap.compute(host, (existingHost, existingMap) -> { Config.globalDataMap.compute(host, (existingHost, existingMap) -> {

View File

@@ -19,23 +19,7 @@ public class DataManager {
this.persistence = api.persistence(); this.persistence = api.persistence();
} }
private void saveIndex(String indexName, String indexValue) { public synchronized void putData(String dataType, String dataName, PersistedObject persistedObject) {
PersistedList<String> indexList = persistence.extensionData().getStringList(indexName);
if (indexList != null && !indexList.isEmpty()) {
persistence.extensionData().deleteStringList(indexName);
} else {
indexList = PersistedList.persistedStringList();
}
if (!indexList.contains(indexValue)) {
indexList.add(indexValue);
}
persistence.extensionData().setStringList(indexName, indexList);
}
public void putData(String dataType, String dataName, PersistedObject persistedObject) {
if (persistence.extensionData().getChildObject(dataName) != null) { if (persistence.extensionData().getChildObject(dataName) != null) {
persistence.extensionData().deleteChildObject(dataName); persistence.extensionData().deleteChildObject(dataName);
} }
@@ -51,7 +35,22 @@ public class DataManager {
// 2. 从索引获取数据 // 2. 从索引获取数据
loadHaEData(dataIndex); loadHaEData(dataIndex);
loadMessageData(messageIndex, messageTableModel); loadMessageData(messageIndex, messageTableModel);
}
private void saveIndex(String indexName, String indexValue) {
PersistedList<String> indexList = persistence.extensionData().getStringList(indexName);
if (indexList != null && !indexList.isEmpty()) {
persistence.extensionData().deleteStringList(indexName);
} else {
indexList = PersistedList.persistedStringList();
}
if (!indexList.contains(indexValue)) {
indexList.add(indexValue);
}
persistence.extensionData().setStringList(indexName, indexList);
} }
private void loadHaEData(PersistedList<String> dataIndex) { private void loadHaEData(PersistedList<String> dataIndex) {
@@ -69,16 +68,18 @@ public class DataManager {
if (messageIndex != null && !messageIndex.isEmpty()) { if (messageIndex != null && !messageIndex.isEmpty()) {
messageIndex.parallelStream().forEach(index -> { messageIndex.parallelStream().forEach(index -> {
PersistedObject dataObj = persistence.extensionData().getChildObject(index); PersistedObject dataObj = persistence.extensionData().getChildObject(index);
HttpRequestResponse messageInfo = dataObj.getHttpRequestResponse("messageInfo"); if (dataObj != null) {
String comment = dataObj.getString("comment"); HttpRequestResponse messageInfo = dataObj.getHttpRequestResponse("messageInfo");
String color = dataObj.getString("color"); String comment = dataObj.getString("comment");
HttpRequest request = messageInfo.request(); String color = dataObj.getString("color");
HttpResponse response = messageInfo.response(); HttpRequest request = messageInfo.request();
String method = request.method(); HttpResponse response = messageInfo.response();
String url = request.url(); String method = request.method();
String status = String.valueOf(response.statusCode()); String url = request.url();
String length = String.valueOf(response.toByteArray().length()); String status = String.valueOf(response.statusCode());
messageTableModel.add(messageInfo, url, method, status, length, comment, color, false); String length = String.valueOf(response.toByteArray().length());
messageTableModel.add(messageInfo, url, method, status, length, comment, color, false);
}
}); });
} }
} }

View File

@@ -231,7 +231,7 @@ rules:
rule: rule:
- name: Linkfinder - name: Linkfinder
loaded: true loaded: true
f_regex: (?:"|')(((?:[a-zA-Z]{1,10}://|//)[^"'/]{1,}\.[a-zA-Z]{2,}[^"']{0,})|((?:/|\.\./|\./)[^"'><,;|*()(%%$^/\\\[\]][^"'><,;|()]{1,})|([a-zA-Z0-9_\-/]{1,}/[a-zA-Z0-9_\-/]{1,}\.(?:[a-zA-Z]{1,4}|action)(?:[\?|#][^"|']{0,}|))|([a-zA-Z0-9_\-/]{1,}/[a-zA-Z0-9_\-/]{3,}(?:[\?|#][^"|']{0,}|))|([a-zA-Z0-9_\-]{1,}\.(?:\w)(?:[\?|#][^"|']{0,}|)))(?:"|') f_regex: (?:"|')((?:(?:[a-zA-Z]{1,10}://|//)[^"'/]{1,}\.[a-zA-Z]{2,}[^"']{0,})|(?:(?:(?:/|\.\./|\./)?[^"'><,;|*()(%%$^/\\\[\]][^"'><,;|()]{1,}\.[a-zA-Z]{1,4})|(?:(?:/|\.\./|\./)?[^"'><,;|*()(%%$^/\\\[\]][^"'><,;|()]{1,}/[^"'><,;|()]{1,}(?:\.[a-zA-Z]{1,4}|action)?)))(?:[\?|#][^"|']{0,})?(?:"|')
s_regex: '' s_regex: ''
format: '{0}' format: '{0}'
color: gray color: gray