1.版權聲明
本系列文章是本人花了很多心血寫成,wireshark本是開源軟件,本人也樂於技術知識和經驗的分享,更是欣賞和推崇開源精神,因此任何看到本文的人都可以隨意轉載,但只有一個要求:
在大段甚至全文引用本系列文章內容的情況下,需要保留本人網名(趙子清)和本博客地址的全部或一部分(http://www.cnblogs.com/zzqcn)。
2.引言
Wireshark是一款優秀的開源協議分析軟件,多年來,全球無數開發者為Wireshark編寫了數千種協議的解析插件(版本1.12.6已有1500余種),再加上強大易用的分析功能,使其幾乎成為協議分析相關人員必備的工具之一。
然而,並沒有一種工具可以完全滿足所有用戶的需要,強大如Wireshark者,也是如此。尤其對於專業的協議分析、安全人員來說,在實際的工作中,往往需要分析某些私有協議的報文,或者用到官方wireshark沒有提供的某些功能;而某些開發人員,則需要將Wireshark的報文解析功能移植到自己的應用場景中……這一切,都需要我們在理解Wireshark工作原理的基礎上,對其進行二次開發。
Wireshark的兩大特點使二次開發比較容易:
- 代碼是開源的
- 提供了插件機制(C/Lua)
本系列文章,就是為了介紹如何進行wireshark二次開發而寫的。
3.主要內容與約定
要對wireshark進行二次開發,必須先了解wireshark的基本工作原理,以及它提供的插件接口(Lua, C)。本系列文章首先介紹了wireshark的基本原理,之后介紹了Lua插件和C插件的編寫,最后介紹如何對wireshark進行修改,加入定制化功能。
對於一般的開發人員來說,學會如何編寫wireshark插件就可以了,這種情況往往是需要寫一個新協議的解析器,完成某種數據統計之類;而對於某些想要加入自定義功能的人來說,則必須對wireshark主要代碼進行修改。
本系列文章所有涉及到代碼開發的地方都會給出示例和運行結果,且都在Windows和MacOSX上進行了驗證,但是例子僅僅是例子,可能功能比較簡單,代碼格式也比較不規范。另外對於原理的描述,本人也正在學習過程中,有些原理描述可能淺嘗輒止,甚至有些小錯誤,也是在所難免,敬請原諒和批評指正。
4.文章索引
【wireshark】插件開發(三):Lua插件 Dissector
【wireshark】插件開發(四):Lua插件Post-dissector和Listener