Wireshark开发环境搭建笔记

Wireshark开发环境搭建笔记

最近购入了一台新的笔记本电脑,主要用处就是做一些开发工作。之前写过Wireshark 学习笔记Wireshark中foo dissector代码分析两篇关于Wireshark的文章,也搭建过相关的开发环境,这次在新电脑上重新配置开发环境,遇到了一些新问题,在此记录一下,也便于后续查找参考。

开发环境

Windows 11

安装Visual Studio

在Microsoft官网上下载l “Microsoft Visual Studio 2022 Community Edition”安装包,这是一个在线安装包,因此在安装过程中需要保证网络是连接状态。上面是社区版本,不用注册或者付费,还有其他的版本,具体可以看这里Download the Visual Studio bootstrapper to create the layout。如果你想下载离线安装包,可以参考这里Use the “Download all, then install” feature,注意这里下载的是只能本机安装的离线安装包,如果你还想分享给其他人,可以参考这里Create and maintain a network installation of Visual Studio

在安装界面,选择“Desktop development with C++”类型,然后选择下面的组件即可:

  • “MSVC …​ VS 2022 C++” item with the “…​ build tools (Latest)”
  • “Windows 11 SDK”
  • “C++ CMake tools for Windows”
  • “MSVC …​ Spectre-mitigated libs” (optional)

安装Qt

Wireshark 使用 Qt 作为跨平台的 UI 框架,可以在 Qt 官网下载安装文件Download Qt” page。在这个页面上选择你对应平台 ( Windows, Mac, Linux) 的下载页面,其实不论选择哪个都会弹出一个 Free Evaluation 的页面,需要填入注册信息。注册完成后等待几个工作日,你的邮箱才会收到一个下载链接,然后可以下载在线安装器。

官方下载地址会将你引入商用 License 注册页面,这时候你注册的是商用 License,有试用期。所以后续遇到了使用在线安装器配置镜像的时候,会提示商业 License 不支持配置镜像源。

另一种下载在线安装器的方法是使用 tuna 提供的 Qt 镜像https://mirrors.tuna.tsinghua.edu.cn/help/qt/,其中在线安装器地址为https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/online_installers/,选择你对应的平台即可。对于 Wireshark 开发,其实你只需要配置好镜像源后启动在线安装器,然后选择直接注册账户,这个时候就是开源的授权,而且下载通过的是镜像地址,速度比官方要快不少,在 Windows下 的命令为:

qt-unified-windows-x64-online.exe --mirror https://mirrors.tuna.tsinghua.edu.cn/qt

其他设置按照 Wireshark 的指导即可,在安装页面选择“Custom installation”。这里注意如果没有该选项就退出重新打开,因为如果选择了其他模式,下面的有些组件是无法看到的,我就在这里多花了一些时间。在“Select Components”页面,我们选择Qt 6.5.3 LTS版本,其他选择如下:

  • MSVC 2019 64-bit
  • Qt 5 Compatibility Module
  • Qt Debug Information Files (contains PDB files which can be used for debugging)
  • Under “Additional Libraries” select “Qt Multimedia” to support advanced controls for playing back streams in the RTP Player dialog

然后等待安装完成即可。

安装Python, Git和CMake

Python 和 Git 的安装按照官网的指导安装即可,比如直接下载安装包本地安装,下载页面分别为 https://python.org/download/ https://git-scm.com/download/win,Python在 Wireshark 编译过程中会用到,Git 在获取 Wireshark 源代码时会用到。

CMake 是 Windows 下生成 Makefile 工具,或者说是 Visual Studio 需要的 sln 文件和vcxproj 文件的生成工具。其实在 Visual Studio 或 Qt 的安装过程中已经安装了CMake,也就不需要单独安装了。如果你真的想自己手动安装,下载页面在这里https://cmake.org/download/. 我这里使用的是Visual Studio安装的版本,所以没有单独在安装。

安装Chocolatey

上面的Visual Studio, Python, Git, Cmake其实都可以通过 chocolatey 安装,只是命令简单一些,分别为:

choco install -y visualstudio2022community visualstudio2022-workload-nativedesktop
choco install -y python3
choco install -y git
choco install -y cmake

但是对于下面提到的 Asciidoctor, Xsltproc, And DocBook,手动安装会比较复杂,所以我这里选择通过Chocolatey来安装。Chocolatey安装说明在这里https://chocolatey.org/install

首先确保通过管理员身份运行 PowerShell,然后执行如下两步:

第一步:通过 Get-ExecutionPolicy 确认当前是否是 Restricted 状态,默认是,所以需要通过Set-ExecutionPolicy AllSigned 或 Set-ExecutionPolicy Bypass -Scope Process修改,官方建议是Bypass方式。

第二步:通过如下命令安装:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

