Rebuild code and add default filter.
This commit is contained in:
34
burp/action/DoAction.java
Normal file
34
burp/action/DoAction.java
Normal 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;
|
||||
}
|
||||
}
|
||||
67
burp/action/ExtractContent.java
Normal file
67
burp/action/ExtractContent.java
Normal 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;
|
||||
}
|
||||
}
|
||||
36
burp/action/MatchHTTP.java
Normal file
36
burp/action/MatchHTTP.java
Normal 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user