1. 程式人生 > >Wireshark編譯環境搭建以及支援Etcd報文

Wireshark編譯環境搭建以及支援Etcd報文

一、安裝編譯軟體

        為了擴充套件支援etcd報文解析,需要自己編譯wireshark,因此搭建wireshark編譯環境是必要的。編譯wireshark需要如下軟體作為支撐:
         python2.7(最好是穩定版本,不一定最新)
         cygwin(主要是跨平臺編譯)
         安裝visualstudio 2010
         安裝NSIS打包軟體(主要用於將軟體打包成exe安裝包)
         下載wireshark原始碼及相關lib檔案。
         以上內容必須先安裝否則會報錯,安裝完python需要將其加入到環境變數中,否則在編譯過程中提示找不到py檔案。

二、編譯過程

         1、解決編譯問題
         開始--所有程式--Microsof  Visual Studio 2010 -- Visual  StudioTools  -- Visual  Studio命令提示(2010)
切到程式碼根目錄中然後,執行如下命令列nmake-f Makefile.nmake setup,但是仍然報錯:

問題1:

問題原因:

在安裝cywin的時候未選擇這些軟體。
解決辦法:
重新執行cywin安裝程式,如下圖所示,搜尋要安裝的軟體:

問題2:找不到winpcap

 解決方法:
自己手動下載依賴庫檔案,放到c:/wireshark-win32-libs-1.12中(這個目錄依據個人實際情況),https://anonsvn.wireshark.org/wireshark-win32-libs/tags/2014-10-01/packages/,這個地址是從上面錯誤資訊得出的。

備註:建議將該地址的所有檔案都下載到本地。

2、開始編譯
當出現Wireshark is ready to build就可以進行編譯了,執行 nmake -fMakefile.nmake all

編譯基本上不會出現問題,當出現下面結果表示編譯成功。

3、打包
    Windows是以exe形式釋出,那麼wireshark如何進行打包呢?執行如下命令列:nmake -f Makefile.nmake packaging 編譯並打包。
    在打包過程需要依賴Qt-5.1.1-MSVC2010-win32-ws.zip,所以需要先下載好,此檔案比較大。
問題1:缺少vcredist_x86.exe

從微軟官方搜尋該檔案,下載並且放到wireshark-win32-libs-1.12目錄中,再次執行打包命令則可打包成功。注意打包的應用程式為win32,非64位版本。

三、支援etcd報文

    為了支援Etcd報文,我們需要對wireshark進行擴充套件,具體如何擴充套件基本上參考現有協議,照貓畫虎。

四、總結

    1、在編譯過程中每個人的環境都不盡相同,尤其是安裝cywin的時候,如果缺少什麼檔案,則按照上述方式安裝即可。
    2、總體來說,編譯wireshark問題不是很多,比較順利。若有人基於wireshark開發第三方元件,大部分場景只需要動態庫libwireshark.dll,那麼可以偷懶,找一個已經發布好的版本,然後將編譯好的libwireshark .dll替換即可。

    3、之前為了增加etcd解析報文,所以才研究wireshark原始碼,我已經將wireshark原始碼託管到github中,可自行下載。csdn中已經上傳一份編譯好的dll庫,可自行下載
    4、由於專案需求,專案擴充套件了openflow協議,因此wireshark並不能解析,也就是從那個時候開始第一次接觸wireshark原始碼,但只是略懂皮毛而已。但是這次增加etcd報文解析,算是進一步深入瞭解,對後續再有新的需求也不再發憷。
    5、由於etcd使用不是很深入,部分報文可能沒有解析到,若發現報文無法解析,請留言。