2013-08-30 47 views
1

我正在嘗試編寫一個簡單的burp擴展來捕獲HTTP數據包,對其進行修改並將其轉發給服務器。我需要爲此進行一些安全測試。我從一個代碼開始打印接收到的數據包。附上下面的代碼,我從各種Burp教程中獲得。我將Eclipse的代理配置到本地主機,然後運行此代碼。代碼運行良好,Burp正確打開並攔截數據包,但是我無法在IDE控制檯上看到任何內容。請幫助我,因爲我對Burp來說很新,並且從網上的幫助中瞭解不多。Burp擴展捕獲,修改和轉發HTTp數據包

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); 

} 
} 

我只是想知道如何我可以在我的代碼中獲取截取的數據包,然後轉發它。

回答

0

我想知道你爲什麼要編寫Burp擴展來捕獲數據包。你不會使用嗅探器嗎?

無論如何,感謝您的代碼,我能夠讓自己開始編寫擴展。這是我發現你的方法processHttpMessage

「[」 + callbacks.getToolName(toolFlag)+ 「]」

東西是越野車在這裏,可能是爆發式套房(1.5.16);我無法設法getToolName打印任何東西,即使使用硬編碼的int,也無法將調試器放在Burp上,所以我放棄了。 (messageIsRequest?「HTTP請求到」:「來自HTTP的HTTP響應)+ messageInfo.getHttpService());

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

無論如何,這將打印到控制檯,但您將看不到toolFlag的任何值。

+0

我的錯誤:iHttpService對象應該在不拋出異常的情況下打印服務。現在我不確定你的問題在哪裏。 – dfdumaresq