Version: 2.5.6 Update
This commit is contained in:
@@ -282,15 +282,7 @@ public class BurpExtender implements IBurpExtender, IHttpListener, IMessageEdito
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public byte[] getSelectedData() {
|
public byte[] getSelectedData() {
|
||||||
int[] selectRows = dataTable.getSelectedRows();
|
return helpers.stringToBytes(dataPanel.getSelectedData(dataTable));
|
||||||
StringBuilder selectData = new StringBuilder();
|
|
||||||
for (int row : selectRows) {
|
|
||||||
selectData.append(dataTable.getValueAt(row, 0).toString()).append("\n");
|
|
||||||
}
|
|
||||||
// 便于单行复制,去除最后一个换行符
|
|
||||||
String revData = selectData.reverse().toString().replaceFirst("\n", "");
|
|
||||||
StringBuilder retData = new StringBuilder(revData).reverse();
|
|
||||||
return helpers.stringToBytes(retData.toString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package burp.ui.board;
|
|||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
import java.awt.datatransfer.Clipboard;
|
||||||
|
import java.awt.datatransfer.StringSelection;
|
||||||
import java.awt.event.AdjustmentEvent;
|
import java.awt.event.AdjustmentEvent;
|
||||||
import java.awt.event.AdjustmentListener;
|
import java.awt.event.AdjustmentListener;
|
||||||
import java.awt.event.ComponentAdapter;
|
import java.awt.event.ComponentAdapter;
|
||||||
@@ -11,12 +13,14 @@ import java.awt.event.FocusListener;
|
|||||||
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseAdapter;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import javax.swing.JComponent;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
import javax.swing.JTable;
|
import javax.swing.JTable;
|
||||||
import javax.swing.JTextField;
|
import javax.swing.JTextField;
|
||||||
import javax.swing.RowFilter;
|
import javax.swing.RowFilter;
|
||||||
import javax.swing.ScrollPaneConstants;
|
import javax.swing.ScrollPaneConstants;
|
||||||
|
import javax.swing.TransferHandler;
|
||||||
import javax.swing.event.DocumentEvent;
|
import javax.swing.event.DocumentEvent;
|
||||||
import javax.swing.event.DocumentListener;
|
import javax.swing.event.DocumentListener;
|
||||||
import javax.swing.table.DefaultTableModel;
|
import javax.swing.table.DefaultTableModel;
|
||||||
@@ -51,7 +55,6 @@ public class DatatablePanel extends JPanel {
|
|||||||
idColumn.setMaxWidth(50);
|
idColumn.setMaxWidth(50);
|
||||||
|
|
||||||
String defaultText = "Search";
|
String defaultText = "Search";
|
||||||
|
|
||||||
searchField = new JTextField(defaultText);
|
searchField = new JTextField(defaultText);
|
||||||
// 设置灰色默认文本Search
|
// 设置灰色默认文本Search
|
||||||
searchField.setForeground(Color.GRAY);
|
searchField.setForeground(Color.GRAY);
|
||||||
@@ -98,7 +101,7 @@ public class DatatablePanel extends JPanel {
|
|||||||
sorter = new TableRowSorter<>(model);
|
sorter = new TableRowSorter<>(model);
|
||||||
table.setRowSorter(sorter);
|
table.setRowSorter(sorter);
|
||||||
}
|
}
|
||||||
RowFilter<DefaultTableModel, Object> rowFilter = RowFilter.regexFilter(String.format("%s%s", "(?i)", searchText), 0);
|
RowFilter<DefaultTableModel, Object> rowFilter = RowFilter.regexFilter(String.format("%s%s", "(?i)", searchText), 1);
|
||||||
sorter.setRowFilter(rowFilter);
|
sorter.setRowFilter(rowFilter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -188,6 +191,31 @@ public class DatatablePanel extends JPanel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
table.setTransferHandler(new TransferHandler() {
|
||||||
|
@Override
|
||||||
|
public void exportToClipboard(JComponent comp, Clipboard clip, int action) throws IllegalStateException {
|
||||||
|
if (comp instanceof JTable) {
|
||||||
|
StringSelection stringSelection = new StringSelection(getSelectedData(
|
||||||
|
(JTable) comp));
|
||||||
|
clip.setContents(stringSelection, null);
|
||||||
|
} else {
|
||||||
|
super.exportToClipboard(comp, clip, action);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSelectedData(JTable table) {
|
||||||
|
int[] selectRows = table.getSelectedRows();
|
||||||
|
StringBuilder selectData = new StringBuilder();
|
||||||
|
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();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addRowToTable(DefaultTableModel model, Object[] data) {
|
private static void addRowToTable(DefaultTableModel model, Object[] data) {
|
||||||
|
|||||||
Reference in New Issue
Block a user