Wireshark 提示和技巧 | 多文件捕获那些事

前言

说到 Wireshark 多文件捕获,它属于捕获选项中的一部分,简单来说就是默认的捕获存储成单个文件形式,变成捕获存储成多个文件形式,多文件捕获形式一般用于高速率或长时间捕获数据包的场景。

默认情况下,在以上场景中捕获的单个数据包跟踪文件大小会迅速增长,如果单文件大小达到几百M以上,对于后期 Wireshark 加载分析就会是一个很吃力的事情,慢就一个字。

所以说为了使 Wireshark 分析能顺利进行,一般会考虑几种方式控制:

  1. 捕获过滤,可基于需要的协议和数据包,定义捕获过滤表达式,精准捕获,这样相对于全量捕获,文件自然会相对较小;
  2. 捕获选项-多文件,可基于数据包数量、数据包大小、数据包时间等条件,捕获存储成多文件的形式;
  3. 捕获选项-多文件+环形缓冲区,在基于多文件捕获条件的场景下,如果考虑存储容量问题,可以定义捕获文件的最大个数,这样形成循环,达到环形缓冲的目的;
  4. 文件切割,通过 editcap 工具,自定义分割条件,将单个数据包捕获文件分割成多个文件;
  5. 读取过滤,在 Wireshark 读取文件时,通过读取过滤表达式,控制显示的数据包数量;
  6. 显示过滤,在 Wireshark 显示全量数据包后,通过显示过滤表达式,控制显示的数据包数量。

其中 1 在高速率或长时间捕获数据包的场景下仍无法避免单个数据包捕获文件过大的问题,同样 5 和 6 也不是解决单个数据包捕获文件过大问题的方式。

因此本文的重点放在 2 和 3 上,主要介绍如何进行多文件以及包括环形缓冲区下的捕获。

捕获选项

在 Wireshark 主界面下,通过 Capture -> Options 进入,选取 Output,可看到在输出选项下的两个选项(默认无勾选),包括自动创建新文件以及环形缓冲区等。

image.png

多文件捕获

默认情况下,Wireshark 会将捕获数据包存储为一个单文件,可以通过勾选 Create a new file automatically... 选项后开启多文件捕获,包括以下条件:

  1. 数据包数量

控制单个数据包捕获文件中的数据包数量,在达到设置的值后,自动存储为下一个新文件。
捕获文件名定为 test.pcapng,设置单个数据包文件 1000 个数据包。

image.png

捕获结果如下图,文件名的格式是以 00001 为开头的编号,加以数据包文件中第一个数据包的时间(如 20220618121114)。

image.png

λ capinfos -c test_00001_20220618121114.pcapng test_00002_20220618121122.pcapng test_00003_20220618121137.pcapng
File name:           test_00001_20220618121114.pcapng
Number of packets:   1000

File name:           test_00002_20220618121122.pcapng
Number of packets:   1000

File name:           test_00003_20220618121137.pcapng
Number of packets:   1000

...
  1. 数据包文件大小

控制单个数据包捕获文件的大小,可选单位为 kilobytesmegabytesgigabates ,在达到设置的值后,自动存储为下一个新文件。

捕获文件名定为 test.pcapng,设置单个数据包文件大小为 1M bytes。

image.png

捕获结果如下图,文件名的格式同样是以 00001 为开头的编号,加以数据包文件中第一个数据包的时间(如 20220618123407),大小 976 KB (1,000,008 字节)。

image.png

λ capinfos -s test_00001_20220618123407.pcapng test_00002_20220618123437.pcapng test_00003_20220618123509.pcapng
File name:           test_00001_20220618123407.pcapng
File size:           1000 kB

File name:           test_00002_20220618123437.pcapng
File size:           1000 kB

File name:           test_00003_20220618123509.pcapng
File size:           1000 kB

...
  1. 数据包捕获时长

