最近公司在做一个项目,要分析多个pcap文件,需要调用wireshark来做分析,所以要熟悉wireshark源码,wireshark功能如此强大,源代码看起来相当费力,为了尽快熟悉wireahrk,最好的办法就是能调试wireshark。接下来分别介绍(1).windows下如何编译wireshark(2).wireshark源码中部分函数分析及使用
一.windows下如何编译wireshark源码
1.下载安装cygwin,可以直接选择网上的安装包下载,因为在线下载会很慢的
2.下载安装python ,本人使用python26版本
3.下载wirshark源码,下载地址:https://www.wireshark.org/download/src/all-versions/
从1.10版本往下才会有vs的工程文件存在
4.打开wireshark源码目录,找到config.nmake,修改如下几项:
1.WIRESHARK_LIBS,设置编译WireShark所需的库所在的目录,默认即可。
2.PROGRAM_FILES,设置本机程序安装目录,默认即可
3.MSVC_VARIANT,因为我使用VS2008编译,所以这里将值为MSVC2010的那一行前的#去掉,其余MSVC_VARIANT项行首全部加上#注释掉
4..CYGWIN_PATH,将其设置为Cygwin的bin目录,例如D:\source\cygwin\cygwin\cygwin\bin
5.PYTHON及其后的PATH,将其修改为本机python.exe和其安装目录的位置,例如C:\Python27\Python.exe。(也可采用默认)
6.MSVCR_DLL,如果VS安装在D盘,请在这里相应的地方用绝对路径表示,而不要去修改前面的PROGRAM_FILES,否则会出现意想不到的错误
例:MSVCR_DLL=D:\softinstall\MicrosoftVisual Studio 10.0\VC\redist\x64\Microsoft.VC100.CRT\*.*
5.编译wireshark
打开vs2010的cmd工具,找到D:\softinstall\Microsoft Visual Studio10.0\VC\bin\下的vcvars32.bat,拖到cmd里的,再切换到wireshark源码目录,
6.依次输入如下指令:
1.nmake -f Makefile.nmake verify_tools
2.nmake -f Makefile.nmake setup
此命令会在线下载一些安装包,存放到c根目录下
3.nmake -f Makefile.nmake distclean
4.nmake -f Makefile.nmake all
此命令可能会第一次出错,再进行一次编译就可以了
二.wireshark部分源码分析
1.编译成功后,会在wireshark目录下wireshark-gtk2目录下产生一堆lib、dll,这些库非常重要。下面的开发将会使用这些库。这里也可以进行调试wireshark了,调试看的会更容易明白wireshark是如何工作的了。
2.如何想将wireshark源码添加到vs中,方便单步调试,这里要说明一下,从wireshark1.10.9版本以前,才会有vs的工程文件,此时需要自己建立一个解决方案,将工程文件添加到该解决方案中即可
3.静态引用编译成功产生的各lib,代码如下:
这里要说明的是,wireshark是需要glib库的,要想加载wireshark库首先要能正常加载glib库,而glib库为linux常用的C语言库,需要先
移植到windows下,这个很容易,网上也是可以找到相关资源的,这里不讲述了
4.此时就可以进行wireshark二次开发了,先大概看明白wireshark,需要用到wireshark哪部分就加载哪部分,其实因为我们不需要界面部分,其实用到的还是tshark源码部分,像打开pcap文件、读取pcap文件,合并pcap文件,解析pcap文件,还有很多很多可以做,这些都比较容易的,这里不再多说了
本人前段时间还将tshark源码成功移植到了android平台,实现了手机上抓包分析文件,有时间分享给大家,这个目前市面上也是没有的