本文相关内容可参考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就能够了。