1

我正在尝试编写一个简单的 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);

 }
}

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

4

1 回答 1

0

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

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

" [" + callbacks.getToolName(toolFlag) + "]"

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

System.out.println( (messageIsRequest ? "HTTP request to " : "HTTP response from ") + messageInfo.getHttpService());

System.out.println(" [callbacks.getToolName(toolFlag)] = "); System.out.println(callbacks.getToolName(toolFlag));

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

于 2013-09-13T21:00:54.407 回答