• 【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:cygwin64bin
    SET QT5_BASE_DIR=D:devqt-everywhere-opensource-src-5.3.2qtbase
    SET QT5_BIN=D:devqt-everywhere-opensource-src-5.3.2qtbasebin
    SET PATH=%PATH%;%CYGWIN_BIN%;%QT5_BIN%
    SET WIRESHARK_LIB_DIR=D:devWireshark-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.0VCvcvarsall.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:cygwin64bin
    REM SET QT5_BASE_DIR=D:devqt-everywhere-opensource-src-5.3.2qtbase
    REM SET QT5_BIN=D:devqt-everywhere-opensource-src-5.3.2qtbasein
    REM SET PATH=%PATH%;%CYGWIN_BIN%;%QT5_BIN%
    SET PATH=%PATH%;%CYGWIN_BIN%
    SET WIRESHARK_LIB_DIR=D:devWireshark-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.0VCvcvarsall.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”

  • 相关阅读:
    Python之路【第十九篇】:前端CSS
    大数据之路【第十五篇】:数据挖掘--推荐算法
    大数据之路【第十四篇】:数据挖掘--推荐算法(Mahout工具)
    Python之路【第十八篇】:前端HTML
    大数据之路【第十三篇】:数据挖掘---中文分词
    大数据之路【第十二篇】:数据挖掘--NLP文本相似度
    Python之路【第十七篇】:Python并发编程|协程
    Python之路【第十六篇】:Python并发编程|进程、线程
    大数据之路【第十篇】:kafka消息系统
    Python之路【第十五篇】开发FTP多线程程序
  • 原文地址:https://www.cnblogs.com/zzqcn/p/4823344.html
Copyright © 2020-2023  润新知