Если вы можете получить файлы на ПК, это поможет.Вы можете xor любых двух файлов, чтобы получить файл, который имеет все нули, за исключением 4 разных байтов и 4 байтов CRC.Xor двух файлов также удалит любое начальное или конечное значение xor, как если бы начальное значение = 0, а конечное значение xor = 0. Затем проверьте файл с почти всеми нулями, чтобы увидеть, соответствует ли CRC тому, что вы ожидаете.Если он совпадает, то вы знаете, что CRC включает в себя 4 ненулевых байта и все последующие нулевые байты, но вы не знаете, как далеко до 4 ненулевых байтов, которые CRC включает в свой расчет, ноэто будет по крайней мере, начало.Если он совпадает, это уменьшило бы объем поиска того, что включено в вычисление CRC.
Предполагая, что часть, используемая для CRC, является смежной, вы можете выполнить поиск методом грубой силы, используя быстрый CRC32.На X86 с регистрами SSE2 (xmm) CRC32 на основе сборки может вычислять CRC32 для 700 000 байтов за 0,0002 секунды на процессоре Intel 3770K 3,5 ГГц 3-го поколения (теперь они быстрее) или чуть больше 70 секунд.чтобы попробовать длины от 8 до 700 000 байт.
Я преобразовал код из этого примера github в Visual Studio asm как для отраженного, так и неотраженного CRC, используя полиномы CRC32 и CRC32C, и я мог бы загрузить код, еслизаинтересован.
https://github.com/intel/isa-l/blob/master/crc/crc16_t10dif_01.asm