干货 | 基于wireshark的大报文按需切割方法

点击上方“中兴开发者社区”,关注我们

每天读一篇一线开发者原创好文

干货 | 基于wireshark的大报文按需切割方法

本文简单说明一下基于wireshark的大报文的按需切割方法,主要说明的是如何将一个很大的报文按照需求变成一个较小的报文。

通常从外场采集回来的报文都在百G的数量级,而实际的应用过程中,可能只关注报文中的少数内容,这个时候就需要按需切割。通常的做法是使用wireshark自带的editcap等工具按照数据包的个数进行分割。但是此种方法的缺点显而易见,就是破坏了流的完整性,例如一条流http的请求和相应可能会被切分到两个数据包中。而且局限性也很大,只能按照数量大小切割。

本次所介绍的方法的一个应用场景就是面对比较大的报文,由于数据传输的内容并不是关注的重点,只想取每条流的tcp握手,ssl握手以及http请求相应头等。用来进行数据的识别测试,而整个系统所要求的报文深度为16个包,因此只取每条流的前16个报文。

首选应用的环境是在Linux上面进行的,因为windows上在读取大报文的时候,会抛出内存错误,而这个问题在Linux上面是不存在的。环境的问题,可以查看我以前的文章,具体的应用脚本如下:

shell脚本,读取指定目录指定文件,并向Lua脚本传递参数(文件名):

干货 | 基于wireshark的大报文按需切割方法

 lua脚本,取每条流的前16个报文,生成的文件和以前的文件名相同:

干货 | 基于wireshark的大报文按需切割方法

干货 | 基于wireshark的大报文按需切割方法

干货 | 基于wireshark的大报文按需切割方法

 经过这些操作之后所剩下的报文就很少了,也比较利于分析。

干货 | 基于wireshark的大报文按需切割方法