修复BUG

This commit is contained in:
Shaun
2024-04-27 09:53:49 +08:00
parent 4c4763bb7f
commit 85ab80cf30
12 changed files with 114 additions and 226 deletions
+19 -34
View File
@@ -3,45 +3,30 @@
<output-path>$PROJECT_DIR$/out/artifacts/BurpFingerPrint_jar</output-path>
<root id="archive" name="BurpFingerPrint.jar">
<element id="module-output" name="BurpFingerPrint" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.16/httpcore-4.4.16.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/alibaba/fastjson2/fastjson2/2.0.40/fastjson2-2.0.40.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.2/commons-logging-1.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.14/httpclient-4.5.14.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/net/portswigger/burp/extender/burp-extender-api/2.3/burp-extender-api-2.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.11/commons-codec-1.11.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/miglayout/miglayout-core/5.2/miglayout-core-5.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/miglayout/miglayout-swing/5.2/miglayout-swing-5.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/github/virtuald/curvesapi/1.07/curvesapi-1.07.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/zaxxer/SparseBitSet/1.2/SparseBitSet-1.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/commons/commons-collections4/4.4/commons-collections4-4.4.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/commons/commons-compress/1.21/commons-compress-1.21.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.18.0/log4j-api-2.18.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml-lite/5.2.3/poi-ooxml-lite-5.2.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml/5.2.3/poi-ooxml-5.2.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/poi/poi/5.2.3/poi-5.2.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/xmlbeans/xmlbeans/5.1.1/xmlbeans-5.1.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/github/luben/zstd-jni/1.5.5-11/zstd-jni-1.5.5-11.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.14.0/commons-lang3-3.14.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/maven/plugins/maven-assembly-plugin/3.7.1/maven-assembly-plugin-3.7.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/maven/resolver/maven-resolver-api/1.4.1/maven-resolver-api-1.4.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/maven/resolver/maven-resolver-util/1.4.1/maven-resolver-util-1.4.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/maven/shared/maven-common-artifact-filters/3.3.2/maven-common-artifact-filters-3.3.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/maven/shared/maven-filtering/3.3.2/maven-filtering-3.3.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/maven/maven-archiver/3.6.1/maven-archiver-3.6.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-archiver/4.9.2/plexus-archiver-4.9.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-interpolation/1.27/plexus-interpolation-1.27.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-io/3.4.2/plexus-io-3.4.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-utils/4.0.0/plexus-utils-4.0.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-xml/3.0.0/plexus-xml-3.0.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/iq80/snappy/snappy/0.4/snappy-0.4.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/sonatype/plexus/plexus-build-api/0.0.7/plexus-build-api-0.0.7.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/tukaani/xz/1.9/xz-1.9.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/xerial/sqlite-jdbc/3.45.3.0/sqlite-jdbc-3.45.3.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-interpolation/1.27/plexus-interpolation-1.27.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/commons/commons-compress/1.26.1/commons-compress-1.26.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/iq80/snappy/snappy/0.4/snappy-0.4.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/github/luben/zstd-jni/1.5.5-11/zstd-jni-1.5.5-11.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.14.0/commons-lang3-3.14.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/maven/resolver/maven-resolver-api/1.4.1/maven-resolver-api-1.4.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/commons-io/commons-io/2.15.1/commons-io-2.15.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/net/portswigger/burp/extender/burp-extender-api/2.3/burp-extender-api-2.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/maven/resolver/maven-resolver-util/1.4.1/maven-resolver-util-1.4.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/maven/shared/maven-common-artifact-filters/3.3.2/maven-common-artifact-filters-3.3.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/sonatype/plexus/plexus-build-api/0.0.7/plexus-build-api-0.0.7.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-archiver/4.9.2/plexus-archiver-4.9.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-utils/4.0.0/plexus-utils-4.0.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-xml/3.0.0/plexus-xml-3.0.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/maven/maven-archiver/3.6.1/maven-archiver-3.6.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/maven/shared/maven-filtering/3.3.2/maven-filtering-3.3.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.16.1/commons-codec-1.16.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar" path-in-jar="/" />
</root>
</artifact>
</component>
-1
View File
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/log/logger.log" charset="GBK" />
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>
+2 -27
View File
@@ -21,46 +21,21 @@
<artifactId>burp-extender-api</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.40</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.9</version> <!-- replace with the latest version -->
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.14</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
<!-- SQLite JDBC 驱动 -->
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.45.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.7.1</version>
</dependency>
</dependencies>
<build>
<finalName>BurpFingerPrint-v1.0</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -70,7 +45,7 @@
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<appendAssemblyId>true</appendAssemblyId>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
+1 -1
View File
@@ -12,7 +12,7 @@ import java.nio.charset.StandardCharsets;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
public class BurpExtender implements IBurpExtender, IExtensionStateListener {
public final static String extensionName = "FinderPrint";
+1 -1
View File
@@ -1,7 +1,6 @@
package burp;
import burp.model.TableLogModel;
import burp.ui.FingerConfigTab;
import burp.ui.FingerTab;
import burp.util.FingerUtils;
import burp.util.HTTPUtils;
@@ -52,6 +51,7 @@ public class IProxyScanner implements IProxyListener {
FingerTab.lbRequestCount.setText("0");
BurpExtender.getDataBaseService().clearRequestsResponseTable();
BurpExtender.getDataBaseService().clearTableDataTable();
FingerTab.timer.stop();
}
public void processProxyMessage(boolean messageIsRequest, final IInterceptedProxyMessage iInterceptedProxyMessage) {
@@ -196,8 +196,8 @@ public class DatabaseService {
String sql = "SELECT * FROM table_data";
try (Connection conn = getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery()) {
// loop through the result set
while (rs.next()) {
@@ -358,9 +358,10 @@ public class DatabaseService {
// 查询表格行数的SQL语句
String sql = "SELECT COUNT(*) AS rowcount FROM table_data";
try (Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
try (Connection conn = getConnection();
PreparedStatement checkStmt = conn.prepareStatement(sql)) {
// 如果查询结果存在,返回第一行的计数
ResultSet rs = checkStmt.executeQuery();
if (rs.next()) {
int count = rs.getInt("rowcount");
return count;
@@ -5,7 +5,6 @@ import burp.Wrapper.FingerPrintRulesWrapper;
import burp.model.FingerPrintRule;
import java.io.*;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -14,7 +13,6 @@ import javax.swing.table.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import java.awt.event.*;
import java.util.Set;
import java.util.HashSet;
+1 -7
View File
@@ -8,7 +8,6 @@ import java.awt.*;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.HashMap;
@@ -17,16 +16,11 @@ import java.awt.event.MouseEvent;
import javax.swing.table.*;
import java.awt.Component;
import java.util.Map;
import java.util.ArrayList;
//import burp.ui.event.FingerTabEventHandlers;
import burp.model.DatabaseService;
import burp.model.TableLogModel;
import burp.ui.event.FingerTabEventHandlers;
import burp.ui.renderer.CenterTableCellRenderer;
import burp.ui.renderer.HavingImportantRenderer;
import burp.ui.renderer.HeaderIconRenderer;
import burp.ui.renderer.IconTableCellRenderer;
import burp.util.UiUtils;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
@@ -235,7 +229,7 @@ public class FingerTab implements IMessageEditorController {
gbc_btnClear.gridy = 0;
FilterPanel.add(moreButton, gbc_btnMore);
// exportItem.addActionListener(FingerTabEventHandlers.exportItemAddActionListener(contentPane, logTable));
exportItem.addActionListener(FingerTabEventHandlers.exportItemAddActionListener());
// 点击”功能“的监听事件
moreButton.addMouseListener(new MouseAdapter() {
-2
View File
@@ -1,12 +1,10 @@
package burp.ui;
import java.awt.*;
import java.util.HashMap;
import javax.swing.*;
import burp.ITab;
import burp.IBurpExtenderCallbacks;
import burp.model.FingerPrintRule;
public class Tags implements ITab {
@@ -2,17 +2,13 @@ package burp.ui.event;
import burp.BurpExtender;
import burp.model.TableLogModel;
import burp.ui.FingerConfigTab;
import burp.ui.FingerTab;
import burp.util.UiUtils;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -21,6 +17,10 @@ import java.awt.event.MouseEvent;
import java.io.File;
import java.util.*;
import java.util.List;
import java.io.FileWriter;
import java.io.IOException;
import static burp.util.Utils.escapeCsv;
/**
* @author: shaun
@@ -209,37 +209,67 @@ public class FingerTabEventHandlers {
}
};
}
//
//
// public static ActionListener exportItemAddActionListener(JPanel contentPane, HttpLogTable logTable){
// return new ActionListener() {
// @Override
// public void actionPerformed(ActionEvent e) {
// JFileChooser fileChooser = new JFileChooser();
// fileChooser.setDialogTitle("Specify a file to save");
//
// // 设置默认文件名
// fileChooser.setSelectedFile(new File("ExportedData.xlsx"));
//
// // 限制文件类型为.xlsx
// FileNameExtensionFilter filter = new FileNameExtensionFilter("Excel Files", "xlsx");
// fileChooser.setFileFilter(filter);
//
// int userSelection = fileChooser.showSaveDialog(contentPane);
//
// if (userSelection == JFileChooser.APPROVE_OPTION) {
// File fileToSave = fileChooser.getSelectedFile();
// // 确保文件有正确的扩展名
// if (!fileToSave.toString().toLowerCase().endsWith(".xlsx")) {
// fileToSave = new File(fileToSave.toString() + ".xlsx");
// }
// // 导出表格数据到Excel文件
// UiUtils.exportTableToExcel(fileToSave, contentPane, logTable);
// }
// }
// };
// }
//
public static ActionListener exportItemAddActionListener() {
return new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 创建一个文件选择器实例
JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle("Save As"); // 设置对话框标题
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
fileChooser.setAcceptAllFileFilterUsed(false); // 取消所有文件过滤
fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("CSV Files", "csv")); // 只允许CSV文件格式
// 设置默认的文件名
fileChooser.setSelectedFile(new File("BurpFinderPrint-TableData.csv"));
// 弹出保存对话框
int userSelection = fileChooser.showSaveDialog(null);
if (userSelection == JFileChooser.APPROVE_OPTION) {
// 获取用户选择的文件
File fileToSave = fileChooser.getSelectedFile();
String filePath = fileToSave.getAbsolutePath();
// 确保文件有.csv扩展名
if (!filePath.endsWith(".csv")) {
filePath += ".csv";
}
// 获取所有数据模型
List<TableLogModel> allTableDataModels = BurpExtender.getDataBaseService().getAllTableDataModels();
// 创建CSV文件并写入数据
try (FileWriter csvWriter = new FileWriter(filePath)) {
// 写入标题行(根据TableLogModel的字段)
csvWriter.append("PID,URL,Method,Title,Status,Result,Type,IsImportant,ResultInfo,Host,Port,Protocol,RequestResponseIndex,Time\n");
// 遍历所有的数据模型并写入CSV
for (TableLogModel model : allTableDataModels) {
csvWriter.append(escapeCsv(String.valueOf(model.getPid())) + ",");
csvWriter.append(escapeCsv(model.getUrl()) + ",");
csvWriter.append(escapeCsv(model.getMethod()) + ",");
csvWriter.append(escapeCsv(model.getTitle()) + ",");
csvWriter.append(escapeCsv(model.getStatus()) + ",");
csvWriter.append(escapeCsv(model.getResult()) + ",");
csvWriter.append(escapeCsv(model.getType()) + ",");
csvWriter.append(escapeCsv(String.valueOf(model.getIsImportant())) + ",");
csvWriter.append(escapeCsv(model.getResultInfo()) + ",");
csvWriter.append(escapeCsv(model.getHost()) + ",");
csvWriter.append(escapeCsv(String.valueOf(model.getPort())) + ",");
csvWriter.append(escapeCsv(model.getProtocol()) + ",");
csvWriter.append(escapeCsv(String.valueOf(model.getRequestResponseIndex())) + ",");
csvWriter.append(escapeCsv(model.getTime()));
csvWriter.append("\n");
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
};
}
public static ActionListener clearItemAddActionListener(DefaultTableModel model, JTable logTable, JLabel lbSuccessCount){
return new ActionListener() {
+1 -59
View File
@@ -1,17 +1,7 @@
package burp.util;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javax.swing.*;
import javax.swing.table.TableModel;
import java.awt.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
/**
@@ -37,53 +27,5 @@ public class UiUtils {
Image newImg = img.getScaledInstance(17, 17, Image.SCALE_SMOOTH);
return new ImageIcon(newImg);
}
//
// public static void exportTableToExcel(File file, JPanel contentPane, HttpLogTable logTable) {
// Workbook workbook = new XSSFWorkbook();
// Sheet sheet = workbook.createSheet("Table Data");
// TableModel model = logTable.getModel();
//
// // 创建表头
// Row headerRow = sheet.createRow(0);
// for (int i = 0; i < model.getColumnCount(); i++) {
// Cell cell = headerRow.createCell(i);
// cell.setCellValue(model.getColumnName(i));
// }
//
// // 填充数据
// for (int j = 0; j < model.getRowCount(); j++) {
// Row row = sheet.createRow(j + 1);
// for (int k = 0; k < model.getColumnCount(); k++) {
// Cell cell = row.createCell(k);
// Object value = model.getValueAt(j, k);
// if (value instanceof Boolean) {
// cell.setCellValue((Boolean) value);
// } else if (value instanceof Number) {
// cell.setCellValue(((Number) value).doubleValue());
// } else {
// cell.setCellValue(value.toString());
// }
// }
// }
//
// // 自动调整所有列的宽度
// for (int i = 0; i < model.getColumnCount(); i++) {
// sheet.autoSizeColumn(i);
// }
//
// // 写入到文件
// try (FileOutputStream outputStream = new FileOutputStream(file)) {
// workbook.write(outputStream);
// JOptionPane.showMessageDialog(contentPane, "导出成功!保存路径为:\n" + file.getAbsolutePath(), "导出成功", JOptionPane.INFORMATION_MESSAGE);
// } catch (IOException e) {
// JOptionPane.showMessageDialog(contentPane, "导出失败,原因:\n" + e.getMessage(), "导出失败", JOptionPane.ERROR_MESSAGE);
// e.printStackTrace();
// } finally {
// try {
// workbook.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// }
}
+19 -53
View File
@@ -1,14 +1,6 @@
package burp.util;
import burp.BurpExtender;
import java.io.*;
import java.net.*;
import java.util.Base64;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import burp.IBurpExtenderCallbacks;
import burp.IHttpService;
import burp.model.TableLogModel;
@@ -17,17 +9,13 @@ import java.util.*;
import java.util.ArrayList;
import javax.net.ssl.*;
import java.security.cert.X509Certificate;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.ByteArrayOutputStream;
import java.net.URL;
import java.io.*;
import java.net.*;
import java.util.Base64;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
@@ -419,41 +407,6 @@ public class Utils {
}
public static byte[] identifyFingerprint(String urlString) {
try {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(urlString);
CloseableHttpResponse response = httpClient.execute(httpGet);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
try {
// 获取响应状态行
byteArrayOutputStream.write((response.getStatusLine().toString() + "\r\n").getBytes());
// 获取所有响应头部
Header[] headers = response.getAllHeaders();
for (Header header : headers) {
byteArrayOutputStream.write((header.getName() + ": " + header.getValue() + "\r\n").getBytes());
}
// 添加一个空行来结束头部
byteArrayOutputStream.write("\r\n".getBytes());
// 获得响应实体
HttpEntity entity = response.getEntity();
if (entity != null) {
// 将响应体添加到字节数组输出流中
byteArrayOutputStream.write(EntityUtils.toByteArray(entity));
}
} finally {
response.close();
}
// 返回字节数组
return byteArrayOutputStream.toByteArray();
} catch (IOException e) {
return null;
}
}
/**
* 获取-插件运行路径
@@ -486,4 +439,17 @@ public class Utils {
};
}
public static String escapeCsv(String value) {
String escapedValue = value;
if (value.contains("\"")) {
// 将所有的双引号替换成两个双引号
escapedValue = escapedValue.replace("\"", "\"\"");
}
// 如果值包含逗号、双引号或换行符,将其包围在双引号之中
if (value.contains(",") || value.contains("\n") || value.contains("\"")) {
escapedValue = "\"" + escapedValue + "\"";
}
return escapedValue;
}
}