在 tshark 中定义 IP 范围

Posted

技术标签:

【中文标题】在 tshark 中定义 IP 范围【英文标题】:Defining a range of IP in tshark 【发布时间】:2021-05-27 18:29:33 【问题描述】:

我有一个 pcap 文件,我正在尝试找出该文件中某个范围内的源 IP。

我做了以下事情:

tshark -r myFile.pcap -T fields -e ip.src ip.src >= 10.0.0.0 && ip.src <= 10.255.255.255

但这似乎不起作用并给出错误tshark: "10.0.0.0" was unexpected in this context. 我在这里做错了吗?

【问题讨论】:

【参考方案1】:

虽然@jon-ander-ortiz-durántez 提供的答案基本上是正确的,但根据tshark 手册页,实际上你最初的尝试并没有错,在至少根据当前文档:

A capture or read filter can either be specified with the -f or -R option, respectively, in which case the entire filter expression must be specified as a single argument (which means that if it contains spaces, it must be quoted), or can be specified with command-line arguments after the option arguments, in which case all the arguments after the filter arguments are treated as a filter expression. If the filter is specified with command-line arguments after the option arguments, it's a capture filter if a capture is being done (i.e., if no -r option was specified) and a read filter if a capture file is being read (i.e., if a -r option was specified).

这里的问题是tshark 文档中存在错误。最后的过滤器不是 读取过滤器,而是显示 过滤器,并且它必须被引用以确保可靠。如果您只是引用过滤器,那么它应该可以正常工作:

tshark -r myFile.pcap -T fields -e ip.src "ip.src >= 10.0.0.0 && ip.src <= 10.255.255.255"

也就是说,在这种特殊情况下,我会使用"ip.src == 10.0.0.0/8",因为它更简洁,但我也建议明确使用显示过滤器的语法,即-Y &lt;filter&gt;,比如这个:

tshark -r myFile.pcap -T fields -e ip.src -Y "ip.src == 10.0.0.0/8"

现在,你怎么知道它是 display 过滤器而不是 read 过滤器?当您还包括帧号时,它变得更加明显。这两个应该产生相同的输出:

tshark -r myFile.pcap -T fields -e frame.number -e ip.src -Y "ip.src == 10.0.0.0/8"
tshark -r myFile.pcap -T fields -e frame.number -e ip.src "ip.src == 10.0.0.0/8"

但是,这个会产生不同的结果(假设不是每个数据包都匹配过滤器)

tshark -r myFile.pcap -T fields -e frame.number -e ip.src -2R "ip.src == 10.0.0.0/8"

假设不是所有数据包都匹配过滤器,使用 read 过滤器的输出将具有连续的帧号,而使用 display 过滤器的输出将具有非连续的帧号匹配原始文件的帧号,而不是像 read 过滤器那样重新编号。

我建议就tshark 文档中与过滤器有关的问题提交Wireshark Bug Report。

【讨论】:

【参考方案2】:

Wireshark 上的 IP 范围是使用 CIDR 块[1]指定的。

要定义 10.XX.XX.XX 范围内所有可能的 IP 地址,只需设置:

tshark -r myFile.pcap -T fields -e ip.src ip.src == 10.0.0.0/8

[1]https://www.networkcomputing.com/networking/how-define-ip-range-wireshark

【讨论】:

以上是关于在 tshark 中定义 IP 范围的主要内容,如果未能解决你的问题,请参考以下文章

网络分析利器:Tshark

tshark/Evtx/iptables常用命令

Tshark-如何仅使用tshark显示tcp播放负载的解剖树?

ip地址有几种分类

(chap4 IP协议) 全局地址和私有地址

tshark、tcpdump命令行分析工具对比(1)