如何自定义Unexpected information规则?开发者必看的扩展指南
【免费下载链接】Unexpected_informationUnexpected information 是用于标记请求包中的一些敏感信息、JS接口和一些特殊字段的BurpSuite 插件。项目地址: https://gitcode.com/gh_mirrors/un/Unexpected_information
Unexpected information 是用于标记请求包中的一些敏感信息、JS接口和一些特殊字段的BurpSuite 插件。通过自定义规则,开发者可以根据实际需求灵活扩展其信息识别能力,本文将详细介绍自定义规则的完整流程。
快速了解规则定义位置 📍
规则的核心定义位于项目的src/main/java/burp/Re.java文件中,该文件包含了所有敏感信息识别的正则表达式和处理逻辑。例如手机号、身份证、IP地址等默认规则都在此处定义和实现。
自定义规则的基本步骤 🔧
1. 识别现有规则结构
在Re.java中,每个信息类型都对应一个独立的静态方法,例如:
- 手机号识别:
Phone(String str)方法(Re.java) - 身份证识别:
IdCard(String str)方法(Re.java) - 特殊字段识别:
Password(String str)方法(Re.java)
这些方法均遵循相同的模式:定义正则表达式 → 匹配内容 → 去重处理 → 返回结果。
2. 添加新的识别方法
要添加自定义规则,只需在Re.java中新增一个静态方法,以下是添加"银行卡号识别"的示例:
// 银行卡号匹配 public static String BankCard(String str){ ArrayList<String> cards = new ArrayList<>(); String is_bankcard = "\\b(?:\\d{16}|\\d{19})\\b"; // 16位或19位卡号 Matcher matcher = Pattern.compile(is_bankcard).matcher(str); while (matcher.find()){ cards.add(matcher.group()); } List<String> cards_rd = Re.removeDuplicate(cards); return StringUtils.strip(cards_rd.toString(),"[]"); }3. 在UI中显示识别结果
修改BurpExtender.java中的setMessage方法,添加新规则的结果展示逻辑:
String bankcard = Re.BankCard(new String(content)); if (bankcard.length() != 0) { Text += "Exists bankcard information: " + bankcard + '\n' + '\n'; }4. 编译与安装插件
完成代码修改后,使用项目根目录下的gradlew命令重新编译插件:
./gradlew build编译成功后,在BurpSuite的Extender模块中加载生成的JAR文件,如图所示:
图:在BurpSuite中加载自定义规则后的Unexpected information插件
规则生效验证方法 ✅
安装自定义规则后,可以通过以下步骤验证效果:
- 发送包含目标信息的请求包
- 在BurpSuite的HTTP历史记录中选择请求
- 切换到"Unexpected information"标签页查看识别结果
例如,当请求包中包含手机号信息时,插件会自动标记并显示识别结果:
图:Unexpected information插件识别手机号信息的效果
高级规则优化技巧 💡
1. 正则表达式优化
- 使用非捕获组
(?:...)提高匹配效率 - 添加边界符
\b避免部分匹配(如防止"138001380001"被识别为手机号) - 针对复杂模式使用正则注释
(?#comment)提高可读性
2. 性能优化建议
- 对频繁使用的正则表达式进行预编译
- 对大文件采用分段匹配策略
- 使用
removeDuplicate方法(Re.java)去除重复结果
3. 多规则组合应用
通过组合多个规则实现复杂场景识别,例如:
if (Re.Phone(str).length() > 0 && Re.Email(str).length() > 0) { // 同时包含手机号和邮箱时的特殊处理 }常见问题解决 🚩
Q: 自定义规则不生效怎么办?
A: 检查以下几点:
- 方法是否添加到
Re.java并正确引用 - 正则表达式是否存在语法错误
BurpExtender.java中是否添加了结果展示逻辑- 重新编译并确保加载的是最新JAR文件
Q: 如何识别JS接口中的特殊路径?
A: 可以参考Path(String str)方法(Re.java)的实现,通过正则提取URL路径:
图:插件识别JS接口路径的效果展示
总结
通过修改src/main/java/burp/Re.java和src/main/java/burp/BurpExtender.java文件,开发者可以轻松扩展Unexpected information的信息识别能力。无论是添加新的敏感信息类型,还是优化现有正则表达式,自定义规则都能帮助你更精准地捕获请求包中的关键信息。赶快尝试定制属于你的规则库吧!
【免费下载链接】Unexpected_informationUnexpected information 是用于标记请求包中的一些敏感信息、JS接口和一些特殊字段的BurpSuite 插件。项目地址: https://gitcode.com/gh_mirrors/un/Unexpected_information
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考