Давайте предположим, что у меня есть несколько пакетов с 16-битной контрольной суммой в конце. Я хотел бы угадать, какой алгоритм контрольной суммы используется.
Для начала, из данных дампа я вижу, что одно байтовое изменение в полезной нагрузке пакета полностью меняет контрольную сумму, поэтому я могу предположить, что это не какой-то простой XOR или сумма.
Затем я попробовал несколько вариантов CRC16 , но без особой удачи.
Этот вопрос может быть более склонен к криптографии, но я действительно заинтересован в любых простых для понимания статистических инструментах, чтобы выяснить, какой CRC это может быть. Я мог бы даже обратиться к рисованию различных алгоритмов CRC , если все остальное терпит неудачу.
История Backgroud: у меня есть серийный протокол RFID с некоторой контрольной суммой. Я могу без проблем воспроизводить сообщения и интерпретировать результаты (без проверки контрольной суммы), но не могу отправлять измененные пакеты, потому что устройство отбрасывает их на пол.
Используя существующее программное обеспечение, я могу изменить полезную нагрузку чипа RFID. Тем не менее, уникальный серийный номер является неизменным, поэтому у меня нет возможности проверить каждую возможную комбинацию. Несмотря на то, что я мог генерировать дампы значений, увеличивающихся на единицу, но этого недостаточно, чтобы сделать исчерпывающий поиск применимым к этой проблеме.
файлы дампа с данными доступны, если сам вопрос не достаточен: -)
Нужна справочная документация? РУКОВОДСТВО ПО БЕЗ БЕЗОПАСНОСТИ К АЛГОРИТМАМ ОБНАРУЖЕНИЯ ОШИБОК CRC - отличная ссылка, которую я нашел после того, как задал вопрос здесь.
В конце концов, после очень полезной подсказки в принятом ответе, чем это CCITT, я
использовал этот калькулятор CRC и сгенерировал контрольную сумму xored с известной контрольной суммой, чтобы получить 0xffff, что привело меня к выводу, что окончательное значение xor равно 0xffff в виде экземпляра CCITT 0x0000.