1

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 リクエスト " : "からの HTTP レスポンス ") + messageInfo.getHttpService());

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

とにかく、これはコンソールに出力されますが、toolFlag の値は表示されません。

于 2013-09-13T21:00:54.407 に答える