实现效果

使用IDEA创建一个GUI界面,并展示在Burp中

  • 创建一个新的Tab标签页
  • 实现效果为点击按钮后获取到最新的请求并展示到tab中

涉及接口:

  • ITab

实现代码

创建项目过程省略,使用旧版API开发。

先新建一个包专门用来放UI,再使用IDEA自带的创建一个 GUI Form

new

给最外层的panel设置上字段名,我设置的是 rootPanel

image-20240922下午70313070

然后从右边拉组件到左边就行了,因为要实现的功能是点击一个按钮就获取最新的请求,所以设计的布局如下:

image-20240922下午70631718

此时UI就设计好了,接下来就是给它添加到burp的扩展中;先把最上层的rootPanel 添加一个getter 函数,方便BurpExtender类获取到。

image-20240922下午70901258

然后在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确实加载进去了,显示也没问题。

image-20240922下午71153662


接下来就是给UI添加一些事件了,给按钮添加点击事件

image-20240922下午71821574

因为获取历史请求要用到callbacks对象,所以我们在初始化UI的时候就先给它传进去

image-20240922下午71622849

编写事件实现代码

image-20240922下午72422571

完成打包

实现测试

image-20240922下午72555340

点击按钮后,获取到最新的请求

image-20240922下午72703944

扩展总结

  • 这里注册用的不是 registerXXX,而是用的 addSuiteTab,同时在注册之前需要用 customizeUiComponent 把组件先添加进去。
  • 整个过程中,可以先给UI画好,然后再去实现对应的功能,缺什么对象就给UI类中传什么对象。

参考

  • null
Copyright © d4m1ts 2023 all right reserved,powered by Gitbook该文章修订时间: 2024-09-28 14:12:54

results matching ""

    No results matching ""