使用协议 ICMP 的命令行过滤器

Command line filter with protocol ICMP

我想使用 Wireshark 命令行 (tshark.exe) 来捕获 icmp 流量。

我用过这个并且对 src 和 dst 主机运行良好-

C:\Program Files\Wireshark>tshark.exe -f "src or dst host 192.192.1.1" -i 1 -a duration:10 -w C:\temp\mycap.cap

这很好用。但是,如果我只想捕获协议 "icmp" 的流量并将流量保存到文件中怎么办。这不起作用-

C:\Program Files\Wireshark>tshark.exe -f "icmp" -i 1 -a duration:10 -w C:\temp\mycap3.cap

如果我这样做就可以了-

C:\Program Files\Wireshark>tshark.exe -f "icmp"

对于上面的命令,有什么方法可以知道 wireshark 已经使用给定的 ip 列表捕获了特定数量的 icmp 流量?假设 10 个不同 ip 的 icmp 流量计数为 10。

或者,我需要怎样更改命令才能将 icmp 流量保存到给定持续时间的文件?

This does not work

有什么"does not work"?它不会将任何数据包写入文件吗?如果是这样,您确定有 ICMP 数据包要写入吗?

尝试在 运行 宁 TShark 时在另一个命令 window 中执行 "ping" 命令;如果 那个 捕获数据包,可能问题只是在 TShark 捕获的 10 秒内没有发送或接收 ICMP 流量。

If i do this then it works

该命令没有时间限制,因此如果它 运行 的时间较长,则可能足以发送或接收一些 ICMP 数据包。

For the above command, is there any way to know the wireshark has captured a particular count of icmp traffic with given list of ip?

好吧,如果这是 BSD 风格的 UN*X,例如 *BSD 或 OS X,您可以键入 control-T,它会报告捕获了多少数据包。但是,这是 Windows,所以这不起作用。

但是,如果您没有 运行 TShark 的 -q 标志,它应该打印出 运行ning 捕获数据包的计数;你应该用 C:\Program Files\Wireshark>tshark.exe -f "icmp".

看到那个计数

Lets say 10 count of icmp traffic for 10 different ip.

TShark 将报告捕获的数据包计数,但不会报告地址计数,只报告数据包总数。

Or, what do i need to change the command to save the icmp traffic to a file with given duration?

您键入的第一个命令 -a duration:10 持续 10 秒的正确命令。也许你需要更改的是持续时间,例如 -a duration:120 捕获 2 分钟,以便查看 ICMP 数据包。我在我的机器上 运行 tcpdump 超过 10 秒,过滤器 "icmp",没有看到 ICMP 流量; ICMP 数据包要么表示问题(希望在您的网络上很少见),要么是信息查询和 ping 的结果(也可能很少见),因此您可能根本没有很多 ICMP 流量。