应用中需要识别应用层协议,可以使用wireshark
具体的代码使用的参考: wireShark 1.6.5依赖于winpcap 4.1.2版本
WireShark winpcap区别
winpcap是链路层的抓包[采用驱动程序,和TCP/IP协议栈工作于一个层次,平行的结构]
WireShark 是对数据包的分析,执行多种协议,插件结构实现,方便扩展
编译方法
developer-guide-us.pdf 是开发文档,用前看一遍
1、wireshark-win32-libs-1.6.rar:是各种第三方库,默认编译需要联网 脱机时处理办法:将内容放到C:\wireshark-win32-libs-1.6下
2、修改 wireshark源代码包中 config.nmake 使用VS2010
3、进入VS的命令行,即可编译 nmake -f makefile.nmake all distclean
清理 verify_tools 检查依赖库
跟踪方法
默认的编译结果在C:\wireshark\wireshark-gtk2 目录下,wireshark.exe是主程序
1、运行wireshark.exe
2、VS附上该进程 3、在代码中设置断点,即可进入
代码说明
默认 C:\wireshark\epan\dissectors 下是各种协议的解析代码 协议解析是按照树形的插件结构进行的
如http mysql是基于tcp之上的,则解析时先进入packet-tcp.c再进入packet-mysql.c
参考
http://blog.sina.com.cn/s/blog_6d42182e0100z1w1.html
http://www.wisestudy.cn/opentech/opentech_wireshark_codeanalysis.html
http://code.google.com/p/wiresharkplugin/