自动化测试中基于WinDump的抓包工具实现

简介:

在客户端的功能测试过程中,常常需要验证URL请求是否发送,参数是否正确。市场上有不少的网络数据分析工具,smsniffer、wireshark、fiddler......他们可以很好的辅助我们完成验证的工作。但是,在自动化测试的过程中,无法再依靠肉眼检查来完成相关的验证。通常的做法,可以在本地Mock一个服务器,再又服务器将请求的数据返回给客户端来进行验证,这在接口测试中比较有效。但是在功能测试的过程中,需要额外的编写一个工具,完成相关的代理转发工作,本身是一件略有难度的事。因此,团队在测试的过程中考虑通过另外的方法去捕获客户端程序发出的请求和响应。

  设想的方案的是利用现有的工具,生成网络监听数据后,再通过 TCP/IP + HTTP 协议反向解析出请求数据和响应数据。通过调研选定了Windows平 台下的网络监听工具WinDump(该工具是Window平台下一款出色的开源的轻量级网络监听工具)。通过实验及对WinDump文档的研究,确定了抓 包时使用的参数:WinDump.exe -i N -s 0 -w file_name -a host host_name其中:

  -i 表示监听的网络端口编号

  -s 0 表示捕获完整的数据包

  -w file_name 输出到文件file_name中

  -a 使用Ascii编码输出数据包

  host host_name 只捕获与host_name间的通信数据包。

   通过这些参数,WinDump生成的数据文件格式是稳定的,包含完整的MAC、IP、TCP层的完整数据,是可以反向解析的。根据相关协议的文档和生成 文件的数据比对,确定生成的文件格式为:24字节未知数据 + 16或者22字节的未知数据 + MAC帧 + IP帧 + TCP帧 + 数据帧,第2、3、4、5、6部分每个数据包都会重复出现。此外,通过比对,工具会生成完整的三次握手数据。

  在分析完数据文件的格式 后,就可以通过编码去分拆数据包了,去除未知数据后,把有用的数据包提取出来,并解析出其中的数据帧。并通过请求发送的端口和目标端口,对并发数据做完整 的对应关系(Request的端口是动态的,服务器会根据请求的端口将相应的Response返回给请求端口)。最后提取出关键的请求和响应的数据帧存储 起来。这里是一份基于Ruby语言的捕获http数据包和正则验证数据请求存在的辅助类实现代码。在辅助类中通过正则表达式去拆分Http请求及相应中的相关参数,并进行存储。通过对外的接口获取相关的请求和相应,后面想做什么,就随心所愿了....

   最后有一些需要改进的地方:1、如果能在请求时能过滤一些不Care的数据(例如未知数据、三次握手的数据),这样最好了。2、需要根据数据分包标志完 成数据包的拼接(TCP协议中对数据包的大小做了一些限制,因此在数据包超过协议长度时会分为多个数据包传输,需要通过偏移量完成完整数据包的还原工 作)。








====================================分割线================================



最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
|
3月前
|
测试技术 数据安全/隐私保护
通过抓包能否做好接口测试
通过抓包能否做好接口测试
16 0
|
8月前
|
网络协议 测试技术 开发者
接口测试及接口抓包常用测试工具和方法?
接口测试及接口抓包常用测试工具和方法?
273 0
|
9月前
|
API Android开发 数据安全/隐私保护
《协议测试》抓包工具Fiddler实战教程 2
《协议测试》抓包工具Fiddler实战教程
|
9月前
|
Web App开发
《协议测试》抓包工具Fiddler实战教程 1
《协议测试》抓包工具Fiddler实战教程
|
前端开发 测试技术
接口测试|Fiddler弱网测试
接口测试|Fiddler弱网测试
116 0
接口测试|Fiddler弱网测试
|
Web App开发 测试技术
接口测试|Fiddler介绍以及安装
接口测试|Fiddler介绍以及安装
111 0
接口测试|Fiddler介绍以及安装
|
存储 安全 网络安全
接口测试|Fiddler设置手机抓包
接口测试|Fiddler设置手机抓包
169 0
接口测试|Fiddler设置手机抓包
|
网络协议 Linux 网络架构
快速学习多协议抓包利器Wireshark
快速学习多协议抓包利器Wireshark
199 0
|
缓存 前端开发 JavaScript
入门兵器谱,测试相关软件系列——Fiddler抓包工具使用教程
Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。
233 0
入门兵器谱,测试相关软件系列——Fiddler抓包工具使用教程
|
JSON 监控 JavaScript
测试工具Fiddler(三)—— 常见功能介绍
测试工具Fiddler(三)—— 常见功能介绍
319 0
测试工具Fiddler(三)—— 常见功能介绍