Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Опознать алгоритм CRC32
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
Grym
Можно ли как-то по потоку данных и известной CRC найти как эта CRC считается?

Вот например пара примеров:

0C 65 00 65 73 43 E8 E9 01 00 1B 21 F0 00 1B 21 F0 00 E7 03 E7 03 00 00 00 FF 00 00 00 00 00 00 02 00 82 00 01 90 01 12 00 00 00 00 00 00 00 00 - 28 07 03 2B

41 00 - 0F AB F8 78


Последние 4 цифры это и есть CRC.

Я проверял, это не CRC32 , менял стандартный полином на зеркальный, тоже не помогло.

Что интересно, в предыдщей версии протокола была стандартная двухбайтная CRC16, а здесь уже 4 байта, но это не CRC32.
Link
Если полином малораспространенный (т.е не Ethernet, CRC-32-MPEG2, CRC-16-CCITT....) то подбирать коэффициенты полинома можно очень долго.

А так в интернете есть много разных програм для подсчета CRC - они могут сильно облегчить поиск.


> а здесь уже 4 байта, но это не CRC32.

Почему ? CRC32 означает что длина CRC - 32 бита = 4 байта.
VslavX
Цитата(Link @ Feb 15 2007, 00:01) *
Если полином малораспространенный (т.е не Ethernet, CRC-32-MPEG2, CRC-16-CCITT....) то подбирать коэффициенты полинома можно очень долго.

А так в интернете есть много разных програм для подсчета CRC - они могут сильно облегчить поиск.


> а здесь уже 4 байта, но это не CRC32.

Почему ? CRC32 означает что длина CRC - 32 бита = 4 байта.

Вероятно можно попробовать так - получившиеся 4 байта CRC - это остаток от деления на полином. Вычитаем их полиномиально из исходной последовательности, а результат (должен делиться с нулевым остатком и не является неприводимым) раскладываем полиномиально на множители. Один из множителей или их комбинация и будет искомый полином на который делили для получения CRC.
nsemenoff
Цитата(Grym @ Feb 14 2007, 20:26) *
Можно ли как-то по потоку данных и известной CRC найти как эта CRC считается?


А вы уверены, что на этот протокол нет документации? smile.gif
Просто можно искать алгоритм методом подбора, а можно найти документацию, и сильно сократить время поиска smile.gif
arttab
Можно попробовать перебор всех известных полиномов32 для всего пакета. если подойдет, то результат будет равен 0.
DuHast
Обсуждалось тут
Макс_Мат
Цитата(VslavX @ Feb 15 2007, 08:48) *
Вероятно можно попробовать так - получившиеся 4 байта CRC - это остаток от деления на полином. Вычитаем их полиномиально из исходной последовательности, а результат (должен делиться с нулевым остатком и не является неприводимым) раскладываем полиномиально на множители. Один из множителей или их комбинация и будет искомый полином на который делили для получения CRC.


Правильно говорит человек. a14.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.