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 的开发环境就搭建好了。
遗留问题
- doc文档编译不成功,导致制作的安装包无法查看帮助文档。
参考资料