控制单个数据包文件捕获的时长,可选单位为 secondsminuteshours ,在达到设置的值后,自动存储为下一个新文件。

捕获文件名定为 test.pcapng,设置单个数据包文件捕获时长为 1 minutes。

image.png

捕获结果如下图,文件名的格式同样是以 00001 为开头的编号,加以数据包文件中第一个数据包的时间(如 20220628193249),每个数据包跟踪文件时间间隔为 1 分钟,是以当前开始的捕获时间为基准,间隔 1 分钟不断捕获。

image.png

λ capinfos -u test*.pcapng
File name:           test_00001_20220628193249.pcapng
Capture duration:    60.279904 seconds

File name:           test_00002_20220628193350.pcapng
Capture duration:    60.140156 seconds

File name:           test_00003_20220628193450.pcapng
Capture duration:    60.549873 seconds

需重点注意的是,测试是在 Wireshark Version 3.6.6 版本下进行,该版本此勾选项存在 BUG,实际捕获的结果会是第 4 个数据包整倍时间选项勾选后的抓包结果。
经测试验证,在 3.6.6 版本前和 3.4 整个版本中都存在这个 BUG,而目前的 4.0 版本正常。

  1. 数据包整数倍时间

控制单个数据包文件捕获时间,当前时刻是所设置参考值的整数倍,可选单位为 secondsminuteshours ,在达到设置的值后,自动存储为下一个新文件。

捕获文件名定为 test.pcapng,设置时间参考值为 30 seconds。

image.png

捕获结果如下图,文件名的格式同样是以 00001 为开头的编号,加以数据包文件中第一个数据包的时间(如 20220618143144)。第一个文件会有点特殊,它并不是完整的的 30s 整数倍时长,而是从 31分44秒到32分00秒。从第二个文件开始,每个文件的捕获时长均是 30s ,也就是 14:32:00 、14:32:30、14:33:00 等等。

image.png

λ capinfos -u test*.pcapng
File name:           test_00001_20220618143144.pcapng
Capture duration:    16.493227 seconds

File name:           test_00002_20220618143200.pcapng
Capture duration:    29.819237 seconds

File name:           test_00003_20220618143230.pcapng
Capture duration:    30.096644 seconds

File name:           test_00004_20220618143300.pcapng
Capture duration:    29.863000 seconds

File name:           test_00005_20220618143330.pcapng
Capture duration:    29.739547 seconds

...

需重点注意的是,测试是在 Wireshark Version 3.6.6 版本下进行,该版本此勾选项存在 BUG,该选项勾选后无法生效,会提示错误(类似开启勾选 Create a new file automatically… 选项后,但不开启任何条件所报的错误)。
经测试验证,在 3.6.6 版本前和 3.4 整个版本中都存在这个 BUG,而目前的 4.0 版本正常。实际上就是选项错位了,勾选 3 选项得到的结果是 4 选项的,勾选 4 选项提示没有任何勾选。

  1. 多选项

以上 4 个选项除了单独勾选以外,也可以进行复选。譬如数据包文件大小和捕获时长两个选项同时勾选,这样的情况下,哪个先达到条件,就转至下一个文件。

image.png

环形缓冲区

以上介绍了多文件捕获的情况,当然长时间捕获的场景下,数据包跟踪文件的数量自然是随着捕获时间的增长而不断增加。考虑到文件数量和存储容量的问题,输出选项又增加了一个环形缓冲区的概念。

这个选项也很好理解,如果在多文件捕获的基础下,原来不断增加的文件个数,譬如 test_00001、test_00002、test_00003、test_00004、test_00005 。。。等等,在设置好 Ring Buffer 文件数量后,例如 3 个文件,数据包捕获只会在 3 个文件的个数限制下不断循环,也就是生成 3 个文件后,再产生出来的文件替换掉第 1 个,再第 2 个,再第 3 个,再第 1 个。。。如此不断循环。

image.png

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>