Я много работаю с последовательной связью с различными устройствами, и поэтому мне часто приходится анализировать шестнадцатеричные дампы в файлах журналов. В настоящее время я делаю это вручную, просматривая дампы, просматривая спецификации протокола и записывая результаты. Однако это утомительно и подвержено ошибкам, особенно когда сообщения содержат сотни байтов и содержат смеси данных с прямым и прямым порядком байтов, 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 выглядят многообещающе; Я посмотрю на них и, возможно, присужду награду тому, кто мне больше подходит. Но я все еще открыт для других идей.