执行完成后等待一段时间就可以,最后通过choco 或 choco -?确认choco命令是否可以正常使用。

注意:如果第二步执行出错,自己考虑一下如何在国内的网络连接环境下解决。

安装JRE(Java Runtime Environment)

Wireshark 编译中用到的 AsciidoctorJ 需要Java runtime 的支持,所以需要安装JRE。

通过choco install -y javaruntime命令安装,提示如下失败:

The install of jre8 was NOT successful.
Error while running 'C:\ProgramData\chocolatey\lib\jre8\tools\chocolateyInstall.ps1'.
See log for details.
Failed to install javaruntime because a previous dependency failed.
Chocolatey installed 0/2 packages. 2 packages failed.
See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
Failures
javaruntime - Failed to install javaruntime because a previous dependency failed.
jre8 (exited 404) - Error while running 'C:\ProgramData\chocolatey\lib\jre8\tools\chocolateyInstall.ps1'.
See log for details.

原因未知,然后使用手动方式下载JRE并安装,下载地址为:

https://www.java.com/en/download/windows_manual.jsp

或者使用如下地址,但是在这里我们下载不成功,会提示Error Page 404的错误,原因未知。

https://www.oracle.com/technetwork/cn/java/javase/downloads/jre8-downloads-2133155-zhs.html

安装Asciidoctor, Xsltproc, And DocBook

在完成上面的 JRE 和 Chocolatey 安装后,就可以通过如下命令安装Asciidoctor, Xsltproc, And DocBook

choco install -y asciidoctorj xsltproc docbook-bundle

在我安装的时候,xsltproc提示安装失败,没有找到具体原因,单独使用choco install -y xsltproc再安装一次就可以了。

安装winflexbison

可以使用choco install -y winflexbison3自动安装,也可以手动下载安装包安装,安装完成后确认win_flex.exe所在路径被加入到PATH环境变量中。

安装包下载地址:https://sourceforge.net/projects/winflexbison/

安装Perl(可选)

使用 choco install -y activeperl 尝试2次最终都安装失败,使用choco install -y strawberryperl安装成功。

安装NSIS

如果本地构建 Wireshark 和运行,其实不需要 NSIS, 当你想将构建好的 Wireshark 分享给其他人的时候,就需要制作安装包。

在这里http://nsis.sourceforge.net/下载安装包,手动安装即可。

安装完成后command窗口要重启,然后使用编译命令生成prj文件,否则在制作安装包的时候会提示找不到NSIS文件。

编译构建

完成上述所有安装工作后,通过 git 下载 Wireshark 源代码到工作目录下,比如我下载到e:\Workspace\Wireshark\下,然后在Wireshark源代码同级目录创建一个 wsbuild64 构建目录,所有构建文件都存放在这里。目录结构如下:

e:\Workspace\Wireshark
—wireshark
—wsbuild64

在wsbuild64下创建一个环境变量设置文件env.bat,内容如下:

rem Let CMake determine the library download directory name under
rem WIRESHARK_BASE_DIR or set it explicitly by using WIRESHARK_LIB_DIR.
rem Set one of these.
set WIRESHARK_BASE_DIR=E:\Workspace\Wireshark
rem set WIRESHARK_LIB_DIR=c:\wireshark-x64-libs
rem Set the Qt installation directory
set WIRESHARK_QT6_PREFIX_PATH=C:\Qt\6.5.3\msvc2019_64
rem Append a custom string to the package version. Optional.
set WIRESHARK_VERSION_EXTRA=-yourcodename

打开 Visual Studio 2022 的 Cmd Shell,在 wsbuild64 目录下,先执行env.bat, 然后执行如下命令生成工程文件,并编译构建:

cmake -G "Visual Studio 17 2022" -A x64 ..\wireshark
msbuild /m /p:Configuration=RelWithDebInfo Wireshark.sln

生成文件位置

wsbuild64\run\RelWithDebInfo\Wireshark.exe

制作安装包

msbuild /m /p:Configuration=RelWithDebInfo wireshark_nsis_prep.vcxproj
msbuild /m /p:Configuration=RelWithDebInfo wireshark_nsis.vcxproj

安装包文件位置

wsbuild64\packaging\nsis\wireshark-{wireshark-version}-myprotocol123-x64.exe

至此,在 Windows上 的 Wireshark 的开发环境就搭建好了。

遗留问题

  1. doc文档编译不成功,导致制作的安装包无法查看帮助文档。

参考资料

  1. https://www.wireshark.org/docs/wsdg_html_chunked/ChSetupWindows
  2. https://cloud.tencent.com/developer/article/2329243
  3. https://download.qt.io/official_releases/online_installers/
  4. https://mirror.nju.edu.cn/qt/
  5. https://mirrors.tuna.tsinghua.edu.cn/help/qt/

Comments are closed.