From e08b930fb57e0341435d0c89e39d4bf66f6cd0fb Mon Sep 17 00:00:00 2001 From: gh0stkey <24655118+gh0stkey@users.noreply.github.com> Date: Thu, 18 Jan 2024 12:07:20 +0800 Subject: [PATCH] Version: 2.5.11 Update --- src/main/java/burp/BurpExtender.java | 6 ++- src/main/java/burp/ui/board/Databoard.java | 24 ++++++--- .../java/burp/ui/board/DatatablePanel.java | 49 +++++++++---------- src/main/java/burp/ui/board/MessagePanel.java | 3 +- 4 files changed, 44 insertions(+), 38 deletions(-) diff --git a/src/main/java/burp/BurpExtender.java b/src/main/java/burp/BurpExtender.java index d390938..0ee2439 100644 --- a/src/main/java/burp/BurpExtender.java +++ b/src/main/java/burp/BurpExtender.java @@ -36,7 +36,7 @@ public class BurpExtender implements IBurpExtender, IHttpListener, IMessageEdito new ConfigLoader(); - String version = "2.5.10"; + String version = "2.5.11"; callbacks.setExtensionName(String.format("HaE (%s) - Highlighter and Extractor", version)); // 定义输出 @@ -128,6 +128,7 @@ public class BurpExtender implements IBurpExtender, IHttpListener, IMessageEdito private Map extractRequestMap; private Map extractResponseMap; private ArrayList titleList = new ArrayList<>(); + private byte[] message; public MarkInfoTab(IMessageEditorController controller, boolean editable) { this.controller = controller; @@ -151,6 +152,7 @@ public class BurpExtender implements IBurpExtender, IHttpListener, IMessageEdito @Override public boolean isEnabled(byte[] content, boolean isRequest) { + this.message = content; List> result = null; if (content.length != 0 && !helpers.bytesToString(content).equals("Loading...")) { try { @@ -178,7 +180,7 @@ public class BurpExtender implements IBurpExtender, IHttpListener, IMessageEdito @Override public byte[] getMessage() { - return null; + return message; } @Override diff --git a/src/main/java/burp/ui/board/Databoard.java b/src/main/java/burp/ui/board/Databoard.java index 24735b1..60c8808 100644 --- a/src/main/java/burp/ui/board/Databoard.java +++ b/src/main/java/burp/ui/board/Databoard.java @@ -76,7 +76,6 @@ public class Databoard extends JPanel { } private void initComponents() { - // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents hostLabel = new JLabel(); hostTextField = new JTextField(); dataTabbedPane = new JTabbedPane(JTabbedPane.TOP); @@ -165,6 +164,7 @@ public class Databoard extends JPanel { populateTabbedPaneByHost(selectedHost); } } + private void handleKeyEvents(KeyEvent e) { isMatchHost = true; int keyCode = e.getKeyCode(); @@ -313,17 +313,25 @@ public class Databoard extends JPanel { // 展示请求消息表单 JSplitPane messageSplitPane = this.messagePanel.getPanel(); this.splitPane.setRightComponent(messageSplitPane); - // 获取字段 table = this.messagePanel.getTable(); - // 设置对应字段宽度 - TableColumnModel columnModel = table.getColumnModel(); - TableColumn column = columnModel.getColumn(1); - column.setPreferredWidth(300); - column = columnModel.getColumn(2); - column.setPreferredWidth(300); + this.splitPane.addComponentListener(new ComponentAdapter() { + @Override + public void componentResized(ComponentEvent e) { + splitPane.setDividerLocation(0.4); + TableColumnModel columnModel = table.getColumnModel(); + int totalWidth = (int) (getWidth() * 0.6); + columnModel.getColumn(0).setPreferredWidth((int) (totalWidth * 0.1)); + columnModel.getColumn(1).setPreferredWidth((int) (totalWidth * 0.3)); + columnModel.getColumn(2).setPreferredWidth((int) (totalWidth * 0.3)); + columnModel.getColumn(3).setPreferredWidth((int) (totalWidth * 0.1)); + columnModel.getColumn(4).setPreferredWidth((int) (totalWidth * 0.1)); + columnModel.getColumn(5).setPreferredWidth((int) (totalWidth * 0.1)); + } + }); splitPane.setVisible(true); + applyHostFilter(selectedHost); // 主动调用一次stateChanged,使得dataTabbedPane可以精准展示内容 diff --git a/src/main/java/burp/ui/board/DatatablePanel.java b/src/main/java/burp/ui/board/DatatablePanel.java index 980a1ca..0817d30 100644 --- a/src/main/java/burp/ui/board/DatatablePanel.java +++ b/src/main/java/burp/ui/board/DatatablePanel.java @@ -163,33 +163,25 @@ public class DatatablePanel extends JPanel { } private void performSearch() { - // 检查文本字段的字体颜色是否为黑色,表示可以进行搜索 if (searchField.getForeground().equals(Color.BLACK)) { - // 获取搜索文本 - String searchText = searchField.getText(); - - // 创建行过滤器 - RowFilter rowFilter; - - // 检查搜索模式是否为选中状态 - if (searchMode.isSelected()) { - // 反向搜索:创建一个过滤器以排除与正则表达式匹配的行 - rowFilter = new RowFilter() { - public boolean include(Entry entry) { - // 对每一行的第二列进行判断(假设第二列的索引是1) - String entryValue = (String) entry.getValue(1); - // 如果该列的值不包含搜索文本,则返回true,否则返回false - Pattern pattern = new Pattern(searchText, REFlags.IGNORE_CASE); - - return searchText.isEmpty() || !pattern.matcher(entryValue).find(); + RowFilter rowFilter = new RowFilter() { + public boolean include(Entry entry) { + String searchFieldTextText = searchField.getText(); + Pattern pattern = null; + try { + pattern = new Pattern(searchFieldTextText, REFlags.IGNORE_CASE); + } catch (Exception ignored) { } - }; - } else { - // 正向搜索:创建一个过滤器以包含与正则表达式匹配的行 - rowFilter = RowFilter.regexFilter(String.format("(?i)%s", searchText), 1); - } - // 设置过滤器到排序器 + String entryValue = ((String) entry.getValue(1)).toLowerCase(); + searchFieldTextText = searchFieldTextText.toLowerCase(); + if (pattern != null) { + return searchFieldTextText.isEmpty() || pattern.matcher(entryValue).find() != searchMode.isSelected(); + } else { + return searchFieldTextText.isEmpty() || entryValue.contains(searchFieldTextText) != searchMode.isSelected(); + } + } + }; sorter.setRowFilter(rowFilter); } } @@ -231,10 +223,13 @@ public class DatatablePanel extends JPanel { for (int row : selectRows) { selectData.append(table.getValueAt(row, 1).toString()).append("\n"); } + // 便于单行复制,去除最后一个换行符 - String revData = selectData.reverse().toString().replaceFirst("\n", ""); - StringBuilder retData = new StringBuilder(revData).reverse(); - return retData.toString(); + if (selectData.length() > 0){ + selectData.deleteCharAt(selectData.length() - 1); + } + + return selectData.toString(); } public JTable getTable() { diff --git a/src/main/java/burp/ui/board/MessagePanel.java b/src/main/java/burp/ui/board/MessagePanel.java index 714817b..e135aa7 100644 --- a/src/main/java/burp/ui/board/MessagePanel.java +++ b/src/main/java/burp/ui/board/MessagePanel.java @@ -44,7 +44,7 @@ public class MessagePanel extends AbstractTableModel implements IMessageEditorCo private final List filteredLog = new ArrayList(); private IHttpRequestResponse currentlyDisplayedItem; private final IExtensionHelpers helpers; - private Table logTable; + private final Table logTable; public MessagePanel(IBurpExtenderCallbacks callbacks, IExtensionHelpers helpers) { this.callbacks = callbacks; @@ -66,6 +66,7 @@ public class MessagePanel extends AbstractTableModel implements IMessageEditorCo return age1.compareTo(age2); } }); + // Color字段根据颜色顺序进行排序 sorter.setComparator(5, new Comparator() { @Override