Реверс-инжиниринг CRC

У меня есть данные длиной около 750 байт, которые защищены CRC. Я хочу внести изменения в данные, но не зная схемы CRC, я не могу этого сделать. Но я могу позволить себе роскошь наблюдать за значением CRC для выборочных данных. Я использовал эту действительно классную математическую технику, описанную здесь

Я определила CRC как последние два байта блока данных, потому что, когда я изменяю только 1 бит данных и XOR его, результатом являются все нули, кроме этого бита и последних двух байтов.

Я был в состоянии генерировать C1, C2 для сообщений о различиях, как это:

byte 222 = 0x01; CRC = 0x6D10
byte 222 = 0x02; CRC = 0xEA6D
byte 222 = 0x04; CRC = 0xA494
byte 222 = 0x08; CRC = 0x3966

Поскольку сообщения являются "сообщениями о различиях", как описано в приведенной выше ссылке, мы можем безопасно игнорировать значения XorIn и XorOut CRC. Но параметры refleIn и ReflectOut все еще могут влиять на процесс. Для всех четырех комбинаций я проверил, равно ли (C2<<1) XOR C1 нулю, когда MSB C2 равен нулю. Но это не так. Интересно, где я ошибся.

0 ответов

Другие вопросы по тегам