Rebuild code and add default filter.

This commit is contained in:
AnonymousUser
2020-11-27 03:48:28 +08:00
parent 7b5027a528
commit 2ce57f8ee1
12 changed files with 464 additions and 272 deletions

34
burp/action/DoAction.java Normal file
View File

@@ -0,0 +1,34 @@
package burp.action;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.json.JSONObject;
import burp.Config;
public class DoAction {
public String extractString(JSONObject jsonObj) {
String result = "";
Iterator<String> k = jsonObj.keys();
while (k.hasNext()) {
String name = k.next();
JSONObject jsonObj1 = new JSONObject(jsonObj.get(name).toString());
String tmpStr = String.format(Config.outputTplString, name, jsonObj1.getString("data")).intern();
result += tmpStr;
}
return result;
}
public List<String> highlightList(JSONObject jsonObj) {
List<String> colorList = new ArrayList<String>();
Iterator<String> k = jsonObj.keys();
while (k.hasNext()) {
String name = k.next();
JSONObject jsonObj2 = new JSONObject(jsonObj.get(name).toString());
colorList.add(jsonObj2.getString("color"));
}
return colorList;
}
}

View File

@@ -0,0 +1,67 @@
package burp.action;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import org.json.JSONObject;
import burp.file.ReadFile;
import jregex.Matcher;
import jregex.Pattern;
public class ExtractContent {
ReadFile rf = new ReadFile();
public JSONObject matchRegex(byte[] content, String scopeString, String actionString, String configFilePath) {
JSONObject tabContent = new JSONObject();
// 正则匹配提取内容
try {
String jsonStr = rf.readFileContent(configFilePath);
JSONObject jsonObj = new JSONObject(jsonStr);
Iterator<String> k = jsonObj.keys();
// 遍历json数组
while (k.hasNext()) {
String contentString = new String(content, "UTF-8").intern();
String name = k.next();
JSONObject jsonObj1 = new JSONObject(jsonObj.get(name).toString());
JSONObject jsonData = new JSONObject();
String regex = jsonObj1.getString("regex");
boolean isLoaded = jsonObj1.getBoolean("loaded");
String scope = jsonObj1.getString("scope");
String action = jsonObj1.getString("action");
String color = jsonObj1.getString("color");
List<String> result = new ArrayList<String>();
if(isLoaded && (scope.equals(scopeString) || scope.equals("any")) && (action.equals(actionString) || action.equals("any"))) {
Pattern pattern = new Pattern(regex);
Matcher matcher = pattern.matcher(contentString);
while (matcher.find()) {
// 添加匹配数据至list
// 强制用户使用()包裹正则
result.add(matcher.group(1));
}
// 去除重复内容
HashSet tmpList = new HashSet(result);
result.clear();
result.addAll(tmpList);
if (!result.isEmpty()) {
jsonData.put("color", color);
jsonData.put("data", String.join("\n", result));
jsonData.put("loaded", isLoaded);
// 初始化格式
tabContent.put(name, jsonData);
}
}
}
} catch (Exception e) {}
return tabContent;
}
}

View File

@@ -0,0 +1,36 @@
package burp.action;
import java.util.Arrays;
import java.util.List;
import burp.Config;
import jregex.Matcher;
import jregex.Pattern;
import jregex.REFlags;
public class MatchHTTP {
// 匹配后缀
public boolean matchSuffix(String str) {
Pattern pattern = new Pattern(String.format("[\\w]+[\\.](%s)", Config.excludeSuffix), REFlags.IGNORE_CASE);
Matcher matcher = pattern.matcher(str);
if(matcher.find()){
return true;
}else{
return false;
}
}
// 匹配MIME
public boolean matchMIME(List<String> mimeList) {
for (String headerString : mimeList) {
if (headerString.toLowerCase().startsWith("content-type")) {
for (String mime : Arrays.asList(Config.excludeMIME)) {
if (headerString.contains(mime)) {
return true;
}
}
}
}
return false;
}
}