From daacb2e1467f5f0505bca6330e8e8e9bd583e0e0 Mon Sep 17 00:00:00 2001 From: gh0stkey <24655118+gh0stkey@users.noreply.github.com> Date: Sat, 21 Dec 2024 15:34:45 +0800 Subject: [PATCH] Version: 4.0 Update --- build.gradle | 4 +- images/config-ai.png | Bin 172016 -> 0 bytes images/config-setting.png | Bin 171202 -> 0 bytes src/main/java/hae/Config.java | 5 - src/main/java/hae/HaE.java | 10 +- src/main/java/hae/component/Config.java | 110 +--- src/main/java/hae/component/Main.java | 3 +- .../java/hae/component/board/Databoard.java | 322 +--------- .../component/board/message/MessageEntry.java | 14 +- .../board/message/MessageTableModel.java | 52 +- .../hae/component/board/table/AIPower.java | 157 ----- .../hae/component/board/table/Datatable.java | 111 ---- .../http/HttpMessageActiveHandler.java | 2 +- .../http/HttpMessagePassiveHandler.java | 2 +- .../instances/http/utils/RegularMatcher.java | 25 +- .../websocket/WebSocketMessageHandler.java | 2 +- src/main/java/hae/utils/ConfigLoader.java | 65 +- src/main/java/hae/utils/DataManager.java | 85 +++ src/main/java/hae/utils/UIEnhancer.java | 2 - src/main/java/hae/utils/http/HttpUtils.java | 21 - .../java/hae/utils/project/FileProcessor.java | 47 -- .../hae/utils/project/ProjectProcessor.java | 187 ------ .../utils/project/model/HaeFileContent.java | 76 --- src/main/resources/rules/Rules.yml | 594 +++++++++--------- 24 files changed, 469 insertions(+), 1427 deletions(-) delete mode 100644 images/config-ai.png delete mode 100644 images/config-setting.png delete mode 100644 src/main/java/hae/component/board/table/AIPower.java create mode 100644 src/main/java/hae/utils/DataManager.java delete mode 100644 src/main/java/hae/utils/project/FileProcessor.java delete mode 100644 src/main/java/hae/utils/project/ProjectProcessor.java delete mode 100644 src/main/java/hae/utils/project/model/HaeFileContent.java diff --git a/build.gradle b/build.gradle index 700fa4c..5a55d60 100644 --- a/build.gradle +++ b/build.gradle @@ -22,8 +22,6 @@ dependencies { implementation 'org.yaml:snakeyaml:2.0' implementation 'dk.brics.automaton:automaton:1.11-8' implementation 'com.github.ben-manes.caffeine:caffeine:3.1.8' - implementation 'com.google.code.gson:gson:2.11.0' - implementation 'com.squareup.okhttp3:okhttp:4.12.0' } test { @@ -36,4 +34,4 @@ jar { from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } -} +} \ No newline at end of file diff --git a/images/config-ai.png b/images/config-ai.png deleted file mode 100644 index ed5b007c822d1fda70dede85cb2ff700b8d183f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172016 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 z%0D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∨GO^gJDtD?!^KjkzM6m z0N>wfSh?vc?z@3_XrYUjw_ltnja0y`_vG14NDO&iusY&WYzHpp(p@nDcmBaXb9ZOv zHn*D63#>#nRGLP-bhm3MZoaj9)DV^CKHXK{V`!cGJzF!Q`|2iO≀K0ecu0qKKJ( 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 diff --git a/src/main/java/hae/Config.java b/src/main/java/hae/Config.java index 3411bac..173790e 100644 --- a/src/main/java/hae/Config.java +++ b/src/main/java/hae/Config.java @@ -61,11 +61,6 @@ public class Config { "gray" }; - public static String prompt = "You are a data security expert in the field of cyber security. Your task is to optimize the information provided by the user and then output it in JSON format. The user-supplied information is data that has been extracted by regular expressions. The user-supplied information is divided into two parts, the first part is RuleName which represents the name of the regular expression and the second part is MarkInfo which represents the data extracted by the regular expression. You need to find the matching or similar data in MarkInfo according to the meaning of RuleName, and output the original rows of these data in JSON format.(garbled and meaningless data rows should be removed)\n" + - "You must ensure that the extracted data is accurately expressed and correctly formatted in the JSON structure. Your output data must comply with the original MarkInfo content rows without modification, and strictly adhere to the following JSON format for return, no other text, code and formatting (e.g., line breaks, carriage returns, indentation, spaces), once the return of other irrelevant content will cause irreparable damage to the user: {\"data\":[\"data1\", \"data2\"]}."; - - public static String userTextFormat = "User Input: \r\nRuleName: %s\r\nMarkInfo: %s"; - public static Map globalRules = new HashMap<>(); public static ConcurrentHashMap>> globalDataMap = new ConcurrentHashMap<>(); diff --git a/src/main/java/hae/HaE.java b/src/main/java/hae/HaE.java index 31a85ec..4f8b3b7 100644 --- a/src/main/java/hae/HaE.java +++ b/src/main/java/hae/HaE.java @@ -12,19 +12,21 @@ import hae.instances.editor.WebSocketEditor; import hae.instances.websocket.WebSocketMessageHandler; import hae.utils.ConfigLoader; +import hae.utils.DataManager; public class HaE implements BurpExtension { @Override public void initialize(MontoyaApi api) { // 设置扩展名称 - String version = "3.4"; - api.extension().setName(String.format("HaE (%s) - Highlighter and Extractor", version)); + String version = "4.0"; + api.extension().setName("HaE - Highlighter and Extractor"); // 加载扩展后输出的项目信息 Logging logging = api.logging(); logging.logToOutput("[ HACK THE WORLD - TO DO IT ]"); logging.logToOutput("[#] Author: EvilChen && 0chencc && vaycore"); logging.logToOutput("[#] Github: https://github.com/gh0stkey/HaE"); + logging.logToOutput("[#] Version: " + version); // 配置文件加载 ConfigLoader configLoader = new ConfigLoader(api); @@ -42,6 +44,10 @@ public void initialize(MontoyaApi api) { api.userInterface().registerHttpResponseEditorProvider(new ResponseEditor(api, configLoader)); api.userInterface().registerWebSocketMessageEditorProvider(new WebSocketEditor(api, configLoader)); + // 从BurpSuite里加载数据 + DataManager dataManager = new DataManager(api); + dataManager.loadData(messageTableModel); + api.extension().registerUnloadingHandler(new ExtensionUnloadingHandler() { @Override public void extensionUnloaded() { diff --git a/src/main/java/hae/component/Config.java b/src/main/java/hae/component/Config.java index 0266236..1af3d04 100644 --- a/src/main/java/hae/component/Config.java +++ b/src/main/java/hae/component/Config.java @@ -29,7 +29,6 @@ public class Config extends JPanel { private final ConfigLoader configLoader; private final MessageTableModel messageTableModel; private final Rules rules; - private final String defaultText = "Enter a new item"; private Registration activeHandler; private Registration passiveHandler; @@ -61,22 +60,22 @@ private void initComponents() { pathTextField.setEditable(false); pathTextField.setText(configLoader.getRulesFilePath()); JButton reloadButton = new JButton("Reload"); - JButton updateButton = new JButton("Update"); + JButton reinitButton = new JButton("Reinit"); ruleInfoPanel.add(ruleLabel); ruleInfoPanel.add(pathTextField, constraints); ruleInfoPanel.add(Box.createHorizontalStrut(5)); - ruleInfoPanel.add(reloadButton); + ruleInfoPanel.add(reinitButton); ruleInfoPanel.add(Box.createHorizontalStrut(5)); - ruleInfoPanel.add(updateButton); + ruleInfoPanel.add(reloadButton); reloadButton.addActionListener(this::reloadActionPerformed); - updateButton.addActionListener(this::onlineUpdateActionPerformed); + reinitButton.addActionListener(this::reinitActionPerformed); constraints.gridx = 1; JTabbedPane configTabbedPanel = new JTabbedPane(); String[] settingMode = new String[]{"Exclude suffix", "Block host", "Exclude status"}; - JPanel settingPanel = createConfigTablePanel(settingMode, "Setting"); + JPanel settingPanel = createConfigTablePanel(settingMode); JPanel northPanel = new JPanel(new BorderLayout()); @@ -105,38 +104,6 @@ public void componentResized(ComponentEvent e) { settingPanel.add(northPanel, BorderLayout.NORTH); configTabbedPanel.add("Setting", settingPanel); - - String[] aiMode = new String[]{"Alibaba", "Moonshot"}; - JPanel aiPanel = createConfigTablePanel(aiMode, "AI+"); - JTextArea promptTextArea = new JTextArea(); - promptTextArea.setLineWrap(true); - promptTextArea.getDocument().addDocumentListener(new DocumentListener() { - @Override - public void insertUpdate(DocumentEvent e) { - onTextChange(); - } - - @Override - public void removeUpdate(DocumentEvent e) { - onTextChange(); - } - - @Override - public void changedUpdate(DocumentEvent e) { - onTextChange(); - } - - private void onTextChange() { - String promptText = promptTextArea.getText(); - configLoader.setAIPrompt(promptText); - } - }); - promptTextArea.setText(configLoader.getAIPrompt()); - JScrollPane promptScrollPane = new JScrollPane(promptTextArea); - promptScrollPane.setBorder(new TitledBorder("Prompt")); - promptScrollPane.setPreferredSize(new Dimension(0, 100)); - aiPanel.add(promptScrollPane, BorderLayout.NORTH); - configTabbedPanel.add("AI+", aiPanel); add(ruleInfoPanel, BorderLayout.NORTH); add(configTabbedPanel, BorderLayout.CENTER); } @@ -256,47 +223,8 @@ public void actionPerformed(ActionEvent e) { }; } - private TableModelListener craeteAITableModelListener(JComboBox setTypeComboBox, DefaultTableModel model) { - return new TableModelListener() { - @Override - public void tableChanged(TableModelEvent e) { - String selected = (String) setTypeComboBox.getSelectedItem(); - String values = getFirstColumnDataAsString(model); - - if (selected.equals("Alibaba")) { - if (!values.equals(configLoader.getAlibabaAIAPIKey()) && !values.isEmpty()) { - configLoader.setAlibabaAIAPIKey(values); - } - } - if (selected.equals("Moonshot")) { - if (!values.equals(configLoader.getMoonshotAIAPIKey()) && !values.isEmpty()) { - configLoader.setMoonshotAIAPIKey(values); - } - } - } - }; - } - - private ActionListener createAIActionListener(JComboBox setTypeComboBox, DefaultTableModel model) { - return new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - String selected = (String) setTypeComboBox.getSelectedItem(); - model.setRowCount(0); - - if (selected.equals("Alibaba")) { - addDataToTable(configLoader.getAlibabaAIAPIKey().replaceAll("\\|", "\r\n"), model); - } - - if (selected.equals("Moonshot")) { - addDataToTable(configLoader.getMoonshotAIAPIKey().replaceAll("\\|", "\r\n"), model); - } - } - }; - } - - private JPanel createConfigTablePanel(String[] mode, String type) { + private JPanel createConfigTablePanel(String[] mode) { GridBagConstraints constraints = new GridBagConstraints(); constraints.weightx = 1.0; constraints.fill = GridBagConstraints.HORIZONTAL; @@ -327,9 +255,9 @@ private JPanel createConfigTablePanel(String[] mode, String type) { JComboBox setTypeComboBox = new JComboBox<>(); setTypeComboBox.setModel(new DefaultComboBoxModel<>(mode)); - model.addTableModelListener(type.equals("AI+") ? craeteAITableModelListener(setTypeComboBox, model) : craeteSettingTableModelListener(setTypeComboBox, model)); + model.addTableModelListener(craeteSettingTableModelListener(setTypeComboBox, model)); - setTypeComboBox.addActionListener(type.equals("AI+") ? createAIActionListener(setTypeComboBox, model) : createSettingActionListener(setTypeComboBox, model)); + setTypeComboBox.addActionListener(createSettingActionListener(setTypeComboBox, model)); setTypeComboBox.setSelectedItem(mode[0]); @@ -346,6 +274,7 @@ private JPanel createConfigTablePanel(String[] mode, String type) { buttonPanel.add(clearButton, constraints); JTextField addTextField = new JTextField(); + String defaultText = "Enter a new item"; UIEnhancer.setTextFieldPlaceholder(addTextField, defaultText); inputPanelB.add(addTextField, BorderLayout.CENTER); @@ -390,7 +319,7 @@ public void keyPressed(KeyEvent e) { JPanel settingMainPanel = new JPanel(new BorderLayout()); settingMainPanel.setBorder(new EmptyBorder(5, 15, 10, 15)); JScrollPane settingScroller = new JScrollPane(settingPanel); - settingScroller.setBorder(new TitledBorder(type.equals("AI+") ? "API Key" : "Setting")); + settingScroller.setBorder(new TitledBorder("Setting")); settingMainPanel.add(settingScroller, BorderLayout.CENTER); return settingMainPanel; @@ -492,16 +421,17 @@ private void addActionPerformed(ActionEvent e, DefaultTableModel model, JTextFie } } - private void onlineUpdateActionPerformed(ActionEvent e) { - // 添加提示框防止用户误触导致配置更新 - int retCode = JOptionPane.showConfirmDialog(this, "Do you want to update rules?", "Info", JOptionPane.YES_NO_OPTION); - if (retCode == JOptionPane.YES_OPTION) { - configLoader.initRulesByNet(); - reloadActionPerformed(null); - } - } - private void reloadActionPerformed(ActionEvent e) { rules.reloadRuleGroup(); } + + private void reinitActionPerformed(ActionEvent e) { + int retCode = JOptionPane.showConfirmDialog(this, "Do you want to reinitialize rules? This action will overwrite your existing rules.", "Info", JOptionPane.YES_NO_OPTION); + if (retCode == JOptionPane.YES_OPTION) { + boolean ret = configLoader.initRules(); + if (ret) { + rules.reloadRuleGroup(); + } + } + } } diff --git a/src/main/java/hae/component/Main.java b/src/main/java/hae/component/Main.java index 307ac93..2bbc6b5 100644 --- a/src/main/java/hae/component/Main.java +++ b/src/main/java/hae/component/Main.java @@ -81,7 +81,6 @@ private ImageIcon getImageIcon(boolean isDark) { ImageIcon originalIcon = new ImageIcon(imageURL); Image originalImage = originalIcon.getImage(); Image scaledImage = originalImage.getScaledInstance(30, 20, Image.SCALE_FAST); - ImageIcon scaledIcon = new ImageIcon(scaledImage); - return scaledIcon; + return new ImageIcon(scaledImage); } } diff --git a/src/main/java/hae/component/board/Databoard.java b/src/main/java/hae/component/board/Databoard.java index 681a15f..a9bfc06 100644 --- a/src/main/java/hae/component/board/Databoard.java +++ b/src/main/java/hae/component/board/Databoard.java @@ -2,49 +2,35 @@ import burp.api.montoya.MontoyaApi; import hae.Config; -import hae.component.board.message.MessageEntry; import hae.component.board.message.MessageTableModel; import hae.component.board.message.MessageTableModel.MessageTable; import hae.component.board.table.Datatable; -import hae.instances.http.utils.RegularMatcher; import hae.utils.ConfigLoader; import hae.utils.UIEnhancer; -import hae.utils.project.ProjectProcessor; -import hae.utils.project.model.HaeFileContent; import hae.utils.string.StringProcessor; import javax.swing.*; -import javax.swing.border.TitledBorder; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; -import javax.swing.filechooser.FileNameExtensionFilter; -import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumnModel; import javax.swing.table.TableModel; import javax.swing.table.TableRowSorter; import java.awt.*; import java.awt.event.*; -import java.io.File; import java.util.List; import java.util.*; -import java.util.concurrent.Callable; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.function.Function; import java.util.stream.Collectors; public class Databoard extends JPanel { private final MontoyaApi api; private final ConfigLoader configLoader; - private final ProjectProcessor projectProcessor; private final MessageTableModel messageTableModel; private JTextField hostTextField; private JTabbedPane dataTabbedPane; private JSplitPane splitPane; private MessageTable messageTable; - private JProgressBar progressBar; private static Boolean isMatchHost = false; private final DefaultComboBoxModel comboBoxModel = new DefaultComboBoxModel(); @@ -52,15 +38,10 @@ public class Databoard extends JPanel { private SwingWorker>, Void> handleComboBoxWorker; private SwingWorker applyHostFilterWorker; - private SwingWorker, Void> exportActionWorker; - private SwingWorker, Void> importActionWorker; - - private final String defaultText = "Please enter the host"; public Databoard(MontoyaApi api, ConfigLoader configLoader, MessageTableModel messageTableModel) { this.api = api; this.configLoader = configLoader; - this.projectProcessor = new ProjectProcessor(api); this.messageTableModel = messageTableModel; initComponents(); @@ -69,25 +50,22 @@ public Databoard(MontoyaApi api, ConfigLoader configLoader, MessageTableModel me private void initComponents() { setLayout(new GridBagLayout()); ((GridBagLayout) getLayout()).columnWidths = new int[]{25, 0, 0, 0, 20, 0}; - ((GridBagLayout) getLayout()).rowHeights = new int[]{0, 65, 20, 0, 0}; + ((GridBagLayout) getLayout()).rowHeights = new int[]{0, 65, 20, 0}; ((GridBagLayout) getLayout()).columnWeights = new double[]{0.0, 0.0, 1.0, 0.0, 0.0, 1.0E-4}; - ((GridBagLayout) getLayout()).rowWeights = new double[]{0.0, 1.0, 0.0, 0.0, 1.0E-4}; + ((GridBagLayout) getLayout()).rowWeights = new double[]{0.0, 1.0, 0.0, 1.0E-4}; JLabel hostLabel = new JLabel("Host:"); JButton clearButton = new JButton("Clear"); - JButton exportButton = new JButton("Export"); - JButton importButton = new JButton("Import"); JButton actionButton = new JButton("Action"); - JPanel menuPanel = new JPanel(new GridLayout(3, 1, 0, 5)); + JPanel menuPanel = new JPanel(new GridLayout(1, 1, 0, 5)); menuPanel.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); JPopupMenu menu = new JPopupMenu(); menuPanel.add(clearButton); - menuPanel.add(exportButton); - menuPanel.add(importButton); menu.add(menuPanel); hostTextField = new JTextField(); + String defaultText = "Please enter the host"; UIEnhancer.setTextFieldPlaceholder(hostTextField, defaultText); splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); @@ -102,10 +80,7 @@ private void initComponents() { }); clearButton.addActionListener(this::clearActionPerformed); - exportButton.addActionListener(this::exportActionPerformed); - importButton.addActionListener(this::importActionPerformed); - progressBar = new JProgressBar(); splitPane.addComponentListener(new ComponentAdapter() { @Override @@ -115,7 +90,6 @@ public void componentResized(ComponentEvent e) { }); splitPane.setVisible(false); - progressBar.setVisible(false); add(hostLabel, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(8, 0, 5, 5), 0, 0)); @@ -124,12 +98,9 @@ public void componentResized(ComponentEvent e) { add(actionButton, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(8, 0, 5, 5), 0, 0)); - add(splitPane, new GridBagConstraints(1, 1, 3, 1, 0.0, 1.0, + add(splitPane, new GridBagConstraints(1, 1, 3, 2, 0.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 5, 0, 5), 0, 0)); - add(progressBar, new GridBagConstraints(1, 2, 3, 1, 1.0, 0.0, - GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, - new Insets(0, 5, 0, 5), 0, 0)); hostComboBox.setMaximumRowCount(5); add(hostComboBox, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(8, 0, 5, 5), 0, 0)); @@ -149,24 +120,6 @@ private void resizePanel() { columnModel.getColumn(5).setPreferredWidth((int) (totalWidth * 0.1)); } - private void setProgressBar(boolean status) { - setProgressBar(status, progressBar, "Loading ..."); - } - - - public static void setProgressBar(boolean status, JProgressBar progressBar, String showString) { - progressBar.setIndeterminate(status); - if (!status) { - progressBar.setMaximum(100); - progressBar.setString("OK"); - progressBar.setStringPainted(true); - progressBar.setValue(progressBar.getMaximum()); - } else { - progressBar.setString(showString); - progressBar.setStringPainted(true); - } - } - private void setAutoMatch() { hostComboBox.setSelectedItem(null); hostComboBox.addActionListener(this::handleComboBoxAction); @@ -202,8 +155,6 @@ private void handleComboBoxAction(ActionEvent e) { String selectedHost = hostComboBox.getSelectedItem().toString(); if (getHostByList().contains(selectedHost)) { - progressBar.setVisible(true); - setProgressBar(true); hostTextField.setText(selectedHost); if (handleComboBoxWorker != null && !handleComboBoxWorker.isDone()) { @@ -357,11 +308,6 @@ public boolean include(Entry entry) { return null; } - - @Override - protected void done() { - setProgressBar(false); - } }; applyHostFilterWorker.execute(); @@ -374,263 +320,6 @@ private List getHostByList() { return new ArrayList<>(); } - private void exportActionPerformed(ActionEvent e) { - String selectedHost = hostTextField.getText().trim(); - - if (selectedHost.isEmpty()) { - return; - } - - String exportDir = selectDirectory(true); - - if (exportDir.isEmpty()) { - return; - } - - if (exportActionWorker != null && !exportActionWorker.isDone()) { - exportActionWorker.cancel(true); - } - - exportActionWorker = new SwingWorker, Void>() { - @Override - protected List doInBackground() { - ConcurrentHashMap>> dataMap = Config.globalDataMap; - return exportData(selectedHost, exportDir, dataMap); - } - - @Override - protected void done() { - try { - List taskStatusList = get(); - if (!taskStatusList.isEmpty()) { - JOptionPane.showMessageDialog(Databoard.this, generateTaskStatusPane(taskStatusList), "Info", JOptionPane.INFORMATION_MESSAGE); - } - } catch (Exception ignored) { - } - } - }; - - exportActionWorker.execute(); - } - - private JScrollPane generateTaskStatusPane(List dataList) { - String[] columnNames = {"#", "Filename", "Status"}; - DefaultTableModel taskStatusTableModel = new DefaultTableModel(columnNames, 0); - JTable taskStatusTable = new JTable(taskStatusTableModel); - - for (Object[] data : dataList) { - int rowCount = taskStatusTableModel.getRowCount(); - int id = rowCount > 0 ? (Integer) taskStatusTableModel.getValueAt(rowCount - 1, 0) + 1 : 1; - Object[] rowData = new Object[data.length + 1]; - rowData[0] = id; - System.arraycopy(data, 0, rowData, 1, data.length); - taskStatusTableModel.addRow(rowData); - } - - TableRowSorter sorter = new TableRowSorter<>(taskStatusTableModel); - taskStatusTable.setRowSorter(sorter); - - JScrollPane scrollPane = new JScrollPane(taskStatusTable); - scrollPane.setBorder(new TitledBorder("Task status")); - scrollPane.setPreferredSize(new Dimension(500, 300)); - - int paneWidth = scrollPane.getPreferredSize().width; - taskStatusTable.getColumnModel().getColumn(0).setPreferredWidth((int) (paneWidth * 0.1)); - taskStatusTable.getColumnModel().getColumn(1).setPreferredWidth((int) (paneWidth * 0.7)); - taskStatusTable.getColumnModel().getColumn(2).setPreferredWidth((int) (paneWidth * 0.2)); - - return scrollPane; - } - - private List exportData(String selectedHost, String exportDir, Map>> dataMap) { - return dataMap.entrySet().stream() - .filter(entry -> selectedHost.equals("*") || StringProcessor.matchesHostPattern(entry.getKey(), selectedHost)) - .filter(entry -> !entry.getKey().contains("*")) - .map(entry -> exportEntry(entry, exportDir)) - .filter(Objects::nonNull) - .collect(Collectors.toList()); - } - - private Object[] exportEntry(Map.Entry>> entry, String exportDir) { - String key = entry.getKey(); - Map> ruleMap = entry.getValue(); - - if (ruleMap == null || ruleMap.isEmpty()) { - return null; - } - - List messageEntryList = messageTableModel.getLogs(); - - Map entryUUIDMap = messageEntryList.stream() - .collect(Collectors.toMap( - messageEntry -> messageEntry, - messageEntry -> StringProcessor.getRandomUUID(), - (existing, replacement) -> existing - )); - - Map> httpMap = processEntries( - messageEntryList, - key, - entryUUIDMap, - this::createHttpItemMap - ); - - Map> urlMap = processEntries( - messageEntryList, - key, - entryUUIDMap, - this::creteUrlItemMap - ); - - String hostName = key.replace(":", "_"); - String filename = String.format("%s/%s-%s.hae", exportDir, StringProcessor.getCurrentTime(), hostName); - boolean createdStatus = projectProcessor.createHaeFile(filename, key, ruleMap, urlMap, httpMap); - - return new Object[]{filename, createdStatus}; - } - - - private Map> processEntries(List messageEntryList, String key, Map entryUUIDMap, Function> mapFunction) { - return messageEntryList.stream() - .filter(messageEntry -> !StringProcessor.getHostByUrl(messageEntry.getUrl()).isEmpty()) - .filter(messageEntry -> StringProcessor.getHostByUrl(messageEntry.getUrl()).equals(key)) - .collect(Collectors.toMap( - entryUUIDMap::get, - mapFunction, - (existing, replacement) -> existing - )); - } - - private Map creteUrlItemMap(MessageEntry entry) { - Map urlItemMap = new LinkedHashMap<>(); - urlItemMap.put("url", entry.getUrl()); - urlItemMap.put("method", entry.getMethod()); - urlItemMap.put("status", entry.getStatus()); - urlItemMap.put("length", entry.getLength()); - urlItemMap.put("comment", entry.getComment()); - urlItemMap.put("color", entry.getColor()); - urlItemMap.put("size", String.valueOf(entry.getRequestResponse().request().toByteArray().length())); - return urlItemMap; - } - - private Map createHttpItemMap(MessageEntry entry) { - Map httpItemMap = new LinkedHashMap<>(); - httpItemMap.put("request", entry.getRequestResponse().request().toByteArray().getBytes()); - httpItemMap.put("response", entry.getRequestResponse().response().toByteArray().getBytes()); - return httpItemMap; - } - - private void importActionPerformed(ActionEvent e) { - String exportDir = selectDirectory(false); - if (exportDir.isEmpty()) { - return; - } - - if (importActionWorker != null && !importActionWorker.isDone()) { - importActionWorker.cancel(true); - } - - importActionWorker = new SwingWorker, Void>() { - @Override - protected List doInBackground() { - List filesWithExtension = findFilesWithExtension(new File(exportDir), ".hae"); - return filesWithExtension.stream() - .map(Databoard.this::importData) - .collect(Collectors.toList()); - } - - @Override - protected void done() { - try { - List taskStatusList = get(); - if (!taskStatusList.isEmpty()) { - JOptionPane.showMessageDialog(Databoard.this, generateTaskStatusPane(taskStatusList), "Info", JOptionPane.INFORMATION_MESSAGE); - } - } catch (Exception ignored) { - } - } - }; - - importActionWorker.execute(); - } - - private Object[] importData(String filename) { - ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 2); - - HaeFileContent haeFileContent = projectProcessor.readHaeFile(filename); - boolean readStatus = haeFileContent != null; - - List> tasks = new ArrayList<>(); - - if (readStatus) { - try { - String host = haeFileContent.getHost(); - haeFileContent.getDataMap().forEach((key, value) -> RegularMatcher.putDataToGlobalMap(host, key, value)); - - haeFileContent.getUrlMap().forEach((key, urlItemMap) -> { - tasks.add(() -> { - String url = urlItemMap.get("url"); - String comment = urlItemMap.get("comment"); - String color = urlItemMap.get("color"); - String length = urlItemMap.get("length"); - String method = urlItemMap.get("method"); - String status = urlItemMap.get("status"); - String path = haeFileContent.getHttpPath(); - - messageTableModel.add(null, url, method, status, length, comment, color, key, path); - return null; - }); - }); - - executor.invokeAll(tasks); - } catch (Exception e) { - api.logging().logToError("importData: " + e.getMessage()); - } finally { - executor.shutdown(); - } - } - - return new Object[]{filename, readStatus}; - } - - private List findFilesWithExtension(File directory, String extension) { - List filePaths = new ArrayList<>(); - if (directory.isDirectory()) { - File[] files = directory.listFiles(); - if (files != null) { - for (File file : files) { - if (file.isDirectory()) { - filePaths.addAll(findFilesWithExtension(file, extension)); - } else if (file.isFile() && file.getName().toLowerCase().endsWith(extension)) { - filePaths.add(file.getAbsolutePath()); - } - } - } - } else { - filePaths.add(directory.getAbsolutePath()); - } - return filePaths; - } - - private String selectDirectory(boolean forDirectories) { - JFileChooser chooser = new JFileChooser(); - chooser.setCurrentDirectory(new java.io.File(configLoader.getRulesFilePath())); - chooser.setDialogTitle(String.format("Select a Directory%s", forDirectories ? "" : " or File")); - FileNameExtensionFilter filter = new FileNameExtensionFilter(".hae Files", "hae"); - chooser.addChoosableFileFilter(filter); - chooser.setFileFilter(filter); - - chooser.setFileSelectionMode(forDirectories ? JFileChooser.DIRECTORIES_ONLY : JFileChooser.FILES_AND_DIRECTORIES); - chooser.setAcceptAllFileFilterUsed(!forDirectories); - - if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { - File selectedDirectory = chooser.getSelectedFile(); - return selectedDirectory.getAbsolutePath(); - } - - return ""; - } - private void clearActionPerformed(ActionEvent e) { int retCode = JOptionPane.showConfirmDialog(this, "Do you want to clear data?", "Info", JOptionPane.YES_NO_OPTION); @@ -638,7 +327,6 @@ private void clearActionPerformed(ActionEvent e) { if (retCode == JOptionPane.YES_OPTION && !host.isEmpty()) { dataTabbedPane.removeAll(); splitPane.setVisible(false); - progressBar.setVisible(false); Config.globalDataMap.keySet().parallelStream().forEach(key -> { if (StringProcessor.matchesHostPattern(key, host) || host.equals("*")) { diff --git a/src/main/java/hae/component/board/message/MessageEntry.java b/src/main/java/hae/component/board/message/MessageEntry.java index ec52108..ccdf720 100644 --- a/src/main/java/hae/component/board/message/MessageEntry.java +++ b/src/main/java/hae/component/board/message/MessageEntry.java @@ -11,10 +11,8 @@ public class MessageEntry { private final String status; private final String color; private final String method; - private final String hash; - private final String path; - MessageEntry(HttpRequestResponse requestResponse, String method, String url, String comment, String length, String color, String status, String hash, String path) { + MessageEntry(HttpRequestResponse requestResponse, String method, String url, String comment, String length, String color, String status) { this.requestResponse = requestResponse; this.method = method; this.url = url; @@ -22,8 +20,6 @@ public class MessageEntry { this.length = length; this.color = color; this.status = status; - this.hash = hash; - this.path = path; } public String getColor() { @@ -53,12 +49,4 @@ public String getStatus() { public HttpRequestResponse getRequestResponse() { return this.requestResponse; } - - public String getHash() { - return this.hash; - } - - public String getPath() { - return this.path; - } } \ No newline at end of file diff --git a/src/main/java/hae/component/board/message/MessageTableModel.java b/src/main/java/hae/component/board/message/MessageTableModel.java index 7b69890..9d75c8c 100644 --- a/src/main/java/hae/component/board/message/MessageTableModel.java +++ b/src/main/java/hae/component/board/message/MessageTableModel.java @@ -5,13 +5,14 @@ import burp.api.montoya.http.message.HttpRequestResponse; import burp.api.montoya.http.message.requests.HttpRequest; import burp.api.montoya.http.message.responses.HttpResponse; +import burp.api.montoya.persistence.PersistedObject; import burp.api.montoya.ui.UserInterface; import burp.api.montoya.ui.editor.HttpRequestEditor; import burp.api.montoya.ui.editor.HttpResponseEditor; import hae.Config; import hae.cache.CachePool; import hae.utils.ConfigLoader; -import hae.utils.project.FileProcessor; +import hae.utils.DataManager; import hae.utils.string.HashCalculator; import hae.utils.string.StringProcessor; @@ -97,10 +98,10 @@ private int getIndex(String color) { splitPane.setRightComponent(messageTab); } - public void add(HttpRequestResponse messageInfo, String url, String method, String status, String length, String comment, String color, String hash, String path) { + public void add(HttpRequestResponse messageInfo, String url, String method, String status, String length, String comment, String color, boolean flag) { synchronized (log) { boolean isDuplicate = false; - MessageEntry logEntry = new MessageEntry(messageInfo, method, url, comment, length, color, status, hash, path); + MessageEntry logEntry = new MessageEntry(messageInfo, method, url, comment, length, color, status); byte[] reqByteA = new byte[0]; byte[] resByteA = new byte[0]; @@ -134,6 +135,18 @@ public void add(HttpRequestResponse messageInfo, String url, String method, Stri } if (!isDuplicate) { + if (flag) { + DataManager dataManager = new DataManager(api); + // 数据存储在BurpSuite空间内 + PersistedObject persistedObject = PersistedObject.persistedObject(); + persistedObject.setHttpRequestResponse("messageInfo", messageInfo); + persistedObject.setString("comment", comment); + persistedObject.setString("color", color); + String uuidIndex = StringProcessor.getRandomUUID(); + dataManager.putData("message", uuidIndex, persistedObject); + } + + // 添加进日志 log.add(logEntry); } } @@ -177,11 +190,10 @@ public void applyHostFilter(String filterText) { filteredLog.clear(); log.forEach(entry -> { - MessageEntry finalEntry = getEntryByFile(entry); - String host = StringProcessor.getHostByUrl(finalEntry.getUrl()); + String host = StringProcessor.getHostByUrl(entry.getUrl()); if (!host.isEmpty()) { if (StringProcessor.matchesHostPattern(host, filterText) || filterText.contains("*")) { - filteredLog.add(finalEntry); + filteredLog.add(entry); } } }); @@ -189,34 +201,6 @@ public void applyHostFilter(String filterText) { fireTableDataChanged(); } - private MessageEntry getEntryByFile(MessageEntry entry) { - HttpRequestResponse requestResponse = entry.getRequestResponse(); - if (requestResponse == null) { - String url = entry.getUrl(); - String method = entry.getMethod(); - String status = entry.getStatus(); - String comment = entry.getComment(); - String color = entry.getColor(); - String path = entry.getPath(); - String hash = entry.getHash(); - int length = Integer.parseInt(entry.getLength()); - - byte[] contents = FileProcessor.readFileContent(path, hash); - - if (contents.length > length) { - byte[] response = Arrays.copyOf(contents, length); - byte[] request = Arrays.copyOfRange(contents, length, contents.length); - requestResponse = StringProcessor.createHttpRequestResponse(url, request, response); - - int index = log.indexOf(entry); - entry = new MessageEntry(requestResponse, method, url, comment, String.valueOf(length), color, status, "", ""); - log.set(index, entry); - } - } - - return entry; - } - public void applyMessageFilter(String tableName, String filterText) { filteredLog.clear(); for (MessageEntry entry : log) { diff --git a/src/main/java/hae/component/board/table/AIPower.java b/src/main/java/hae/component/board/table/AIPower.java deleted file mode 100644 index 24af1b9..0000000 --- a/src/main/java/hae/component/board/table/AIPower.java +++ /dev/null @@ -1,157 +0,0 @@ -package hae.component.board.table; - -import burp.api.montoya.MontoyaApi; -import burp.api.montoya.http.RequestOptions; -import burp.api.montoya.http.message.HttpRequestResponse; -import burp.api.montoya.http.message.requests.HttpRequest; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.reflect.TypeToken; -import hae.Config; -import hae.utils.ConfigLoader; -import hae.utils.http.HttpUtils; -import okhttp3.*; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.lang.reflect.Type; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Random; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class AIPower { - private final MontoyaApi api; - private final HttpUtils httpUtils; - private final ConfigLoader configLoader; - private final String apiAuth; - private final String aiModel; - private final String aiBaseUrl; - - public AIPower(MontoyaApi api, ConfigLoader configLoader, String aiModel, String aiBaseUrl, String[] apiKey) { - this.api = api; - this.configLoader = configLoader; - this.httpUtils = new HttpUtils(api, configLoader); - this.aiModel = aiModel; - this.aiBaseUrl = aiBaseUrl; - - this.apiAuth = String.format("Bearer %s", apiKey[new Random().nextInt(apiKey.length)]); - } - - // Stream Response - public String chatWithAPI(String ruleName, String data) { - OkHttpClient httpClient = new OkHttpClient(); - String fileId = uploadFileToAIService(ruleName, data); - Gson gson = new Gson(); - - if (fileId != null) { - String chatUrl = String.format("%s/chat/completions", aiBaseUrl); - String chatMessage = generateJsonData(configLoader.getAIPrompt(), fileId); - Request request = new Request.Builder() - .url(chatUrl) - .header("Authorization", apiAuth) - .post(RequestBody.create(MediaType.parse("application/json"), chatMessage)) - .build(); - - try (Response response = httpClient.newCall(request).execute()) { - if (!response.isSuccessful()) { - throw new IOException("Unexpected code " + response); - } - - BufferedReader reader = new BufferedReader(new InputStreamReader(response.body().byteStream())); - StringBuilder chatReturn = new StringBuilder(); - String line; - - while ((line = reader.readLine()) != null) { - if (line.startsWith("data: ") && !line.contains("[DONE]")) { - String jsonData = line.substring(6); - Type type = new TypeToken>() { - }.getType(); - Map map = gson.fromJson(jsonData, type); - String content = getDeltaContent(map); - if (content != null) { - chatReturn.append(content); - } - } - } - - deleteFileOnAIService(fileId); - - return chatReturn.toString(); - } catch (Exception e) { - return ""; - } - } - - return ""; - } - - private String getDeltaContent(Map map) { - List>> choices = (List>>) map.get("choices"); - if (choices != null && !choices.isEmpty()) { - Map delta = choices.get(0).get("delta"); - return delta.get("content"); - } - return null; - } - - private String uploadFileToAIService(String ruleName, String data) { - String uploadUrl = String.format("%s/files", aiBaseUrl); - String uploadParam = "file"; - String filename = "hae.txt"; - String content = String.format(Config.userTextFormat, ruleName, data); - - HttpRequest uploadFileRequest = httpUtils.generateRequestByMultipartUploadMethod(uploadUrl, uploadParam, filename, content).withAddedHeader("Authorization", apiAuth); - - HttpRequestResponse uploadFileRequestResponse = api.http().sendRequest(uploadFileRequest, RequestOptions.requestOptions().withUpstreamTLSVerification()); - String responseBody = uploadFileRequestResponse.response().bodyToString(); - Pattern pattern = Pattern.compile("\"id\":\"(.*?)\","); - Matcher matcher = pattern.matcher(responseBody); - - return matcher.find() ? matcher.group(1) : null; - } - - private void deleteFileOnAIService(String fileId) { - String deleteFileUrl = String.format("%s/files/%s", aiBaseUrl, fileId); - HttpRequest deleteFileRequest = httpUtils.generateRequestByDeleteMethod(deleteFileUrl).withAddedHeader("Authorization", apiAuth); - api.http().sendRequest(deleteFileRequest, RequestOptions.requestOptions().withUpstreamTLSVerification()); - } - - private String getFileContentOnAiService(String fileId) { - String getFileContentUrl = String.format("%s/files/%s/content", aiBaseUrl, fileId); - HttpRequest getFileContentRequest = HttpRequest.httpRequestFromUrl(getFileContentUrl).withAddedHeader("Authorization", apiAuth); - HttpRequestResponse getFileRequestResponse = api.http().sendRequest(getFileContentRequest, RequestOptions.requestOptions().withUpstreamTLSVerification()); - String responseBody = getFileRequestResponse.response().bodyToString(); - Pattern pattern = Pattern.compile("\"content\":\"(.*?)\",\"file_type\""); - Matcher matcher = pattern.matcher(responseBody); - - return matcher.find() ? matcher.group(1) : null; - } - - private String generateJsonData(String prompt, String fileId) { - Map data = new HashMap<>(); - data.put("model", aiModel); - data.put("stream", true); - data.put("messages", new Object[]{ - new HashMap() {{ - put("role", "system"); - put("content", prompt); - }}, - new HashMap() {{ - put("role", "system"); - put("content", aiModel.equals("qwen-long") ? String.format("fileid://%s", fileId) : getFileContentOnAiService(fileId)); - }}, - new HashMap() {{ - put("role", "user"); - put("content", "Start"); - }} - }); - - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - return gson.toJson(data); - } - -} diff --git a/src/main/java/hae/component/board/table/Datatable.java b/src/main/java/hae/component/board/table/Datatable.java index 0d8da66..53cc373 100644 --- a/src/main/java/hae/component/board/table/Datatable.java +++ b/src/main/java/hae/component/board/table/Datatable.java @@ -1,9 +1,6 @@ package hae.component.board.table; import burp.api.montoya.MontoyaApi; -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import hae.component.board.Databoard; import hae.component.board.message.MessageTableModel; import hae.utils.ConfigLoader; import hae.utils.UIEnhancer; @@ -11,22 +8,17 @@ import javax.swing.*; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; -import javax.swing.event.PopupMenuEvent; -import javax.swing.event.PopupMenuListener; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; import javax.swing.table.TableRowSorter; import java.awt.*; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; -import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Comparator; import java.util.List; -import java.util.Map; import java.util.regex.Pattern; public class Datatable extends JPanel { @@ -39,15 +31,12 @@ public class Datatable extends JPanel { private final TableRowSorter sorter; private final JCheckBox searchMode = new JCheckBox("Reverse search"); private final String tabName; - private final JProgressBar progressBar; - private final JPopupMenu aiEmpoweredMenu; private final JPanel footerPanel; public Datatable(MontoyaApi api, ConfigLoader configLoader, String tabName, List dataList) { this.api = api; this.configLoader = configLoader; this.tabName = tabName; - this.progressBar = new JProgressBar(); String[] columnNames = {"#", "Information"}; this.dataTableModel = new DefaultTableModel(columnNames, 0); @@ -56,15 +45,12 @@ public Datatable(MontoyaApi api, ConfigLoader configLoader, String tabName, List this.sorter = new TableRowSorter<>(dataTableModel); this.searchField = new JTextField(10); this.secondSearchField = new JTextField(10); - this.aiEmpoweredMenu = new JPopupMenu(); this.footerPanel = new JPanel(new BorderLayout(0, 5)); initComponents(dataList); } private void initComponents(List dataList) { - progressBar.setVisible(false); - // 设置ID排序 sorter.setComparator(0, new Comparator() { @Override @@ -142,57 +128,17 @@ public void changedUpdate(DocumentEvent e) { JButton settingsButton = new JButton("Settings"); setMenuShow(settingMenu, settingsButton); - // AI Empowered按钮 - JPanel aiEmpoweredPanel = new JPanel(new GridLayout(2, 1)); - aiEmpoweredPanel.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); - JButton empoweredByAlibabaButton = new JButton("Alibaba - QwenLong"); - empoweredByAlibabaButton.addActionListener(e -> { - aiEmpoweredByAlibabaActionPerformed(e, tabName, getTableData(dataTable)); - }); - JButton empoweredByMoonshotButton = new JButton("Moonshot - Kimi"); - empoweredByMoonshotButton.addActionListener(e -> { - aiEmpoweredByMoonshotActionPerformed(e, tabName, getTableData(dataTable)); - }); - aiEmpoweredPanel.add(empoweredByAlibabaButton); - aiEmpoweredPanel.add(empoweredByMoonshotButton); - aiEmpoweredMenu.add(aiEmpoweredPanel); - - JButton aiEmpoweredButton = new JButton("AI Empowered"); - setMenuShow(aiEmpoweredMenu, aiEmpoweredButton); - aiEmpoweredMenu.addPopupMenuListener(new PopupMenuListener() { - @Override - public void popupMenuWillBecomeVisible(PopupMenuEvent e) { - empoweredByAlibabaButton.setEnabled(!configLoader.getAlibabaAIAPIKey().isEmpty()); - empoweredByMoonshotButton.setEnabled(!configLoader.getMoonshotAIAPIKey().isEmpty()); - } - - @Override - public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { - - } - - @Override - public void popupMenuCanceled(PopupMenuEvent e) { - - } - }); - optionsPanel.add(settingsButton); optionsPanel.add(Box.createHorizontalStrut(5)); optionsPanel.add(searchField); optionsPanel.add(Box.createHorizontalStrut(5)); optionsPanel.add(secondSearchField); - optionsPanel.add(Box.createHorizontalStrut(5)); - optionsPanel.add(aiEmpoweredButton); footerPanel.setBorder(BorderFactory.createEmptyBorder(2, 3, 5, 3)); footerPanel.add(optionsPanel, BorderLayout.CENTER); - footerPanel.add(progressBar, BorderLayout.SOUTH); add(scrollPane, BorderLayout.CENTER); add(footerPanel, BorderLayout.SOUTH); - - setProgressBar(false); } private void setMenuShow(JPopupMenu menu, JButton button) { @@ -205,9 +151,6 @@ private void setMenuShow(JPopupMenu menu, JButton button) { }); } - private void setProgressBar(boolean status) { - Databoard.setProgressBar(status, progressBar, "AI+ ..."); - } private void addRowToTable(Object[] data) { int rowCount = dataTableModel.getRowCount(); @@ -218,60 +161,6 @@ private void addRowToTable(Object[] data) { dataTableModel.addRow(rowData); } - private void aiEmpoweredByAlibabaActionPerformed(ActionEvent e, String ruleName, String data) { - AIPower aiPower = new AIPower(api, configLoader, "qwen-long", "https://dashscope.aliyuncs.com/compatible-mode/v1", configLoader.getAlibabaAIAPIKey().split("\\|")); - aiEmpoweredButtonAction(ruleName, data, aiPower); - } - - private void aiEmpoweredByMoonshotActionPerformed(ActionEvent e, String ruleName, String data) { - AIPower aiPower = new AIPower(api, configLoader, "moonshot-v1-128k", "https://api.moonshot.cn/v1", configLoader.getMoonshotAIAPIKey().split("\\|")); - aiEmpoweredButtonAction(ruleName, data, aiPower); - } - - private void aiEmpoweredButtonAction(String ruleName, String data, AIPower aiPower) { - progressBar.setVisible(true); - aiEmpoweredMenu.setVisible(true); - setProgressBar(true); - - SwingWorker worker = new SwingWorker() { - @Override - protected String doInBackground() throws Exception { - return aiPower.chatWithAPI(ruleName, data); - } - - @Override - protected void done() { - setProgressBar(false); - - try { - String chatReturn = get(); - if (!chatReturn.isEmpty()) { - Gson gson = new Gson(); - Type type = new TypeToken>() { - }.getType(); - Map> map = gson.fromJson(chatReturn, type); - - dataTableModel.setRowCount(0); - for (String item : map.get("data")) { - if (!item.isEmpty()) { - addRowToTable(new Object[]{item}); - } - } - - JOptionPane.showMessageDialog(Datatable.this, "AI+ has completed the AI empowered work.", "AI+ Info", JOptionPane.INFORMATION_MESSAGE); - } else { - JOptionPane.showMessageDialog(Datatable.this, "AI+ returns null, please check!", "AI+ Info", JOptionPane.WARNING_MESSAGE); - } - } catch (Exception ignored) { - JOptionPane.showMessageDialog(Datatable.this, "AI+ returns error, please check!", "AI+ Info", JOptionPane.ERROR_MESSAGE); - } - } - }; - worker.execute(); - - aiEmpoweredMenu.setVisible(false); - } - private void performSearch() { RowFilter firstRowFilter = applyFirstSearchFilter(); RowFilter secondRowFilter = applySecondFilter(); diff --git a/src/main/java/hae/instances/http/HttpMessageActiveHandler.java b/src/main/java/hae/instances/http/HttpMessageActiveHandler.java index df3d323..ab15c52 100644 --- a/src/main/java/hae/instances/http/HttpMessageActiveHandler.java +++ b/src/main/java/hae/instances/http/HttpMessageActiveHandler.java @@ -84,7 +84,7 @@ public ResponseReceivedAction handleHttpResponseReceived(HttpResponseReceived ht new SwingWorker() { @Override protected Void doInBackground() { - messageTableModel.add(httpRequestResponse, url, method, status, length, comment, color, "", ""); + messageTableModel.add(httpRequestResponse, url, method, status, length, comment, color, true); return null; } }.execute(); diff --git a/src/main/java/hae/instances/http/HttpMessagePassiveHandler.java b/src/main/java/hae/instances/http/HttpMessagePassiveHandler.java index 3abe297..81cbc69 100644 --- a/src/main/java/hae/instances/http/HttpMessagePassiveHandler.java +++ b/src/main/java/hae/instances/http/HttpMessagePassiveHandler.java @@ -71,7 +71,7 @@ public AuditResult passiveAudit(HttpRequestResponse httpRequestResponse) { new SwingWorker() { @Override protected Void doInBackground() { - messageTableModel.add(httpRequestResponse, url, method, status, length, comment, color, "", ""); + messageTableModel.add(httpRequestResponse, url, method, status, length, comment, color, true); return null; } }.execute(); diff --git a/src/main/java/hae/instances/http/utils/RegularMatcher.java b/src/main/java/hae/instances/http/utils/RegularMatcher.java index 70df3de..dd0ee6b 100644 --- a/src/main/java/hae/instances/http/utils/RegularMatcher.java +++ b/src/main/java/hae/instances/http/utils/RegularMatcher.java @@ -1,12 +1,15 @@ package hae.instances.http.utils; import burp.api.montoya.MontoyaApi; +import burp.api.montoya.persistence.PersistedList; +import burp.api.montoya.persistence.PersistedObject; import dk.brics.automaton.Automaton; import dk.brics.automaton.AutomatonMatcher; import dk.brics.automaton.RegExp; import dk.brics.automaton.RunAutomaton; import hae.Config; import hae.cache.CachePool; +import hae.utils.DataManager; import hae.utils.string.HashCalculator; import hae.utils.string.StringProcessor; @@ -38,7 +41,7 @@ public Map> match(String host, String type, String m // 多线程执行,一定程度上减少阻塞现象 String matchContent = ""; // 遍历获取规则 - List result = new ArrayList<>(); + List result; Map tmpMap = new HashMap<>(); boolean loaded = (Boolean) objects[0]; @@ -78,7 +81,7 @@ public Map> match(String host, String type, String m } try { - result.addAll(matchByRegex(f_regex, s_regex, matchContent, format, engine, sensitive)); + result = new ArrayList<>(matchByRegex(f_regex, s_regex, matchContent, format, engine, sensitive)); } catch (Exception e) { api.logging().logToError(String.format("[x] Error Info:\nName: %s\nRegex: %s", name, f_regex)); api.logging().logToError(e.getMessage()); @@ -98,7 +101,7 @@ public Map> match(String host, String type, String m String nameAndSize = String.format("%s (%s)", name, result.size()); finalMap.put(nameAndSize, tmpMap); - putDataToGlobalMap(host, name, result); + putDataToGlobalMap(api, host, name, result, true); } } } @@ -108,7 +111,7 @@ public Map> match(String host, String type, String m } } - public static void putDataToGlobalMap(String host, String name, List dataList) { + public static void putDataToGlobalMap(MontoyaApi api, String host, String name, List dataList, boolean flag) { // 添加到全局变量中,便于Databoard检索 if (!Objects.equals(host, "") && host != null) { Config.globalDataMap.compute(host, (existingHost, existingMap) -> { @@ -120,6 +123,18 @@ public static void putDataToGlobalMap(String host, String name, List dat return new ArrayList<>(combinedSet); }); + if (flag) { + // 数据存储在BurpSuite空间内 + DataManager dataManager = new DataManager(api); + PersistedObject persistedObject = PersistedObject.persistedObject(); + gRuleMap.forEach((kName, vList) -> { + PersistedList persistedList = PersistedList.persistedStringList(); + persistedList.addAll(vList); + persistedObject.setStringList(kName, persistedList); + }); + dataManager.putData("data", host, persistedObject); + } + return gRuleMap; }); @@ -128,7 +143,7 @@ public static void putDataToGlobalMap(String host, String name, List dat String anyHost = (splitHost.length > 2 && !StringProcessor.matchHostIsIp(onlyHost)) ? StringProcessor.replaceFirstOccurrence(onlyHost, splitHost[0], "*") : ""; - if (!Config.globalDataMap.containsKey(anyHost) && anyHost.length() > 0) { + if (!Config.globalDataMap.containsKey(anyHost) && !anyHost.isEmpty()) { // 添加通配符Host,实际数据从查询哪里将所有数据提取 Config.globalDataMap.put(anyHost, new HashMap<>()); } diff --git a/src/main/java/hae/instances/websocket/WebSocketMessageHandler.java b/src/main/java/hae/instances/websocket/WebSocketMessageHandler.java index 9597478..175666f 100644 --- a/src/main/java/hae/instances/websocket/WebSocketMessageHandler.java +++ b/src/main/java/hae/instances/websocket/WebSocketMessageHandler.java @@ -22,7 +22,7 @@ public TextMessageReceivedAction handleTextMessageReceived(InterceptedTextMessag String message = interceptedTextMessage.payload(); List> result = messageProcessor.processMessage("", message, true); - if (result != null && !result.isEmpty() && result.size() > 0) { + if (result != null && !result.isEmpty()) { interceptedTextMessage.annotations().setHighlightColor(HighlightColor.highlightColor(result.get(0).get("color"))); interceptedTextMessage.annotations().setNotes(result.get(1).get("comment")); } diff --git a/src/main/java/hae/utils/ConfigLoader.java b/src/main/java/hae/utils/ConfigLoader.java index 2435367..4cb61a6 100644 --- a/src/main/java/hae/utils/ConfigLoader.java +++ b/src/main/java/hae/utils/ConfigLoader.java @@ -1,9 +1,6 @@ package hae.utils; import burp.api.montoya.MontoyaApi; -import burp.api.montoya.http.RequestOptions; -import burp.api.montoya.http.message.HttpRequestResponse; -import burp.api.montoya.http.message.requests.HttpRequest; import hae.Config; import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; @@ -46,7 +43,7 @@ public ConfigLoader(MontoyaApi api) { File rulesFilePath = new File(this.rulesFilePath); if (!(rulesFilePath.exists() && rulesFilePath.isFile())) { - initRulesByRes(); + initRules(); } Config.globalRules = getRules(); @@ -137,18 +134,6 @@ public Map getRules() { return rules; } - public String getAlibabaAIAPIKey() { - return getValueFromConfig("AlibabaAIAPIKey", ""); - } - - public String getMoonshotAIAPIKey() { - return getValueFromConfig("MoonshotAIAPIKey", ""); - } - - public String getAIPrompt() { - return getValueFromConfig("AIPrompt", Config.prompt); - } - public String getBlockHost() { return getValueFromConfig("BlockHost", Config.host); } @@ -191,18 +176,6 @@ private String getValueFromConfig(String name, String defaultValue) { return defaultValue; } - public void setAlibabaAIAPIKey(String apiKey) { - setValueToConfig("AlibabaAIAPIKey", apiKey); - } - - public void setMoonshotAIAPIKey(String apiKey) { - setValueToConfig("MoonshotAIAPIKey", apiKey); - } - - public void setAIPrompt(String prompt) { - setValueToConfig("AIPrompt", prompt); - } - public void setExcludeSuffix(String excludeSuffix) { setValueToConfig("ExcludeSuffix", excludeSuffix); } @@ -250,11 +223,12 @@ private Map loadCurrentConfig() { } } - public void initRulesByRes() { - boolean isCopySuccess = copyRulesToFile(this.rulesFilePath); - if (!isCopySuccess) { + public boolean initRules() { + boolean ret = copyRulesToFile(this.rulesFilePath); + if (!ret) { api.extension().unload(); } + return ret; } private boolean copyRulesToFile(String targetFilePath) { @@ -277,33 +251,4 @@ private boolean copyRulesToFile(String targetFilePath) { return false; } - - public void initRulesByNet() { - Thread t = new Thread() { - public void run() { - pullRules(); - } - }; - t.start(); - try { - t.join(10000); - } catch (Exception ignored) { - } - } - - private void pullRules() { - try { - String url = "https://raw.githubusercontent.com/gh0stkey/HaE/gh-pages/Rules.yml"; - HttpRequest httpRequest = HttpRequest.httpRequestFromUrl(url); - HttpRequestResponse requestResponse = api.http().sendRequest(httpRequest, RequestOptions.requestOptions().withUpstreamTLSVerification()); - String responseBody = requestResponse.response().bodyToString(); - if (responseBody.contains("rules")) { - FileOutputStream fileOutputStream = new FileOutputStream(rulesFilePath); - fileOutputStream.write(responseBody.getBytes()); - fileOutputStream.close(); - } - } catch (Exception ignored) { - api.extension().unload(); - } - } } diff --git a/src/main/java/hae/utils/DataManager.java b/src/main/java/hae/utils/DataManager.java new file mode 100644 index 0000000..732260b --- /dev/null +++ b/src/main/java/hae/utils/DataManager.java @@ -0,0 +1,85 @@ +package hae.utils; + +import burp.api.montoya.MontoyaApi; +import burp.api.montoya.http.message.HttpRequestResponse; +import burp.api.montoya.http.message.requests.HttpRequest; +import burp.api.montoya.http.message.responses.HttpResponse; +import burp.api.montoya.persistence.PersistedList; +import burp.api.montoya.persistence.PersistedObject; +import burp.api.montoya.persistence.Persistence; +import hae.component.board.message.MessageTableModel; +import hae.instances.http.utils.RegularMatcher; + +public class DataManager { + private final MontoyaApi api; + private final Persistence persistence; + + public DataManager(MontoyaApi api) { + this.api = api; + this.persistence = api.persistence(); + } + + private void saveIndex(String indexName, String indexValue) { + PersistedList 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) { + persistence.extensionData().deleteChildObject(dataName); + } + persistence.extensionData().setChildObject(dataName, persistedObject); + saveIndex(dataType, dataName); + } + + public void loadData(MessageTableModel messageTableModel) { + // 1. 获取索引 + PersistedList dataIndex = persistence.extensionData().getStringList("data"); // 数据索引 + PersistedList messageIndex = persistence.extensionData().getStringList("message"); // 消息索引 + + // 2. 从索引获取数据 + loadHaEData(dataIndex); + loadMessageData(messageIndex, messageTableModel); + + } + + private void loadHaEData(PersistedList dataIndex) { + if (dataIndex != null && !dataIndex.isEmpty()) { + dataIndex.parallelStream().forEach(index -> { + PersistedObject dataObj = persistence.extensionData().getChildObject(index); + dataObj.stringListKeys().forEach(dataKey -> { + RegularMatcher.putDataToGlobalMap(api, index, dataKey, dataObj.getStringList(dataKey).stream().toList(), false); + }); + }); + } + } + + private void loadMessageData(PersistedList messageIndex, MessageTableModel messageTableModel) { + if (messageIndex != null && !messageIndex.isEmpty()) { + messageIndex.parallelStream().forEach(index -> { + PersistedObject dataObj = persistence.extensionData().getChildObject(index); + HttpRequestResponse messageInfo = dataObj.getHttpRequestResponse("messageInfo"); + String comment = dataObj.getString("comment"); + String color = dataObj.getString("color"); + HttpRequest request = messageInfo.request(); + HttpResponse response = messageInfo.response(); + String method = request.method(); + String url = request.url(); + String status = String.valueOf(response.statusCode()); + String length = String.valueOf(response.toByteArray().length()); + messageTableModel.add(messageInfo, url, method, status, length, comment, color, false); + }); + } + } +} diff --git a/src/main/java/hae/utils/UIEnhancer.java b/src/main/java/hae/utils/UIEnhancer.java index a97482a..01e0daf 100644 --- a/src/main/java/hae/utils/UIEnhancer.java +++ b/src/main/java/hae/utils/UIEnhancer.java @@ -41,6 +41,4 @@ private static void setPlaceholderText(JTextField textField) { textField.setText(placeholderText); textField.putClientProperty("isPlaceholder", true); } - - } diff --git a/src/main/java/hae/utils/http/HttpUtils.java b/src/main/java/hae/utils/http/HttpUtils.java index 2b87905..38be798 100644 --- a/src/main/java/hae/utils/http/HttpUtils.java +++ b/src/main/java/hae/utils/http/HttpUtils.java @@ -3,9 +3,7 @@ import burp.api.montoya.MontoyaApi; import burp.api.montoya.http.message.HttpRequestResponse; import burp.api.montoya.http.message.requests.HttpRequest; -import burp.api.montoya.http.message.requests.HttpTransformation; import burp.api.montoya.http.message.responses.HttpResponse; -import burp.api.montoya.utilities.RandomUtils; import hae.utils.ConfigLoader; import hae.utils.string.StringProcessor; @@ -21,25 +19,6 @@ public HttpUtils(MontoyaApi api, ConfigLoader configLoader) { this.configLoader = configLoader; } - public HttpRequest generateRequestByMultipartUploadMethod(String url, String name, String filename, String content) { - HttpRequest baseRequest = HttpRequest.httpRequestFromUrl(url).withTransformationApplied(HttpTransformation.TOGGLE_METHOD); - - String boundary = api.utilities().randomUtils().randomString(32, RandomUtils.CharacterSet.ASCII_LETTERS); - - String newBody = String.format("--%s\r\nContent-Disposition: form-data; name=\"%s\"; filename=\"%s\"\r\n\r\n%s\r\n", boundary, name, filename, content) + - String.format("--%s\r\nContent-Disposition: form-data; name=\"%s\"\r\n\r\n%s\r\n", boundary, "purpose", "file-extract") + - "--" + boundary + "--\r\n"; - - baseRequest = baseRequest.withUpdatedHeader("Content-Type", "multipart/form-data; boundary=" + boundary).withBody(newBody); - - return baseRequest; - } - - - public HttpRequest generateRequestByDeleteMethod(String url) { - return HttpRequest.httpRequestFromUrl(url).withMethod("DELETE"); - } - public boolean verifyHttpRequestResponse(HttpRequestResponse requestResponse, String toolType) { HttpRequest request = requestResponse.request(); HttpResponse response = requestResponse.response(); diff --git a/src/main/java/hae/utils/project/FileProcessor.java b/src/main/java/hae/utils/project/FileProcessor.java deleted file mode 100644 index 7e37b6d..0000000 --- a/src/main/java/hae/utils/project/FileProcessor.java +++ /dev/null @@ -1,47 +0,0 @@ -package hae.utils.project; - -import java.io.File; -import java.nio.file.DirectoryStream; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Comparator; - -public class FileProcessor { - public static void deleteDirectoryWithContents(Path pathToBeDeleted) { - if (pathToBeDeleted != null) { - try { - Files.walk(pathToBeDeleted) - .sorted(Comparator.reverseOrder()) - .map(Path::toFile) - .forEach(File::delete); - } catch (Exception ignored) { - } - } - } - - public static byte[] readFileContent(String basePath, String fileName) { - Path filePath = Paths.get(basePath, fileName); - Path path = Paths.get(basePath); - try { - byte[] fileContent = Files.readAllBytes(filePath); - - Files.deleteIfExists(filePath); - - boolean isEmpty = isDirectoryEmpty(path); - if (isEmpty) { - Files.deleteIfExists(path); - } - - return fileContent; - } catch (Exception e) { - return new byte[0]; - } - } - - private static boolean isDirectoryEmpty(Path directory) throws Exception { - try (DirectoryStream dirStream = Files.newDirectoryStream(directory)) { - return !dirStream.iterator().hasNext(); - } - } -} diff --git a/src/main/java/hae/utils/project/ProjectProcessor.java b/src/main/java/hae/utils/project/ProjectProcessor.java deleted file mode 100644 index a3371b4..0000000 --- a/src/main/java/hae/utils/project/ProjectProcessor.java +++ /dev/null @@ -1,187 +0,0 @@ -package hae.utils.project; - -import burp.api.montoya.MontoyaApi; -import hae.utils.project.model.HaeFileContent; -import org.yaml.snakeyaml.LoaderOptions; -import org.yaml.snakeyaml.Yaml; - -import java.io.*; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.StandardCopyOption; -import java.util.*; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; -import java.util.zip.ZipOutputStream; - -public class ProjectProcessor { - private final MontoyaApi api; - - public ProjectProcessor(MontoyaApi api) { - this.api = api; - } - - public boolean createHaeFile(String haeFilePath, String host, Map> dataMap, Map> urlMap, Map> httpMap) { - ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 2); - - List> tasks = new ArrayList<>(); - - ByteArrayOutputStream dataYamlStream = new ByteArrayOutputStream(); - ByteArrayOutputStream urlYamlStream = new ByteArrayOutputStream(); - Yaml yaml = new Yaml(); - - yaml.dump(dataMap, new OutputStreamWriter(dataYamlStream, StandardCharsets.UTF_8)); - yaml.dump(urlMap, new OutputStreamWriter(urlYamlStream, StandardCharsets.UTF_8)); - - try (ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(haeFilePath))) { - zipOut.putNextEntry(new ZipEntry("info")); - zipOut.write(host.getBytes(StandardCharsets.UTF_8)); - zipOut.closeEntry(); - - zipOut.putNextEntry(new ZipEntry("data")); - zipOut.write(dataYamlStream.toByteArray()); - zipOut.closeEntry(); - - zipOut.putNextEntry(new ZipEntry("url")); - zipOut.write(urlYamlStream.toByteArray()); - zipOut.closeEntry(); - - for (String httpHash : httpMap.keySet()) { - Map httpItem = httpMap.get(httpHash); - tasks.add(() -> { - try { - ByteArrayOutputStream httpOutStream = new ByteArrayOutputStream(); - byte[] request = (byte[]) httpItem.get("request"); - byte[] response = (byte[]) httpItem.get("response"); - - httpOutStream.write(response); - httpOutStream.write(request); - - synchronized (zipOut) { - zipOut.putNextEntry(new ZipEntry(String.format("http/%s", httpHash))); - zipOut.write(httpOutStream.toByteArray()); - zipOut.closeEntry(); - } - } catch (Exception e) { - api.logging().logToError("createHaeFile: " + e.getMessage()); - } - - return null; - }); - } - - executor.invokeAll(tasks); - } catch (Exception e) { - api.logging().logToError("createHaeFile: " + e.getMessage()); - return false; - } finally { - executor.shutdown(); - } - - return true; - } - - public HaeFileContent readHaeFile(String haeFilePath) { - ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 2); - List> tasks = new ArrayList<>(); - - HaeFileContent haeFileContent = new HaeFileContent(api); - LoaderOptions loaderOptions = new LoaderOptions(); - loaderOptions.setMaxAliasesForCollections(Integer.MAX_VALUE); - loaderOptions.setCodePointLimit(Integer.MAX_VALUE); - Yaml yaml = new Yaml(loaderOptions); - Path tempDirectory = null; - - try { - if (hasValidStructure(haeFilePath)) { - tempDirectory = Files.createTempDirectory("hae"); - haeFileContent.setHttpPath(tempDirectory.toString()); - - try (ZipFile zipFile = new ZipFile(haeFilePath)) { - Enumeration entries = zipFile.entries(); - while (entries.hasMoreElements()) { - ZipEntry entry = entries.nextElement(); - String fileName = entry.getName(); - if (fileName.startsWith("http/")) { - Path filePath = tempDirectory.resolve(fileName.substring("http/".length())); - - tasks.add(() -> { - try (InputStream in = zipFile.getInputStream(entry)) { - Files.copy(in, filePath, StandardCopyOption.REPLACE_EXISTING); - } catch (IOException e) { - api.logging().logToError("readHaeFile: " + e.getMessage()); - } - - return null; - }); - } else { - try (InputStream in = zipFile.getInputStream(entry)) { - switch (fileName) { - case "info" -> - haeFileContent.setHost(new String(in.readAllBytes(), StandardCharsets.UTF_8)); - case "data" -> - haeFileContent.setDataMap(yaml.load(new InputStreamReader(in, StandardCharsets.UTF_8))); - case "url" -> - haeFileContent.setUrlMap(yaml.load(new InputStreamReader(in, StandardCharsets.UTF_8))); - } - } - } - } - - executor.invokeAll(tasks); - } - } - } catch (Exception e) { - api.logging().logToError("readHaeFile: " + e.getMessage()); - if (tempDirectory != null) { - FileProcessor.deleteDirectoryWithContents(tempDirectory); - } - haeFileContent = null; - } finally { - executor.shutdown(); - } - - return haeFileContent; - } - - private boolean hasValidStructure(String zipFilePath) { - Set requiredRootEntries = new HashSet<>(); - requiredRootEntries.add("info"); - requiredRootEntries.add("data"); - requiredRootEntries.add("url"); - - boolean hasHttpDirectoryWithFiles = false; - - try { - ZipFile zipFile = new ZipFile(zipFilePath); - Enumeration entries = zipFile.entries(); - - while (entries.hasMoreElements()) { - ZipEntry entry = entries.nextElement(); - String name = entry.getName(); - - if (!entry.isDirectory() && !name.contains("/")) { - requiredRootEntries.remove(name); - } - - if (name.startsWith("http/") && !entry.isDirectory()) { - hasHttpDirectoryWithFiles = true; - } - - if (requiredRootEntries.isEmpty() && hasHttpDirectoryWithFiles) { - break; - } - } - - zipFile.close(); - } catch (Exception ignored) { - } - - return requiredRootEntries.isEmpty() && hasHttpDirectoryWithFiles; - } -} - diff --git a/src/main/java/hae/utils/project/model/HaeFileContent.java b/src/main/java/hae/utils/project/model/HaeFileContent.java deleted file mode 100644 index 5782d70..0000000 --- a/src/main/java/hae/utils/project/model/HaeFileContent.java +++ /dev/null @@ -1,76 +0,0 @@ -package hae.utils.project.model; - -import burp.api.montoya.MontoyaApi; - -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class HaeFileContent { - private final MontoyaApi api; - private String host; - private String httpPath; - private final Map> dataMap; - private final Map> urlMap; - - public HaeFileContent(MontoyaApi api) { - this.api = api; - this.dataMap = new HashMap<>(); - this.urlMap = new HashMap<>(); - } - - public String getHost() { - return host; - } - - public Map> getDataMap() { - return dataMap; - } - - public Map> getUrlMap() { - return urlMap; - } - - public String getHttpPath() { - return httpPath; - } - - public void setHost(String host) { - this.host = host; - } - - public void setHttpPath(String path) { - this.httpPath = path; - } - - public void setDataMap(Map> dataMap) { - for (Map.Entry> entry : dataMap.entrySet()) { - List values = new ArrayList<>(); - for (Object value : entry.getValue()) { - try { - values.add(new String((byte[]) value, StandardCharsets.UTF_8)); - } catch (Exception e) { - values.add(value.toString()); - } - } - this.dataMap.put(entry.getKey(), values); - } - } - - public void setUrlMap(Map> urlMap) { - for (Map.Entry> entry : urlMap.entrySet()) { - Map newValues = new HashMap<>(); - Map values = entry.getValue(); - for (String key : values.keySet()) { - try { - newValues.put(key, new String((byte[]) values.get(key), StandardCharsets.UTF_8)); - } catch (Exception e) { - newValues.put(key, values.get(key).toString()); - } - } - this.urlMap.put(entry.getKey(), newValues); - } - } -} \ No newline at end of file diff --git a/src/main/resources/rules/Rules.yml b/src/main/resources/rules/Rules.yml index ac6edc0..e18ed1f 100644 --- a/src/main/resources/rules/Rules.yml +++ b/src/main/resources/rules/Rules.yml @@ -1,293 +1,303 @@ rules: -- group: Fingerprint - rule: - - name: Shiro - loaded: true - f_regex: (=deleteMe|rememberMe=) - s_regex: '' - format: '{0}' - color: green - scope: any header - engine: dfa - sensitive: true - - name: JSON Web Token - loaded: true - f_regex: (eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9._-]{10,}|eyJ[A-Za-z0-9_\/+-]{10,}\.[A-Za-z0-9._\/+-]{10,}) - s_regex: '' - format: '{0}' - color: green - scope: any - engine: nfa - sensitive: true - - name: Swagger UI - loaded: true - f_regex: ((swagger-ui.html)|(\"swagger\":)|(Swagger UI)|(swaggerUi)|(swaggerVersion)) - s_regex: '' - format: '{0}' - color: red - scope: response body - engine: dfa - sensitive: false - - name: Ueditor - loaded: true - f_regex: (ueditor\.(config|all)\.js) - s_regex: '' - format: '{0}' - color: green - scope: response body - engine: dfa - sensitive: false - - name: Druid - loaded: true - f_regex: (Druid Stat Index) - s_regex: '' - format: '{0}' - color: orange - scope: response body - engine: dfa - sensitive: false -- group: Maybe Vulnerability - rule: - - name: Java Deserialization - loaded: true - f_regex: (javax\.faces\.ViewState) - s_regex: '' - format: '{0}' - color: yellow - scope: response body - engine: dfa - sensitive: false - - name: Debug Logic Parameters - loaded: true - f_regex: ((access=)|(adm=)|(admin=)|(alter=)|(cfg=)|(clone=)|(config=)|(create=)|(dbg=)|(debug=)|(delete=)|(disable=)|(edit=)|(enable=)|(exec=)|(execute=)|(grant=)|(load=)|(make=)|(modify=)|(rename=)|(reset=)|(root=)|(shell=)|(test=)|(toggl=)) - s_regex: '' - format: '{0}' - color: cyan - scope: request - engine: dfa - sensitive: false - - name: URL As A Value - loaded: true - f_regex: (=(https?)(://|%3a%2f%2f)) - s_regex: '' - format: '{0}' - color: cyan - scope: any - engine: nfa - sensitive: false - - name: Upload Form - loaded: true - f_regex: (type\=\"file\") - s_regex: '' - format: '{0}' - color: yellow - scope: response body - engine: dfa - sensitive: false - - name: DoS Paramters - loaded: true - f_regex: ((size=)|(page=)|(num=)|(limit=)|(start=)|(end=)|(count=)) - s_regex: '' - format: '{0}' - color: cyan - scope: request - engine: dfa - sensitive: false -- group: Basic Information - rule: - - name: Email - loaded: true - f_regex: (([a-z0-9]+[_|\.])*[a-z0-9]+@([a-z0-9]+[-|_|\.])*[a-z0-9]+\.((?!js|css|jpg|jpeg|png|ico)[a-z]{2,5})) - s_regex: '' - format: '{0}' - color: yellow - scope: response - engine: nfa - sensitive: false - - name: Chinese IDCard - loaded: true - f_regex: '[^0-9]((\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(\d{6}(18|19|20)\d{2}(0[1-9]|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)))[^0-9]' - s_regex: '' - format: '{0}' - color: orange - scope: response body - engine: nfa - sensitive: true - - name: Chinese Mobile Number - loaded: true - f_regex: '[^\w]((?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8})[^\w]' - s_regex: '' - format: '{0}' - color: orange - scope: response body - engine: nfa - sensitive: false - - name: Internal IP Address - loaded: true - f_regex: '[^0-9]((127\.0\.0\.1)|(10\.\d{1,3}\.\d{1,3}\.\d{1,3})|(172\.((1[6-9])|(2\d)|(3[01]))\.\d{1,3}\.\d{1,3})|(192\.168\.\d{1,3}\.\d{1,3}))' - s_regex: '' - format: '{0}' - color: cyan - scope: response - engine: nfa - sensitive: true - - name: MAC Address - loaded: true - f_regex: (^([a-fA-F0-9]{2}(:[a-fA-F0-9]{2}){5})|[^a-zA-Z0-9]([a-fA-F0-9]{2}(:[a-fA-F0-9]{2}){5})) - s_regex: '' - format: '{0}' - color: green - scope: response - engine: nfa - sensitive: true -- group: Sensitive Information - rule: - - name: Cloud Key - loaded: true - f_regex: (((access)(|-|_)(key)(|-|_)(id|secret))|(LTAI[a-z0-9]{12,20})) - s_regex: '' - format: '{0}' - color: yellow - scope: any - engine: nfa - sensitive: false - - name: Windows File/Dir Path - loaded: true - f_regex: '[^\w]([a-zA-Z]:\\\\?(?:[^<>:/\\|?*]+\\\\?)*)([^<>:/\\|?*]+(?:\.[^<>:/\\|?*]+)?)' - s_regex: '' - format: '{0}' - color: green - scope: response - engine: nfa - sensitive: true - - name: Password Field - loaded: true - f_regex: ((|'|")(|[\w]{1,10})([p](ass|wd|asswd|assword))(|[\w]{1,10})(|'|")(:|=)( - |)('|")(.*?)('|")(|,)) - s_regex: '' - format: '{0}' - color: yellow - scope: response body - engine: nfa - sensitive: false - - name: Username Field - loaded: true - f_regex: ((|'|")(|[\w]{1,10})(([u](ser|name|sername))|(account)|((((create|update)((d|r)|(by|on|at)))|(creator))))(|[\w]{1,10})(|'|")(:|=)( - |)('|")(.*?)('|")(|,)) - s_regex: '' - format: '{0}' - color: green - scope: response body - engine: nfa - sensitive: false - - name: WeCom Key - loaded: true - f_regex: ((corp)(id|secret)) - s_regex: '' - format: '{0}' - color: green - scope: response body - engine: dfa - sensitive: false - - name: JDBC Connection - loaded: true - f_regex: (jdbc:[a-z:]+://[a-z0-9\.\-_:;=/@?,&]+) - s_regex: '' - format: '{0}' - color: yellow - scope: any - engine: nfa - sensitive: false - - name: Authorization Header - loaded: true - f_regex: ((basic [a-z0-9=:_\+\/-]{5,100})|(bearer [a-z0-9_.=:_\+\/-]{5,100})) - s_regex: '' - format: '{0}' - color: yellow - scope: response body - engine: nfa - sensitive: false - - name: Sensitive Field - loaded: true - f_regex: ((\[)?('|")?([\w]{0,10})((key)|(secret)|(token)|(config)|(auth)|(access)|(admin)|(ticket))([\w]{0,10})('|")?(\])?( - |)(:|=)( |)('|")(.*?)('|")(|,)) - s_regex: '' - format: '{0}' - color: yellow - scope: response - engine: nfa - sensitive: false -- group: Other - rule: - - name: Linkfinder - 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,}|)))(?:"|') - s_regex: '' - format: '{0}' - color: gray - scope: response body - engine: nfa - sensitive: true - - name: Source Map - loaded: true - f_regex: (\.js\.map) - s_regex: '' - format: '{0}' - color: pink - scope: response body - engine: dfa - sensitive: false - - name: Create Script - loaded: true - f_regex: (\{[^{}]*\}\s*\[[^\s]*\]\s*\+\s*"[^\s]*\.js") - s_regex: '"?([\w].*?)"?:"(.*?)"' - format: '{0}.{1}' - color: green - scope: response body - engine: nfa - sensitive: false - - name: URL Schemes - loaded: true - f_regex: (\b(?![\w]{0,10}?https?://)(([-A-Za-z0-9]{1,20})://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|])) - s_regex: '' - format: '{0}' - color: yellow - scope: response body - engine: nfa - sensitive: false - - name: Router Push - loaded: true - f_regex: (\$router\.push) - s_regex: '' - format: '{0}' - color: magenta - scope: response body - engine: dfa - sensitive: false - - name: All URL - loaded: true - f_regex: (https?://[-A-Za-z0-9+&@#/%?=~_|!:,.;\u4E00-\u9FFF]+[-A-Za-z0-9+&@#/%=~_|]) - s_regex: '' - format: '{0}' - color: gray - scope: response body - engine: nfa - sensitive: true - - name: Request URI - loaded: true - f_regex: ' ((?!.*\.js(\?.*)?$)(.*?[^.js$])) ' - s_regex: '' - format: '{0}' - color: gray - scope: request line - engine: nfa - sensitive: false - - name: 302 Location - loaded: true - f_regex: 'Location: (.*?)\n' - s_regex: '' - format: '{0}' - color: gray - scope: response header - engine: nfa - sensitive: false + - group: Fingerprint + rule: + - name: Shiro + loaded: true + f_regex: (=deleteMe|rememberMe=) + s_regex: '' + format: '{0}' + color: green + scope: any header + engine: dfa + sensitive: true + - name: JSON Web Token + loaded: true + f_regex: (eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9._-]{10,}|eyJ[A-Za-z0-9_\/+-]{10,}\.[A-Za-z0-9._\/+-]{10,}) + s_regex: '' + format: '{0}' + color: green + scope: any + engine: nfa + sensitive: true + - name: Swagger UI + loaded: true + f_regex: ((swagger-ui.html)|(\"swagger\":)|(Swagger UI)|(swaggerUi)|(swaggerVersion)) + s_regex: '' + format: '{0}' + color: red + scope: response body + engine: dfa + sensitive: false + - name: Ueditor + loaded: true + f_regex: (ueditor\.(config|all)\.js) + s_regex: '' + format: '{0}' + color: green + scope: response body + engine: dfa + sensitive: false + - name: Druid + loaded: true + f_regex: (Druid Stat Index) + s_regex: '' + format: '{0}' + color: orange + scope: response body + engine: dfa + sensitive: false + - group: Maybe Vulnerability + rule: + - name: Java Deserialization + loaded: true + f_regex: (javax\.faces\.ViewState) + s_regex: '' + format: '{0}' + color: yellow + scope: response body + engine: dfa + sensitive: false + - name: Debug Logic Parameters + loaded: true + f_regex: ((access=)|(adm=)|(admin=)|(alter=)|(cfg=)|(clone=)|(config=)|(create=)|(dbg=)|(debug=)|(delete=)|(disable=)|(edit=)|(enable=)|(exec=)|(execute=)|(grant=)|(load=)|(make=)|(modify=)|(rename=)|(reset=)|(root=)|(shell=)|(test=)|(toggl=)) + s_regex: '' + format: '{0}' + color: cyan + scope: request + engine: dfa + sensitive: false + - name: URL As A Value + loaded: true + f_regex: (=(https?)(://|%3a%2f%2f)) + s_regex: '' + format: '{0}' + color: cyan + scope: any + engine: nfa + sensitive: false + - name: Upload Form + loaded: true + f_regex: (type\=\"file\") + s_regex: '' + format: '{0}' + color: yellow + scope: response body + engine: dfa + sensitive: false + - name: DoS Paramters + loaded: true + f_regex: ((size=)|(page=)|(num=)|(limit=)|(start=)|(end=)|(count=)) + s_regex: '' + format: '{0}' + color: cyan + scope: request + engine: dfa + sensitive: false + - group: Basic Information + rule: + - name: Email + loaded: true + f_regex: (([a-z0-9]+[_|\.])*[a-z0-9]+@([a-z0-9]+[-|_|\.])*[a-z0-9]+\.((?!js|css|jpg|jpeg|png|ico)[a-z]{2,5})) + s_regex: '' + format: '{0}' + color: yellow + scope: response + engine: nfa + sensitive: false + - name: Chinese IDCard + loaded: true + f_regex: '[^0-9]((\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(\d{6}(18|19|20)\d{2}(0[1-9]|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)))[^0-9]' + s_regex: '' + format: '{0}' + color: orange + scope: response body + engine: nfa + sensitive: true + - name: Chinese Mobile Number + loaded: true + f_regex: '[^\w]((?:(?:\+|0{0,2})86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8})[^\w]' + s_regex: '' + format: '{0}' + color: orange + scope: response body + engine: nfa + sensitive: false + - name: Internal IP Address + loaded: true + f_regex: '[^0-9]((127\.0\.0\.1)|(10\.\d{1,3}\.\d{1,3}\.\d{1,3})|(172\.((1[6-9])|(2\d)|(3[01]))\.\d{1,3}\.\d{1,3})|(192\.168\.\d{1,3}\.\d{1,3}))' + s_regex: '' + format: '{0}' + color: cyan + scope: response + engine: nfa + sensitive: true + - name: MAC Address + loaded: true + f_regex: (^([a-fA-F0-9]{2}(:[a-fA-F0-9]{2}){5})|[^a-zA-Z0-9]([a-fA-F0-9]{2}(:[a-fA-F0-9]{2}){5})) + s_regex: '' + format: '{0}' + color: green + scope: response + engine: nfa + sensitive: true + - group: Sensitive Information + rule: + - name: Cloud Key + loaded: true + f_regex: (((access)(|-|_)(key)(|-|_)(id|secret))|(LTAI[a-z0-9]{12,20})) + s_regex: '' + format: '{0}' + color: yellow + scope: any + engine: nfa + sensitive: false + - name: Windows File/Dir Path + loaded: true + f_regex: '[^\w]([a-zA-Z]:\\\\?(?:[^<>:/\\|?*]+\\\\?)*)([^<>:/\\|?*]+(?:\.[^<>:/\\|?*]+)?)' + s_regex: '' + format: '{0}' + color: green + scope: response + engine: nfa + sensitive: true + - name: Password Field + loaded: true + f_regex: ((|\\)(|'|")(|[\w]{1,10})([p](ass|wd|asswd|assword))(|[\w]{1,10})(|\\)(|'|")(:|=|\)\.val\()( + |)(|\\)('|")([^'"]+?)(|\\)('|")(|,|\))) + s_regex: '' + format: '{0}' + color: yellow + scope: response body + engine: nfa + sensitive: false + - name: Username Field + loaded: true + f_regex: ((|\\)(|'|")(|[\w]{1,10})(([u](ser|name|sername))|(account)|((((create|update)((d|r)|(by|on|at)))|(creator))))(|[\w]{1,10})(|\\)(|'|")(:|=|\)\.val\()( + |)(|\\)('|")([^'"]+?)(|\\)('|")(|,|\))) + s_regex: '' + format: '{0}' + color: green + scope: response body + engine: nfa + sensitive: false + - name: WeCom Key + loaded: true + f_regex: ((corp)(id|secret)) + s_regex: '' + format: '{0}' + color: green + scope: response body + engine: dfa + sensitive: false + - name: JDBC Connection + loaded: true + f_regex: (jdbc:[a-z:]+://[a-z0-9\.\-_:;=/@?,&]+) + s_regex: '' + format: '{0}' + color: yellow + scope: any + engine: nfa + sensitive: false + - name: Authorization Header + loaded: true + f_regex: ((basic [a-z0-9=:_\+\/-]{5,100})|(bearer [a-z0-9_.=:_\+\/-]{5,100})) + s_regex: '' + format: '{0}' + color: yellow + scope: response body + engine: nfa + sensitive: false + - name: Sensitive Field + loaded: true + f_regex: ((\[)?('|")?([\w]{0,10})((key)|(secret)|(token)|(config)|(auth)|(access)|(admin)|(ticket))([\w]{0,10})('|")?(\])?( + |)(:|=|\)\.val\()( |)('|")([^'"]+?)('|")(|,|\))) + s_regex: '' + format: '{0}' + color: yellow + scope: response + engine: nfa + sensitive: false + - name: Mobile Number Field + loaded: true + f_regex: ((|\\)(|'|")(|[\w]{1,10})(mobile|phone|sjh|shoujihao|concat)(|[\w]{1,10})(|\\)(|'|")(:|=|\)\.val\()( + |)(|\\)('|")([^'"]+?)(|\\)('|")(|,|\))) + s_regex: '' + format: '{0}' + color: green + scope: response body + engine: nfa + sensitive: false + - group: Other + rule: + - name: Linkfinder + 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,}|)))(?:"|') + s_regex: '' + format: '{0}' + color: gray + scope: response body + engine: nfa + sensitive: true + - name: Source Map + loaded: true + f_regex: (\.js\.map) + s_regex: '' + format: '{0}' + color: pink + scope: response body + engine: dfa + sensitive: false + - name: Create Script + loaded: true + f_regex: (\{[^{}]*\}\s*\[[^\s]*\]\s*\+\s*"[^\s]*\.js") + s_regex: '"?([\w].*?)"?:"(.*?)"' + format: '{0}.{1}' + color: green + scope: response body + engine: nfa + sensitive: false + - name: URL Schemes + loaded: true + f_regex: (\b(?![\w]{0,10}?https?://)(([-A-Za-z0-9]{1,20})://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|])) + s_regex: '' + format: '{0}' + color: yellow + scope: response body + engine: nfa + sensitive: false + - name: Router Push + loaded: true + f_regex: (\$router\.push) + s_regex: '' + format: '{0}' + color: magenta + scope: response body + engine: dfa + sensitive: false + - name: All URL + loaded: true + f_regex: (https?://[-A-Za-z0-9+&@#/%?=~_|!:,.;\u4E00-\u9FFF]+[-A-Za-z0-9+&@#/%=~_|]) + s_regex: '' + format: '{0}' + color: gray + scope: response body + engine: nfa + sensitive: true + - name: Request URI + loaded: true + f_regex: ' ((?!.*\.js(\?.*)?$)(.*?[^.js$])) ' + s_regex: '' + format: '{0}' + color: gray + scope: request line + engine: nfa + sensitive: false + - name: 302 Location + loaded: true + f_regex: 'Location: (.*?)\n' + s_regex: '' + format: '{0}' + color: gray + scope: response header + engine: nfa + sensitive: false