在 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 <filter>
,比如这个:
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 范围的主要内容,如果未能解决你的问题,请参考以下文章