Burp Extension用于捕获,修改和转发HTTp数据包

时间:2013-08-30 13:55:44

标签: http proxy burp

我正在尝试编写一个简单的burp扩展来捕获HTTP数据包,修改它并将其转发到服务器。我需要做一些安全测试。我开始使用代码来打印收到的数据包。附上下面的代码,我从各种Burp教程中获得。我将Eclipse的代理配置为localhost,然后运行此代码。代码运行正常,Burp正确打开并拦截数据包但我无法在IDE控制台上看到任何内容。请帮助我,因为我对Burp很新,并且无法从在线帮助中理解太多。

package burp;

public class BurpExtender2 implements IBurpExtender, IHttpListener, IProxyListener
{

private IBurpExtenderCallbacks callbacks;


public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks)
{

    helpers = callbacks.getHelpers();
    callbacks.registerHttpListener(this);
}


public void processHttpMessage(int toolFlag, boolean messageIsRequest,                                          IHttpRequestResponse messageInfo)
{
    System.out.println(
            (messageIsRequest ? "HTTP request to " : "HTTP response from ") +
            messageInfo.getHttpService() +
            " [" + callbacks.getToolName(toolFlag) + "]");
}

public void processProxyMessage(boolean messageIsRequest, IInterceptedProxyMessage message)
{
      System.out.println(message);

 }
}

我只想知道如何在我的代码中获取截获的数据包然后转发它。

1 个答案:

答案 0 :(得分:0)

我想知道你为什么要编写一个Burp扩展来捕获数据包。你不会用嗅探器吗?

无论如何,多亏了你的代码,我才能开始编写扩展。这是我在您的方法processHttpMessage

中找到的内容

“[”+ callbacks.getToolName(toolFlag)+“]”

这里有些东西,可能在Burp Suite(1.5.16);即使使用硬编码的int,我也无法让getToolName打印任何东西,并且不可能在Burp上放置调试器,所以我放弃了。

的System.out.println(            (messageIsRequest?“HTTP请求”:“HTTP响应来自”)+                     messageInfo.getHttpService());

System.out.println(“[callbacks.getToolName(toolFlag)] =”); 的System.out.println(callbacks.getToolName(toolFlag));

无论如何,这将打印到控制台,但你不会看到toolFlag的任何值。