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