我想使用 Wireshark 命令行 (tshark.exe) 来捕获 icmp 流量。
我使用了它,并且对于 src 和 dst 主机工作得很好-
C:Program FilesWireshark>tshark.exe -f "src or dst host 192.192.1.1" -i 1 -a duration:10 -w C:tempmycap.cap
这工作正常。但是,如果我只想捕获协议"icmp"的流量并将流量保存到文件中,该怎么办?这行不通——
C:Program FilesWireshark>tshark.exe -f "icmp" -i 1 -a duration:10 -w C:tempmycap3.cap
如果我这样做,那么它就可以了-
C:Program FilesWireshark>tshark.exe -f "icmp"
对于上述命令,有没有办法知道 wireshark 已经捕获了具有给定 IP 列表的特定 icmp 流量计数?假设 10 个不同 IP 的 icmp 流量计数为 10。
或者,我需要更改命令以将 icmp 流量保存到具有给定持续时间的文件?
这不起作用
什么"不起作用"? 它不会向文件写入任何数据包吗? 如果是这样,您确定有 ICMP 数据包要写入吗?
尝试在运行 TShark 时在另一个命令窗口中执行"ping"命令;如果捕获数据包,也许问题只是在 TShark 捕获的 10 秒内没有发送或接收 ICMP 流量。
如果我这样做,那么它可以工作
该命令没有时间限制,因此如果它运行较长时间,则可能足够长,可以发送或接收某些 ICMP 数据包。
对于上述命令,有没有办法知道 wireshark 已经捕获了具有给定 IP 列表的特定 icmp 流量计数?
好吧,如果这是一个BSD风格的UN*X,比如*BSD或OS X,你可以输入control-T,它会报告它捕获了多少数据包。 但是,这是Windows,所以这不起作用。
但是,如果您不使用 -q
标志运行 TShark,它应该打印出捕获的数据包的运行计数;您应该已经看到该计数带有 C:Program FilesWireshark>tshark.exe -f "icmp"
。
假设 10 个不同 IP 的 icmp 流量计数为 10。
TShark 将报告捕获的数据包计数,但它不会报告地址计数,只会报告数据包总数。
或者,我需要更改命令以将 icmp 流量保存到具有给定持续时间的文件?
您键入的第一个命令(带有 -a duration:10
)是持续时间为 10 秒的正确命令。 也许您需要更改的是持续时间,例如,捕获 2 分钟的-a duration:120
,以便查看 ICMP 数据包。 我在机器上运行了 tcpdump 超过 10 秒,过滤器为"icmp",没有看到 ICMP 流量;ICMP 数据包要么指示问题(希望在您的网络上很少见),要么指示信息查询和 ping 的结果(也可能很少见),因此您可能根本没有很多 ICMP 流量。