BurpSuite Extenderで、
どんな事が出来そうかを探っていきたいと思います。
動作的には
「GETメソッドの場合は赤く表示する」
「POSTメソッドの場合は青く表示する」
「リクエス トの場合はメソッドを取得する」
「レスポンスの場合はステータスコード を取得する」
という感じのものを目指します。
package burp;
import java.io.PrintWriter;
public class BurpExtender implements IBurpExtender, IHttpListener,
IProxyListener
{
private IBurpExtenderCallbacks callbacks;
private IExtensionHelpers helpers;
private PrintWriter stdout;
private final String EXTENDER_NAME = "Test Extender" ;
@Override
public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks)
{
this .callbacks = callbacks;
helpers = callbacks.getHelpers();
callbacks.setExtensionName(EXTENDER_NAME);
stdout = new PrintWriter(callbacks.getStdout(), true );
callbacks.registerHttpListener(this );
callbacks.registerProxyListener(this );
}
@Override
public void processHttpMessage(int toolFlag, boolean messageIsRequest, IHttpRequestResponse messageInfo)
{
if (messageIsRequest) {
IRequestInfo requestInfo = helpers.analyzeRequest(messageInfo);
stdout.println("Request Method : " + requestInfo.getMethod());
}else {
byte [] response = messageInfo.getResponse();
IResponseInfo responseInfo= helpers.analyzeResponse(response);
stdout.println("Response Status : " + responseInfo.getStatusCode());
}
}
@Override
public void processProxyMessage(boolean messageIsRequest, IInterceptedProxyMessage message)
{
if (messageIsRequest) {
IRequestInfo requestInfo = helpers.analyzeRequest(message.getMessageInfo());
String method = requestInfo.getMethod();
if (method.equals("GET" )) {
message.getMessageInfo().setHighlight("blue" );
}else if (method.equals("POST" )) {
message.getMessageInfo().setHighlight("red" );
}
}else {
}
}
}
GETは青色で、POSTは赤色にする
リクエス トはメソッド、レスポンスはステータスコード を取得する
期待通りの結果です。
processHttpMessage(int toolFlag, boolean messageIsRequest, IHttpRequestResponse messageInfo);
This method is invoked when an HTTP request is about to be issued, and when an HTTP response has been received.
processProxyMessage(boolean messageIsRequest, IInterceptedProxyMessage message);
This method is invoked when an HTTP message is being processed by the Proxy.
BurpSuiteのエディタに反映させたい場合は、processProxyMessageメソッド内で処理をする必要があるのかな。
使える色は「red, orange, yellow, green, cyan, blue, pink, magenta, gray」の9色っぽいです。
とりあえず以上です。