Если этот тип вопросов не разрешен или не подходит, я приношу свои извинения и в таком случае удалите мой вопрос.
Я пытаюсь реконструировать протокол между двумя встроенными устройствами. Они отправляют многоадресные UDP-пакеты.
Часть полезной нагрузки в UDP-пакете выглядит так:
00000000: 00 00 00 01 5d 28 52 c5 26 30 30 3a 30 32 3a 39 |....](R.&00:02:9|
00000010: 42 3a 39 33 3a 34 41 3a 38 34 26 31 32 39 26 31 |B:93:4A:84&129&1|
Я обнаружил, что часть полезной нагрузки состоит из
- Первые 4 двоичных байта всегда: 00 00 00 01
- Следующие 4 двоичных байта представляют собой какой-то тип hash / crc32 (я полагаю) [выше: 5d 28 52 c5]
- Следующие 1 + 17 байтов в виде обычного текста представляют собой MAC-адрес [выше: & 00: 02: 9B: 93: 4A: 84]
- Следующие 1 + 3 байта в виде обычного текста представляют собой команду со значением 128–136 [выше: & 129]
- Следующие 1+ (1-3) байта в обычном тексте представляют собой порядковый номер от 0 до 254 [выше: & 1]
MAC-адрес может быть либо всегда постоянным адресом, как указано выше (являющимся MAC-адресом принимающего устройства многоадресных UDP-пакетов), либо & FF: FF: FF: FF: FF: FF, используемым как широковещательный, когда принимающее устройство неизвестно.
Другой пример с широковещательным MAC-адресом (и другим значением команды) выглядит так:
00000000: 00 00 00 01 95 46 84 1e 26 46 46 3a 46 46 3a 46 |.....F..&FF:FF:F|
00000010: 46 3a 46 46 3a 46 46 3a 46 46 26 31 32 38 26 31 |F:FF:FF:FF&128&1|
Здесь хэш / crc: 95 46 84 1e
Комбинация одного и того же MAC-адреса, одного и того же значения команды и одного и того же порядкового номера повторяется в разных UDP-пакетах с некоторым интервалом времени и всегда будет давать один и тот же хэш / crc. Итак, я предполагаю, что хэш / crc каким-то образом зависит только от значения MAC-адреса, значения команды и порядкового номера.
Я пробовал бесплатный калькулятор хешей / crc для Windows под названием HashCalc от Slavesoft, но не могу получить тот же хэш / crc, даже удаляя любые комбинации амперсанда и двоеточия.
Я также попробовал алгоритм хеширования под названием djb2, найденный здесь и здесь.
Но я не могу понять алгоритм hash / crc, и поэтому мне нужна помощь от кого-то более осведомленного. Мне нужна помощь, чтобы сначала найти алгоритм вычисления 4-байтового хэша / CRC на основе MAC-адреса, команды и порядкового номера.
Во-вторых, когда алгоритм найден, мне также понадобится реализация, желательно на Python.
Любая помощь была бы очень признательна, также если бы вы могли просто указать мне в правильном направлении, где искать и узнавать больше.
У меня также есть небольшой файл (19 КБ) с гораздо большим количеством примеров, но я не знаю, как его прикрепить и нужно ли.
Я был бы очень признателен за любую помощь, которую могу получить.