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