【wireshark】開發環境搭建


1. 引言

本文相關內容可參考Wireshark開發指南第2章”Quick Setup”

要對wireshark代碼進行修改,除了下文介紹的lua插件的方式以外,都需要對wirehshark源碼進行編譯(C外置解析插件不需要編譯整個wireshark,都需要下載wireshark源碼及需要的庫),因此有必要學習如何搭建Wireshark開發環境。

本文主要介紹在Windows下編譯Wireshark 64位版本的方法和步驟,Mac OSX上的情況稍做了介紹。

下面開始按順序分小節介紹編譯步驟,內容以Wireshark 1.12.x和1.99.x版本為依據,其他較舊版本大同小異。

2. Windows

2.1 下載源碼

源碼壓縮包:https://www.wireshark.org/download/src/all-versions/

Git(應該是主線):git clone https://code.wireshark.org/review/wireshark

2.2 准備Visual C++

要編譯wireshark,開發電腦上應該安裝了Visual Studio並包括了Visual C++,請至少安裝Visual Studio 2010以減少不必要的麻煩。

2.3 安裝Qt (Optional)

http://www.qt.io/download-open-source/#section-2下載與你的Visual Studio版本及處理器結構相對應的Qt版本。

注意,目前Qt官方安裝包只對Visual Studio 2013提供了64bit支持,要使用Visual Studio 2010編譯Wireshark,需要下載Qt opensource源碼並自行編譯為64二進制庫。

2.4 准備PowerShell (Optional)

在Win7之前的舊系統上編譯Wireshark新版本需要安裝PowerShell。

2.5 安裝Cygwin及相關包

到http://www.cygwin.com/下載Cygwin的安裝程序,執行在線安裝,后面將會看到,如果使用舊的Cygwin版本,可能會導致錯誤。安裝時根據提示,選中以下包(*號為可選項):

  • Archive/unzip
  • *Archive/zip (only needed if you intend to build the U3 package)
  • Devel/bison
  • Devel/flex
  • *Devel/subversion (optional - see discussion about using Subversion below)
  • Interpreters/perl
  • Utils/patch
  • Web/wget

假設其安裝到C:\Cygwin64。

2.6 安裝Python

https://www.python.org/ 下載安裝Python 2.7版本,假設安裝到C:\Python27

2.7 准備編譯命令行

到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

 

解釋一下:

  • CYGWIN_BIN: cygwin可執行文件目錄
  • QT_5XXX: Qt相關目錄
  • VISUALSTUDIOVERSION: 編譯所用的Visual Studio版本號
  • PLATFORM:目標平台,即將wireshark編譯為32位還是64位
  • WIRESHARK_VERSION_EXTRA:附加版本信息,這個字符串會出現在編譯好的Wireshark的“About Wireshark”對話框內的版本信息中
  • CALL那行:表示設定Visual C++ 2010 64位編譯模式環境變量

如果不想編譯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

 

2.8 修改/config.nmake文件

打開wireshark源碼主目錄下的config.nmake文件,進行以下改動

  • 找到WIRESHARK_LIB_DIR=,將其設置為編譯wireshark編譯所依賴的第三方庫文件的目錄,見下文解釋
  • 找到LOCAL_CFLAGS=,加入想要的編譯器Flag

此文件中的設置項很多,可以根據自己的需要自行修改。

2.9 檢查編譯工具鏈是否就緒

打開wireshark源碼目錄中的setenv.bat,(打開后就不要關了,以后還要用),運行

nmake -f Makefile.nmake verify_tools

如下圖所示:

如果沒有錯誤提示,證明編譯所需要的所有軟件和工具都安裝好了。

2.10 安裝第三方依賴庫

編譯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

來自動下載安裝依賴庫。

2.11 開始編譯

先運行

nmake -f Makefile.nmake distclean

來清理舊文件,然后運行

 namke -f Makefile.nmake all

開始編譯。在intel i5-4590 CPU和8GB內存機器上,編譯過程大約7分鍾。

3. Mac OSX

以1.99.8為例。

  1. 下載源碼並解壓
  2. 進入主目錄,運行./macosx-setup.sh,根據提示,安裝所有所需依賴項
    如果不需要Qt支持,請注釋掉macosx-setup.sh中的QT_VERSION=x.y.z這一行,且在下面幾步不要加入Qt相關的東西
  3. 設定3個環境變量
  4. export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/Users/zzq/Qt5.5.0/5.5/clang_64/lib/pkgconfig:/usr/X11/lib/pkgconfig
  5. export CMAKE_PREFIX_PATH=:/Users/zzq/Qt5.5.0/5.5/clang_64/lib/cmake
  6. export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Users/zzq/Qt5.5.0/5.5/clang_64/bin
  7. mkdir build; cd build
  8. cmake ..
  9. make –j 6 app_bundle
    如果wireshark 1.12.6,為make –j 6 all
  10. 編好的文件在build/run下面,也可以make install安裝

使用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就可以了。

4. 參考

Wireshark開發指南第2章”Quick Setup”


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM