2011-02-05 87 views
32

我有一個自定義協議,我正在wireshark中查看。 我認爲這會很有用,如果wireshark可以爲我解決它,這樣我就不必解碼十六進制。儘管我在程序日誌中這樣做,wireshark通過計時信息捕捉整個對話,所以它在那裏會更有用。如何將自定義協議分析器添加到wireshark?

這可以很容易地完成?

回答

14

這取決於你對「容易」的定義。這絕對是可行的 - Wireshark對可插拔解析器有很好的支持。

README.developer顯然是解剖器發展的「最佳手冊」。看一看,然後自己決定。

+2

謝謝,這是我以後。我也發現了這個鏈接:http://www.wireshark.org/docs/wsdg_html_chunked/ChapterDissection.html – Matt 2011-02-05 03:47:19

26

您可以使用Wireshark的LUA API編寫解剖器。這樣你就可以在不下載Wireshark的代碼甚至是編譯器的情況下編寫一個快速且骯髒的解析器。 一個非常簡單而強大的示例顯示爲in the documentation。 這樣的LUA解剖器對於調試使用,甚至與您的項目一起發佈都是非常好的。

如果您打算將解析器提交給官方Wireshark存儲庫,那麼您當然應該在C中使用它來實現性能和集成的原因。

要使用你的解剖,創建一個文件my_dissector.lua並調用Wireshark的是這樣的:wireshark -X lua_script:my_dissector.lua

3

或者,而不是寫你自己的解碼器,也有一些產生自定義協議解碼器,或提供DSL項目所述API的頂部:

  • wssdl - 一個Lua庫定義建立在的Lua之上,用於定義協議和解碼的目的的特定域的語言。
  • wsgd - 解析協議定義並將其用於剖析消息的通用解析器。
  • asn2wrs - 一個將ASN.1規範和C膠粘到Wireshark解剖器的工具。
  • csjark - 一個從C結構定義生成Lua解析器以用於Wireshark的工具。