Предположим, что у меня есть пакеты с 16-разрядной контрольной суммой в конце. Я хотел бы угадать, какой алгоритм контрольной суммы используется.Как можно угадать алгоритм контрольной суммы?
Для начала из данных дампа я вижу, что изменение одного байта в полезной нагрузке пакета полностью меняет контрольную сумму, поэтому я могу предположить, что это не какой-то простой XOR или сумма.
Затем я попробовал several variations of CRC16, но без большой удачи.
Этот вопрос может быть более предвзятым по отношению к криптографии, но я действительно заинтересован в любых простых для понимания статистических инструментах, чтобы выяснить, какой CRC это может быть. Я мог бы даже обратиться к drawing different CRC algorithms, если все остальное не удастся.
История Backgroud: У меня есть серийный протокол RFID с какой-то контрольной суммой. Я могу воспроизводить сообщения без проблем и интерпретировать результаты (без проверки контрольной суммы), но я не могу отправлять измененные пакеты, потому что устройство бросает их на пол.
Используя существующее программное обеспечение, я могу изменить полезную нагрузку чипа RFID. Однако уникальный серийный номер неизменен, поэтому у меня нет возможности проверять все возможные комбинации. Хотя я мог бы генерировать дампы значений, увеличивающихся на единицу, но недостаточно, чтобы сделать исчерпывающий поиск применимым к этой проблеме.
dump files with data доступны, если сам по себе вопрос не хватает :-)
Нужна справочной документации?A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS отличная рекомендация, которую я нашел после того, как задал вопрос здесь.
В конце концов, после того, как очень полезный намек на принятый ответ, чем это CCITT, я used this CRC calculator, и операции XOR генерируется контрольная сумма с известной контрольной суммой, чтобы получить 0xffff, которые привели меня к выводу, что окончательное исключающее является 0xffff instread из CCITT-х 0x0000.
Вы можете получить контрольные суммы для любых данных, которые вы хотите? – 2008-09-29 16:59:12
Нет, не могу. Я могу изменить часть данных и генерировать контрольные суммы, используя существующее приложение, которое ведет переговоры с устройством, но это не полный пакет. – dpavlin 2008-09-29 17:14:04
Стандарт для CCITT указывает XOR с 0x0000? Разве это не всегда? – unwind 2008-10-20 08:12:18