在 Tshark v. 3.0.5 上,我尝试运行这些命令以选择用户直接输入的 URL。所以我需要排除空的 http.referer 字段(为空)。
tshark -Y "http.request == 1 and **!http.referer**" -T fields -e frame.time -e http.referer -e http.host -r traffic.pcap > no_referer.txt
bash: !http.referer: event not found
tshark -Y "http.request == 1 and **http.referer == ""**" -T fields -e frame.time -e http.referer -e http.host -r traffic.pcap > no_referer.txt
Running as user "root" and group "root". This could be dangerous.
tshark: Unexpected end of filter string.
您知道如何在 tshark 上选择此数据吗?
Bash 会将显示过滤器中的
**
扩展为您可能不想要的内容,因为您使用双引号。您可以使用单引号来确保 bash 不会更改显示过滤器的内容。
http.referer
是一个字符串,因此检查空值就是检查 ""
。因此,使用 http.referer and !http.referer == ""
来获取具有此字段的数据包,但也可以获取该字段不为空的数据包。
tshark -Y 'http.request == 1 and http.referer and !http.referer == ""' ...
注:
field != value
和!field == value
是不同的,首选后者。 dftest 可以用来来演示为什么会这样。