我正在为我们的 CAN 总线协议编写 Wireshark 解析器,我注意到 tcpdump 捕获了两次 CAN 帧,并且其输出与 candump 程序不同。
例如,当我执行以下命令时
$ cansend vcan0 123#R
$ cansend vcan0 123#22
tcpdump 显示以下输出
$ tcpdump -i vcan0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vcan0, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
00:19:18.372611
0x0000: 2301 0040 0000 0000 0000 0000 0000 0000 #..@............
00:19:18.374097
0x0000: 2301 0040 0000 0000 0000 0000 0000 0000 #..@............
00:19:33.605064
0x0000: 2301 0000 0100 0000 2200 0000 0000 0000 #.......".......
00:19:33.610799
0x0000: 2301 0000 0100 0000 2200 0000 0000 0000 #.......".......
但 candump 显示正确。
$ candump vcan0
vcan0 123 [0] remote request
vcan0 123 [1] 22
tcpdump 版本
$ tcpdump --version
tcpdump version 4.9.2
libpcap version 1.9.0-PRE-GIT (with TPACKET_V3)
我有两个问题
- 这个问题有解决办法吗或者在新版本中已经解决了吗?
- 如果不需要或需要更新版本,我可以在 Wireshark 远程捕获中使用 candump 吗?我知道我可以预览 candump 日志,但我更喜欢使用远程捕获进行实时检查。
的默认行为
tcpdump
是显示所有流量。当您注入消息时,这涉及 asend
bycansend
和 areceive
,因此tcpdump
会打印两者。如果您只想打印传入消息(接收),您可以添加
-Q in
选项tcpdump
。