2013-05-28 33 views
0

我們的團隊目前正致力於建立一個Wireshark的解剖解剖其某種類型的數據包。我們已經建立了基於模板的數據包。[Wireshark的]如何使用插件來剖析一個包

說在我們所建立的插件的名稱是ABC,現在我們的目標是,每當我們在Wireshark的過濾器框中鍵入ABC,我們希望看到(捕捉)我們發送的數據包。 enter image description here

正如您在圖片中看到的,如果我們通過ip.destination過濾它,wireshark知道這些是我們感興趣的數據包。當前的任務是當我鍵入插件名稱ABC時,我想要相同的結果。

我道歉,如果這個問題不清澈,我們剛剛得到的初始階段開始,仍。任何提示或建議非常感謝!

回答

2

讓你的插件解剖,你通常會做,在this頁記錄。如鏈接所述,當您使用proto_register_protocol()proto_register_ABC()下注冊您的協議時,作爲第三個參數提供的縮寫字符串被註冊爲過濾器名稱。

有關創建插件的信息可以在「DOC/README.plugins」文件中找到。

如果你想註冊數據包中的數據結構的過濾器(你可以再次看到上述鏈接的說明),尋找函數proto_register_ABC()(這裏ABC是你的協議名稱),將你的數據成員添加到靜態數組「hf_register_info hf []」,如下所示。

void 
proto_register_ABC(void) 
{ 
    static hf_register_info hf[] = { 
     { &hf_foo, 
      { "FOO member", "foo", FT_BYTES, 
      BASE_NONE, NULL, 0x0, NULL, HFILL }} 
     }; 

hf_foo將不得不申報。 在您第二個字符串:

{ "FOO member", "ABC", FT_BYTES, 
       BASE_NONE, NULL, 0x0, NULL, HFILL }} 

即第二個字符串「foo」是你的過濾器名稱。

現在,如果你的解剖功能dissect_ABC()正常工作,那麼你就可以使用過濾器「ABC」自動將協議報文。您還可以查看其他解剖方法如「TCP」是如何完成的。查看「epan/dissectors/packet-tcp.c」。