From c4d8743fe3e062c9ac15ce570d8ebd18f9438617 Mon Sep 17 00:00:00 2001 From: AnonymousUser Date: Mon, 21 Feb 2022 09:31:03 +0800 Subject: [PATCH] Version: 2.1.4 Update --- src/main/java/burp/BurpExtender.java | 4 +-- src/main/java/burp/Config.java | 5 ++- src/main/java/burp/action/ExtractContent.java | 12 ++++--- src/main/java/burp/ui/MainUI.java | 20 ++++-------- src/main/java/burp/yaml/SetConfig.java | 31 +++++++------------ 5 files changed, 31 insertions(+), 41 deletions(-) diff --git a/src/main/java/burp/BurpExtender.java b/src/main/java/burp/BurpExtender.java index b41e5a5..d8aed77 100644 --- a/src/main/java/burp/BurpExtender.java +++ b/src/main/java/burp/BurpExtender.java @@ -29,12 +29,12 @@ public class BurpExtender implements IBurpExtender, IHttpListener, IMessageEdito this.callbacks = callbacks; BurpExtender.helpers = callbacks.getHelpers(); - String version = "2.1.3"; + String version = "2.1.4"; callbacks.setExtensionName(String.format("HaE (%s) - Highlighter and Extractor", version)); // 定义输出 stdout = new PrintWriter(callbacks.getStdout(), true); stdout.println("@Core Author: EvilChen"); - stdout.println("@UI Author: 0chencc"); + stdout.println("@Architecture Author: 0chencc"); stdout.println("@Github: https://github.com/gh0stkey/HaE"); stdout.println("@Team: OverSpace Security Team"); // UI diff --git a/src/main/java/burp/Config.java b/src/main/java/burp/Config.java index a295ccf..9f3f356 100644 --- a/src/main/java/burp/Config.java +++ b/src/main/java/burp/Config.java @@ -4,7 +4,8 @@ package burp; * @author EvilChen */ -import java.util.HashMap; +import burp.yaml.LoadConfig; +import java.util.Map; public class Config { public static String excludeSuffix = "3g2|3gp|7z|aac|abw|aif|aifc|aiff|arc|au|avi|azw|bin|bmp|bz|bz2|cmx|cod|csh|css|csv|doc|docx|eot|epub|gif|gz|ico|ics|ief|jar|jfif|jpe|jpeg|jpg|m3u|mid|midi|mjs|mp2|mp3|mpa|mpe|mpeg|mpg|mpkg|mpp|mpv2|odp|ods|odt|oga|ogv|ogx|otf|pbm|pdf|pgm|png|pnm|ppm|ppt|pptx|ra|ram|rar|ras|rgb|rmi|rtf|snd|svg|swf|tar|tif|tiff|ttf|vsd|wav|weba|webm|webp|woff|woff2|xbm|xls|xlsx|xpm|xul|xwd|zip|zip"; @@ -37,4 +38,6 @@ public class Config { "magenta", "gray" }; + + public static Map ruleConfig = LoadConfig.getRules(); } \ No newline at end of file diff --git a/src/main/java/burp/action/ExtractContent.java b/src/main/java/burp/action/ExtractContent.java index 645b786..43271fb 100644 --- a/src/main/java/burp/action/ExtractContent.java +++ b/src/main/java/burp/action/ExtractContent.java @@ -3,6 +3,7 @@ package burp.action; import java.nio.charset.StandardCharsets; import java.util.*; +import burp.Config; import burp.yaml.LoadConfig; import dk.brics.automaton.Automaton; import dk.brics.automaton.AutomatonMatcher; @@ -19,10 +20,9 @@ public class ExtractContent { public Map> matchRegex(byte[] content, String headers, byte[] body, String scopeString) { Map> map = new HashMap<>(); // 最终返回的结果 - Map rules = LoadConfig.getRules(); - rules.keySet().forEach(i -> { + Config.ruleConfig.keySet().forEach(i -> { String matchContent = ""; - for (Object[] objects : rules.get(i)) { + for (Object[] objects : Config.ruleConfig.get(i)) { // 遍历获取规则 List result = new ArrayList<>(); Map tmpMap = new HashMap<>(); @@ -34,7 +34,7 @@ public class ExtractContent { String scope = objects[4].toString(); String engine = objects[5].toString(); // 判断规则是否开启与作用域 - if (loaded && (scope.contains(scopeString) || scope.equals("any"))) { + if (loaded && (scope.contains(scopeString) || "any".equals(scope))) { switch (scope) { case "any": case "request": @@ -49,9 +49,11 @@ public class ExtractContent { case "response body": matchContent = new String(body, StandardCharsets.UTF_8).intern(); break; + default: + break; } - if (engine.equals("nfa")) { + if ("nfa".equals(engine)) { Pattern pattern = new Pattern(regex); Matcher matcher = pattern.matcher(matchContent); while (matcher.find()) { diff --git a/src/main/java/burp/ui/MainUI.java b/src/main/java/burp/ui/MainUI.java index 059d40c..3e42535 100644 --- a/src/main/java/burp/ui/MainUI.java +++ b/src/main/java/burp/ui/MainUI.java @@ -1,5 +1,6 @@ package burp.ui; +import burp.Config; import burp.yaml.LoadConfig; import burp.yaml.SetConfig; @@ -47,25 +48,18 @@ public class MainUI extends JPanel{ int selectframe = selectFile.showDialog(new JLabel(),"Select"); if (selectframe == JFileChooser.APPROVE_OPTION){ String configpath = selectFile.getSelectedFile().toString(); - reloadRule(configpath); + reloadRule(); loadConn.setConfigPath(configpath); } configFilepathtext.setText(LoadConfig.getConfigPath()); reloadRule(); } - private void reloadRule(String configFile){ - tabbedPane1.removeAll(); - Map config = LoadConfig.getRules(); - ruleSwitch.setListen(false); - config.keySet().forEach(i->tabbedPane1.addTab(i,new RulePane(config.get(i),tabbedPane1))); - tabbedPane1.addTab("...",new JLabel()); - ruleSwitch.setListen(true); - } + private void reloadRule(){ tabbedPane1.removeAll(); - Map config = LoadConfig.getRules(); ruleSwitch.setListen(false); - config.keySet().forEach(i->tabbedPane1.addTab(i,new RulePane(config.get(i),tabbedPane1)) + Map rules = LoadConfig.getRules(); + rules.keySet().forEach(i->tabbedPane1.addTab(i,new RulePane(Config.ruleConfig.get(i),tabbedPane1)) ); tabbedPane1.addTab("...",new JLabel()); ruleSwitch.setListen(true); @@ -76,7 +70,6 @@ public class MainUI extends JPanel{ } private void ESSaveMouseClicked(MouseEvent e) { - // TODO add your code here LoadConfig loadCon = new LoadConfig(); loadCon.setExcludeSuffix(EStext.getText()); } @@ -175,8 +168,7 @@ public class MainUI extends JPanel{ new Insets(0, 0, 0, 0), 0, 0)); // JFormDesigner - End of component initialization //GEN-END:initComponents - Map config = LoadConfig.getRules(); - config.keySet().forEach(i->tabbedPane1.addTab(i,new RulePane(config.get(i),tabbedPane1))); + Config.ruleConfig.keySet().forEach(i->tabbedPane1.addTab(i,new RulePane(Config.ruleConfig.get(i),tabbedPane1))); tabbedPane1.addTab("...",new JLabel()); diff --git a/src/main/java/burp/yaml/SetConfig.java b/src/main/java/burp/yaml/SetConfig.java index 89b25cb..ddcebff 100644 --- a/src/main/java/burp/yaml/SetConfig.java +++ b/src/main/java/burp/yaml/SetConfig.java @@ -1,5 +1,6 @@ package burp.yaml; +import burp.Config; import burp.yaml.template.Rule; import burp.yaml.template.Rules; import org.yaml.snakeyaml.DumperOptions; @@ -17,8 +18,6 @@ import java.util.*; public class SetConfig { - private Map ruleConfig = LoadConfig.getRules(); - public void format() { DumperOptions dop = new DumperOptions(); dop.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); @@ -28,12 +27,12 @@ public class SetConfig { RulesConfig con = new RulesConfig(); List rls = new ArrayList<>(); - ruleConfig.keySet().forEach(i-> + Config.ruleConfig.keySet().forEach(i-> { Rules rlsTmp = new Rules(); rlsTmp.setType(i); List rl = new ArrayList<>(); - for (Object[] objects : ruleConfig.get(i)) { + for (Object[] objects : Config.ruleConfig.get(i)) { Rule rlTmp = new Rule(); rlTmp.setName((String) objects[1]); rlTmp.setLoaded((Boolean) objects[0]); @@ -57,50 +56,44 @@ public class SetConfig { } public void edit(Vector data, int select, String type) { - ruleConfig = LoadConfig.getRules(); - ruleConfig.get(type)[select] = data.toArray(); + Config.ruleConfig.get(type)[select] = data.toArray(); this.format(); } public void add(Vector data, String type) { - ruleConfig = LoadConfig.getRules(); - ArrayList x = new ArrayList<>(Arrays.asList(ruleConfig.get(type))); + ArrayList x = new ArrayList<>(Arrays.asList(Config.ruleConfig.get(type))); x.add(data.toArray()); - ruleConfig.put(type,x.toArray(new Object[x.size()][])); + Config.ruleConfig.put(type,x.toArray(new Object[x.size()][])); this.format(); } public void remove(int select,String type) { - ruleConfig = LoadConfig.getRules(); - ArrayList x = new ArrayList<>(Arrays.asList(ruleConfig.get(type))); + ArrayList x = new ArrayList<>(Arrays.asList(Config.ruleConfig.get(type))); x.remove(select); - ruleConfig.put(type,x.toArray(new Object[x.size()][])); + Config.ruleConfig.put(type,x.toArray(new Object[x.size()][])); this.format(); } public void rename(String oldName, String newName) { - ruleConfig = LoadConfig.getRules(); - ruleConfig.put(newName, ruleConfig.remove(oldName)); + Config.ruleConfig.put(newName, Config.ruleConfig.remove(oldName)); this.format(); } public void deleteRules(String Rules) { - ruleConfig = LoadConfig.getRules(); - ruleConfig.remove(Rules); + Config.ruleConfig.remove(Rules); this.format(); } public String newRules() { int i = 0; - ruleConfig = LoadConfig.getRules(); String name = "New "; Object[][] data = new Object[][]{ { false, "New Name", "(New Regex)", "gray", "any", "nfa" } }; - while (ruleConfig.containsKey(name + i)) { + while (Config.ruleConfig.containsKey(name + i)) { i++; } - ruleConfig.put(name + i, data); + Config.ruleConfig.put(name + i, data); this.format(); return name + i; }