如何使用 Wireshark/tshark 剖析 UDP msgpack?
How to dissect UDP msgpack using Wireshark/tshark?
从 v3.0.0 Wireshark 开始支持 msgpack。我有一个捕获文件,其中包含封装在我想剖析的 UDP 中的 msgpack 消息。问题是当我 运行:
tshark -r 1.pcap -d udp.port==60003,msgpack
我收到以下消息:
tshark: Protocol "msgpack" isn't valid for layer type "udp.port"
tshark: Valid protocols for layer type "udp.port" are:
支持的协议列表包含 msgpack:
tshark -G protocols | grep msgpack
Message Pack MsgPack msgpack
这里是 link 示例捕获文件:https://drive.google.com/file/d/1qZO-WKgTValghMjC4kM56B-M1FlYg5C2/view?usp=sharing
无法在最新的 3.07 tshark 和 Wireshark 中解码为 msgpack(即这看起来像是一个错误)。如果你觉得有德行,可以file one.
您仍然可以访问第 4 层之后的数据层。我们可以使用 shell 魔法来执行相当于使用您提供的文件解码该层的操作:
# Unix-like (Macos/Linux/BSD) systems ship with xxd.
# WSL on Windows will also have it.
bash$ tshark -r msgpack.pcap -T fields -e data | xxd -p -r | msgpack2json && echo
{"message_type":"complete_caching","generation":123992}
在这里,我们
- 使用 tshark 将数据字段打印为 ASCII hex
- 使用 xxd 将文本十六进制转换为二进制十六进制
- 使用 msgpack-tools 中的
msgpack2json
将二进制数据转换回 JSON。
从 v3.0.0 Wireshark 开始支持 msgpack。我有一个捕获文件,其中包含封装在我想剖析的 UDP 中的 msgpack 消息。问题是当我 运行:
tshark -r 1.pcap -d udp.port==60003,msgpack
我收到以下消息:
tshark: Protocol "msgpack" isn't valid for layer type "udp.port"
tshark: Valid protocols for layer type "udp.port" are:
支持的协议列表包含 msgpack:
tshark -G protocols | grep msgpack
Message Pack MsgPack msgpack
这里是 link 示例捕获文件:https://drive.google.com/file/d/1qZO-WKgTValghMjC4kM56B-M1FlYg5C2/view?usp=sharing
无法在最新的 3.07 tshark 和 Wireshark 中解码为 msgpack(即这看起来像是一个错误)。如果你觉得有德行,可以file one.
您仍然可以访问第 4 层之后的数据层。我们可以使用 shell 魔法来执行相当于使用您提供的文件解码该层的操作:
# Unix-like (Macos/Linux/BSD) systems ship with xxd.
# WSL on Windows will also have it.
bash$ tshark -r msgpack.pcap -T fields -e data | xxd -p -r | msgpack2json && echo
{"message_type":"complete_caching","generation":123992}
在这里,我们
- 使用 tshark 将数据字段打印为 ASCII hex
- 使用 xxd 将文本十六进制转换为二进制十六进制
- 使用 msgpack-tools 中的
msgpack2json
将二进制数据转换回 JSON。