pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>burpsuite</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/net.portswigger.burp.extender/burp-extender-api -->
<dependency>
<groupId>net.portswigger.burp.extender</groupId>
<artifactId>burp-extender-api</artifactId>
<version>1.7.22</version>
</dependency>
</dependencies>
</project>
package burp;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class BurpExtender implements IBurpExtender, IHttpListener {
private IBurpExtenderCallbacks callbacks;
private PrintWriter stdout;
// 身份证号的正则表达式 (15位或18位)
private static final String ID_CARD_REGEX = "(\\d{17}[0-9Xx]|\\d{15})";
// 手机号的正则表达式 (以 1 开头,后跟 3-9 的数字,11位)
private static final String PHONE_REGEX = "(1[3-9]\\d{9})";
@Override
public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) {
this.callbacks = callbacks;
this.callbacks.setExtensionName("身份证号和手机号匹配插件");
// 获取标准输出流,指定字符编码为 UTF-8
OutputStream stdoutStream = callbacks.getStdout();
this.stdout = new PrintWriter(new OutputStreamWriter(stdoutStream, StandardCharsets.UTF_8), true);
// 注册 HTTP 请求监听器
this.callbacks.registerHttpListener(this);
// 输出插件加载完成信息
stdout.println("插件已加载,开始匹配身份证号和手机号。");
}
@Override
public void processHttpMessage(int toolFlag, boolean isRequest, IHttpRequestResponse message) {
// 如果是请求,则获取请求体
if (isRequest) {
byte[] request = message.getRequest();
String requestString = new String(request, StandardCharsets.UTF_8); // 确保请求体的编码是 UTF-8
// 匹配身份证号
Pattern idCardPattern = Pattern.compile(ID_CARD_REGEX);
Matcher idCardMatcher = idCardPattern.matcher(requestString);
while (idCardMatcher.find()) {
String idCard = idCardMatcher.group();
stdout.println("匹配到身份证号: " + idCard);
}
// 匹配手机号
Pattern phonePattern = Pattern.compile(PHONE_REGEX);
Matcher phoneMatcher = phonePattern.matcher(requestString);
while (phoneMatcher.find()) {
String phone = phoneMatcher.group();
stdout.println("匹配到手机号: " + phone);
}
}
}
}