我想使用 tshark
捕获并显示某个端口上的 UDP 流量。我想在每个捕获的行上显示文本内容。
我有两台运行 CentOS 7 的计算机。我按照此处的教程从最新的 Wireshark 2.2.6 源构建:http://blog.jeffli.me/blog/2016/08/14/build-latest-wireshark-in-centos-7/
我在两台计算机上都安装了生成的 RPM。之后,我在两台计算机上(以 root 身份)运行了以下 tshark
命令:
/usr/local/bin/tshark -f "port 3901" -i any -T fields -e frame.number -e frame.time -e ip.src -e ip.dst -e data.text
然后我在计算机 A(这是我的台式计算机,以图形模式运行 CentOS 7)上运行了以下命令:
echo "test message" | nc -u 192.168.224.60 3901
tshark
显示以下行:
1 Apr 24, 2017 14:05:25.926688950 EEST 192.168.224.60 192.168.224.60 test message
这正是我所需要的。
现在..我在计算机B(这是以文本模式运行CentOS 7 的远程计算机)上做了完全相同的测试,只是那里的IP 不同。
tshark
拒绝显示 data.text
字段。它输出这样一行,没有 data.text
字段:
1 Apr 24, 2017 11:06:19.947384620 UTC 192.168.0.60 192.168.0.60
我在两台计算机上使用相同的 nc
版本 (6.4)。
我不知道什么会导致计算机 A 与 B 的这种不同行为。什么可以阻止计算机 B 上的 tshark
显示 date.text
?
最佳答案
我在另一个论坛上收到了一个答案: https://ask.wireshark.org/questions/61023/tshark-226-doesnt-display-datatext-field-on-some-computer
解决方案是在我的命令中添加以下参数:
-o data.show_as_text:TRUE
所以命令变成了:
/usr/local/bin/tshark -f "port 3901" -i any -o data.show_as_text:TRUE -T fields -e frame.number -e frame.time -e ip.src -e ip.dst -e data.text
这样我就可以在任何计算机上正确显示 date.text。
关于linux - tshark 2.2.6 在某些计算机上不显示 data.text 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43586783/