本文相關內容可參考Wireshark開發指南第2章」Quick Setup」html
要對wireshark代碼進行修改,除了下文介紹的lua插件的方式之外,都須要對wirehshark源碼進行編譯(C外置解析插件不須要編譯整個wireshark,都須要下載wireshark源碼及須要的庫),所以有必要學習如何搭建Wireshark開發環境。python
本文主要介紹在Windows下編譯Wireshark 64位版本的方法和步驟,Mac OSX上的狀況稍作了介紹。git
下面開始按順序分小節介紹編譯步驟,內容以Wireshark 1.12.x和1.99.x版本爲依據,其餘較舊版本大同小異。shell
源碼壓縮包:https://www.wireshark.org/download/src/all-versions/macos
Git(應該是主線):git clone https://code.wireshark.org/review/wireshark網絡
要編譯wireshark,開發電腦上應該安裝了Visual Studio幷包括了Visual C++,請至少安裝Visual Studio 2010以減小沒必要要的麻煩。app
到http://www.qt.io/download-open-source/#section-2下載與你的Visual Studio版本及處理器結構相對應的Qt版本。svn
注意,目前Qt官方安裝包只對Visual Studio 2013提供了64bit支持,要使用Visual Studio 2010編譯Wireshark,須要下載Qt opensource源碼並自行編譯爲64二進制庫。工具
在Win7以前的舊系統上編譯Wireshark新版本須要安裝PowerShell。學習
到http://www.cygwin.com/下載Cygwin的安裝程序,執行在線安裝,後面將會看到,若是使用舊的Cygwin版本,可能會致使錯誤。安裝時根據提示,選中如下包(*號爲可選項):
假設其安裝到C:\Cygwin64。
到https://www.python.org/ 下載安裝Python 2.7版本,假設安裝到C:\Python27
到wireshark源碼主目錄建一個批處理文件,如setenv.bat,內容以下
@ECHO off SET PATH=%PATH%:. SET CYGWIN_BIN=C:\cygwin64\bin SET QT5_BASE_DIR=D:\dev\qt-everywhere-opensource-src-5.3.2\qtbase SET QT5_BIN=D:\dev\qt-everywhere-opensource-src-5.3.2\qtbase\bin SET PATH=%PATH%;%CYGWIN_BIN%;%QT5_BIN% SET WIRESHARK_LIB_DIR=D:\dev\Wireshark-win64-libs-1.12 SET VISUALSTUDIOVERSION=10.0 SET PLATFORM=X64 SET WIRESHARK_VERSION_EXTRA=-zzq-x64 ECHO 設置 Visual Studio environment... CALL "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" amd64 title Command Prompt (MSVC++ 2010 64bit) GOTO :eof
解釋一下:
若是不想編譯Qt版本,則腳本改爲以下:
@ECHO off REM Batch script for compiling Wireshark on Windows. REM I have disabled the Qt version build because it's meaningful REM in 1.99.x only I think. SET PATH=%PATH%:. SET CYGWIN_BIN=C:\cygwin64\bin REM SET QT5_BASE_DIR=D:\dev\qt-everywhere-opensource-src-5.3.2\qtbase REM SET QT5_BIN=D:\dev\qt-everywhere-opensource-src-5.3.2\qtbase\bin REM SET PATH=%PATH%;%CYGWIN_BIN%;%QT5_BIN% SET PATH=%PATH%;%CYGWIN_BIN% SET WIRESHARK_LIB_DIR=D:\dev\Wireshark-win64-libs-1.12 SET VISUALSTUDIOVERSION=10.0 SET PLATFORM=X64 SET WIRESHARK_VERSION_EXTRA=-zzq-x64 ECHO Setup Visual Studio environment... CALL "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" amd64 title Command Prompt (MSVC++ 2010 64bit) GOTO :eof
打開wireshark源碼主目錄下的config.nmake文件,進行如下改動
此文件中的設置項不少,能夠根據本身的須要自行修改。
打開wireshark源碼目錄中的setenv.bat,(打開後就不要關了,之後還要用),運行
nmake -f Makefile.nmake verify_tools
以下圖所示:
若是沒有錯誤提示,證實編譯所須要的全部軟件和工具都安裝好了。
編譯wireshark須要依賴很多第三方庫,以下圖所示
這些庫能夠用wireshark編譯腳本自動下載,也能夠手動下載。這些庫的下載地址是:
http://anonsvn.wireshark.org/wireshark-$WIRESHARK_TARGET_PLATFORM-libs/tags/$DOWNLOAD_TAG/packages/
其中$WIRESHARK_TARGET_PLATFORM要替換成你所要編譯的目標平臺,如win32或win64,$DOWNLOAD_TAG要替換成一個日期字符串。好比對於我要編譯1.12.0版本,這個地址是:
http://anonsvn.wireshark.org/wireshark-win64-libs/tags/2014-06-19/packages/。
若是網絡質量好,能夠直接運行
nmake -f Makefile.nmake setup
來自動下載安裝依賴庫。
先運行
nmake -f Makefile.nmake distclean
來清理舊文件,而後運行
namke -f Makefile.nmake all
開始編譯。在intel i5-4590 CPU和8GB內存機器上,編譯過程大約7分鐘。
以1.99.8爲例。
使用cmake編譯時,默認的編譯選項由主目錄下的CMakeList.txt中的
if( NOT CMAKE_BUILD_TYPE ) set( CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE) endif()
設定爲RelWithDebInfo,若是想要開發調試,最好設成Debug。能夠在這裏設置,也能夠在cmake命令行中設置:
cmake –DCMAKE_BUILD_TYPE=Debug.
另外,爲了使Mac OSX下編譯的GTK+版本的wireshark能運行,須要先啓動X11(由Quartz安裝,默認在Launchpad中的」其餘「裏),而後在shell裏輸入export DISPLAY=:0.0,再運行./wireshark就能夠了。