我经常与各种设备进行串行通信,因此我经常需要分析日志文件中的十六进制转储。目前,我通过查看转储、查看协议规范并写下结果来手动执行此操作。然而,这是乏味且容易出错的,尤其是当消息包含数百个字节并且包含大端和小端数据、ASCII、Unicode、压缩、CRC、. . . .
我编写了一些 Python 脚本来帮助处理更常见的情况。但是有很多协议要处理,花时间编写自定义脚本是没有意义的,除非我知道我会有很多转储要分析。
我想要的是某种可以自动执行此活动的实用程序。因此,例如,如果我有这样的文本十六进制转储:
7e ff 00 7b 00 13 86 04
00 41 42 43 44 56 ef 7e
以及消息格式的某种描述,如下所示:
# Field Size Byte Order Output Format
Flag 1 hex
Address 1 hex
Control 1 hex
DataType 1 decimal
LineIndex 1 decimal
PollAddress 2 msb hex
DataSize 2 lsb decimal
Data (DataSize) ascii
CRC 2 lsb hex
Flag 1 hex
我会得到这样的输出:
Flag 0x7e
Address 0xff
Control 0x00
DataType 123
LineIndex 0
PollAddress 0x1386
DataSize 4
Data "ABCD"
CRC 0xef56
Flag 0x7e
基于硬件的协议分析器通常具有执行此类操作的精美功能,但我需要使用文本日志文件。
是否存在任何此类实用程序或库?
自从我设置赏金以来,已经出现了一些好的答案。我猜赏金工作!
Wireshark 和 HexEdit 看起来都很有前途;我会看看那些,并且可能会将赏金奖励给适合我需要的人。但我仍然对其他想法持开放态度。