实现效果
使用IDEA创建一个GUI界面,并展示在Burp中
- 创建一个新的Tab标签页
- 实现效果为点击按钮后获取到最新的请求并展示到tab中
涉及接口:
- ITab
实现代码
创建项目过程省略,使用旧版API开发。
先新建一个包专门用来放UI,再使用IDEA自带的创建一个 GUI Form
给最外层的panel设置上字段名,我设置的是 rootPanel
然后从右边拉组件到左边就行了,因为要实现的功能是点击一个按钮就获取最新的请求,所以设计的布局如下:
此时UI就设计好了,接下来就是给它添加到burp的扩展中;先把最上层的rootPanel
添加一个getter
函数,方便BurpExtender
类获取到。
然后在Burp中引入这个UI组件,实现ITab接口加载到burp中
package burp;
import org.gm7.ui.BurpGUI;
import javax.swing.*;
import java.awt.*;
public class BurpExtender implements IBurpExtender, ITab {
// 回调对象
private IBurpExtenderCallbacks callbacks;
// 辅助类,一般用于辅助分析数据包结构
private IExtensionHelpers helpers;
private JPanel rootPanel;
// 实现 IBurpExtender 接口函数
@Override
public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) {
// 设置插件名字
callbacks.setExtensionName("Demo");
// callbacks到处都要用,搞成类变量
this.callbacks = callbacks;
// 辅助类,一般用于辅助分析数据包结构,类变量方便其他函数调用
helpers = callbacks.getHelpers();
// ui
BurpGUI burpGUI = new BurpGUI();
rootPanel = burpGUI.getRootPanel();
// 注册组件
callbacks.customizeUiComponent(rootPanel);
callbacks.addSuiteTab(this);
}
// 组件显示的名字
@Override
public String getTabCaption() {
return "MyTab";
}
// 显示的组件
@Override
public Component getUiComponent() {
return rootPanel;
}
}
打包后测试一下,UI确实加载进去了,显示也没问题。
接下来就是给UI添加一些事件了,给按钮添加点击事件
因为获取历史请求要用到callbacks
对象,所以我们在初始化UI的时候就先给它传进去
编写事件实现代码
完成打包
实现测试
点击按钮后,获取到最新的请求
扩展总结
- 这里注册用的不是
registerXXX
,而是用的addSuiteTab
,同时在注册之前需要用customizeUiComponent
把组件先添加进去。 - 整个过程中,可以先给UI画好,然后再去实现对应的功能,缺什么对象就给UI类中传什么对象。
参考
- null