Burp插件研发避坑指南1
前面每个接口介绍什么的就不介绍了,可以参考:
直接上手实战。先写一个小标签页面,期望的效果是这样的:
代码:
package burp;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import java.io.PrintWriter;
public class BurpExtender implements IBurpExtender,IContextMenuFactory,IHttpListener{
public PrintWriter stdout;
public IExtensionHelpers hps;
public IBurpExtenderCallbacks cbs;
@Override
public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) {
callbacks.setExtensionName("taotao");
callbacks.registerContextMenuFactory(this::createMenuItems);
this.hps = callbacks.getHelpers();
this.cbs = callbacks;
this.stdout = new PrintWriter(callbacks.getStdout(), true);
this.stdout.println("hello burp!");
}
@Override
public List<JMenuItem> createMenuItems(final IContextMenuInvocation invocation) {
List<JMenuItem> listMenuItems = new ArrayList<JMenuItem>();
//判断是否是Repeater模块
if(invocation.getToolFlag() == IBurpExtenderCallbacks.TOOL_REPEATER) {
//子菜单
JMenuItem menuItem1;
menuItem1 = new JMenuItem("decoder");
JMenuItem menuItem2;
menuItem2 = new JMenuItem("encoder");
//父级菜单
JMenu jMenu = new JMenu("taotao");
jMenu.add(menuItem1);
jMenu.add(menuItem2);
listMenuItems.add(jMenu);
}
return listMenuItems;
}
@Override
public void processHttpMessage(int toolFlag, boolean messageIsRequest,
IHttpRequestResponse messageInfo) {
// TODO here
}
}
就在这个简单的过程中,我遇到的问题是如何build成jar包导入burp。网上搜索,很多教程里说的都不全,有些只说了最后一步,但新项目,最后一步Build Artifacts的选项是灰的根本无法选,以至于怀疑社区版idea的问题。
1、build
2、File - Project Structure - Project Settings - Artifacts - “+” - JAR - From modules with dependencies - 在Main Class中输入"BurpExtender" - OK
3、Build - Build Artifacts - Build
