闲来无事,想做个wireshark的协议解析插件,可以解决一下自己工作中的自定义协议解析问题。
好了,废话少说,开始干活。
首先在网上查下资料。想在windows下开发插件环境需求如下:
1 需要windows下的C/C++编译环境。 嗯,我装了VS2008,可以用。
2 安装cygwin。
去http://www.cygwin.cn/下载一个吧。下载下来的只是一个setup.exe。
运行之后界面
我先选的Download Without installing,先下载到本地,以备日后使用。^_^下载的时候,我是选择了全部组件,下完之后有 1.25G。。。 下了一晚上啊(=.=!)
第二次运行setup.exe选在Install From local directory.安装时就不要全选了哈。
安装时有些组件是wireshark必须的,但是默认是不安装的,注意更改安装选项。
3 需要安装python,cygwin自带也有,不过人家wireshark也说了, not recommend.
我先装了个3.1的,编译时总是提示找不到,最后还是装了个2.6的python。
配套的版本wireshark源码的根目录下 Makefile.nmake 中有写。还是要按照配套的版本来啊。
环境准备完成后修改下Makefile.nmake文件中的几个参数,注意修改前备份~
具体过程可以参考:http://blog.csdn.net/hcj2002/archive/2008/04/06/2255637.aspx
我的环境:
cygwin安装路径:D:/cygwin 版本:cygwin1.7.1
wireshark源码: D:/wireshark-1.3.2
VS2008安装路径:D:/Program Files/Microsoft Visual Studio 9.0
python2.6安装路径:D:/Python26
wirshark 编译时遇到如下问题。
问题1:win-setup.sh 找不到。
d:/wireshark-1.3.2>nmake -f makefile.nmake verify_tools
Microsoft (R) 程序维护实用工具 9.00.21022.08 版
版权所有 (C) Microsoft Corporation。保留所有权利。
cygwin warning:
MS-DOS style path detected: tools/win32-setup.sh
Preferred POSIX equivalent is: tools/win32-setup.sh
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
tools/win32-setup.sh: line 12: exec: tools/win-setup.sh: not found
tools/win32-setup.sh: line 12: exec: tools/win-setup.sh: not found
NMAKE : fatal error U1077: “D:/cygwin/bin/bash.EXE”: 返回代码“0x7f”
Stop.
d:/wireshark-1.3.2>
这个问题折腾了好久,后来发现是wireshark的bug =.=!
是因为这个1.3.x版本在使用cygwin 1.5.x 到 1.7.x的版本,处理ms-dos风格的路径有问题,囧。
规避方法是:
Changing the WIN_SETUP= line in the main Makefile.nmake file to use a POSIX
style forward slash path delimiter instead of using a Win32 style backslash
delimiter resolves the nmake problem:
e.g.
> -WIN_SETUP=tools/$(WIRESHARK_TARGET_PLATFORM)-setup.sh
> +WIN_SETUP=tools/$(WIRESHARK_TARGET_PLATFORM)-setup.sh
不过我在Makefile.nmake文件中没有找到WIN_SETUP=
我直接修改了源代码tools/win32-setup.sh文件中的WIN_SETUP=`echo $0 | sed -e s/win32/win/`改成WIN_SETUP=tools/win-setup.sh
问题2:提示/Microsoft.VC90.CRT/*.*的几个文件找不到。
编译文件到最后提示xcopy C:/Program files/Microsoft Visual Studio 9.0/VC/redist/$(VCREDIST_DLL)/Microsoft.VC90.CRT/*.* 失败,找不到文件。
我的VS2008是装在D盘的。
在Makefile.nmake搜了一下,找到这么一行
MSVCR_DLL=$(PROGRAM_FILES)/Microsoft Visual Studio 9.0/VC/redist/$(VCREDIST_DLL)/Microsoft.VC90.CRT/*.*
PROGRAM_FILES在Makefile.nmake中的定义是PROGRAM_FILES=$(PROGRAMFILES)
在cmd命令行中执行SET PRO发现结果如下:
d:/wireshark-1.3.2>SET PRO
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 23 Stepping 10, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=170a
ProgramData=C:/ProgramData
ProgramFiles=C:/Program Files
PROMPT=$P$G
d:/wireshark-1.3.2>
呃~ 这个一定是哪里出错了。。。
不管了,将Makefile.nmake文件中的
MSVCR_DLL=$(PROGRAM_FILES)/Microsoft Visual Studio 9.0/VC/redist/$(VCREDIST_DLL)/Microsoft.VC90.CRT/*.*
修改为
MSVCR_DLL=D:/Program files/Microsoft Visual Studio 9.0/VC/redist/$(VCREDIST_DLL)/Microsoft.VC90.CRT/*.*
再执行 nmake -f makefile.nmake verify_tools,哈哈,成功了。