|
Нахождение полинома CRC, Нахождение полинома CRC |
|
|
|
Oct 11 2006, 10:21
|
Группа: Новичок
Сообщений: 14
Регистрация: 10-04-06
Пользователь №: 15 982

|
Господа! Нижайшая просьба. Есть последовательность данных (передаются сегментами по 6 (шесть) байт) и есть значения CRC для этих байт (сегментов). Необходимо узнать применяемый полином.
323333333331 hex 233331 ANSII 5E23 - CRC 323333333332 233332 FE76 323333333333 233333 2E5D 323333333334 233334 6EF4 323333333335 233335 BEDF 323333333336 233336 1E8A 323333333337 233337 CEA1
Данные сняты с рабочего устройства.
Буду признателен за любую помощь.
|
|
|
|
|
 |
Ответов
|
Oct 12 2006, 09:31
|
Группа: Новичок
Сообщений: 14
Регистрация: 10-04-06
Пользователь №: 15 982

|
Цитата(Epikur @ Oct 12 2006, 12:18)  Да, отправь посылку со всеми нулями. CRC посылки 000000000000hex снято 0003 hex
|
|
|
|
|
Oct 12 2006, 12:50
|
Группа: Новичок
Сообщений: 14
Регистрация: 10-04-06
Пользователь №: 15 982

|
Цитата(Fast @ Oct 12 2006, 15:27)  неплохо проверить на соответствие 2 основный полинома CRC-16 g(x)=x16 + x12 + x5 + 1, g(x)=x16 + x5 + x2 + 1. Данные полиномы (1021hex и 0023hex) были проверены в самом начале поиска. Это не они.
Сообщение отредактировал uk8adi - Oct 12 2006, 12:51
|
|
|
|
|
Oct 12 2006, 13:04
|
Местный
  
Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839

|
Цитата(uk8adi @ Oct 12 2006, 16:50)  Данные полиномы (1021hex и 0023hex) были проверены в самом начале поиска. Это не они. А как Вы проверяли, простым делением на порождающий? Инвертировали ли первые 2 байта перед делением согласно рекомендации V.42 (ну мало ли..) и результат деления? кстати, D02B полинома не существует в природе список неприводимых многочленов степени 16 имеется, только я его найти не могу, видел в какой-то книжке знаю, что их можно получить в Матлабе
|
|
|
|
|
Oct 12 2006, 13:14
|
Группа: Новичок
Сообщений: 14
Регистрация: 10-04-06
Пользователь №: 15 982

|
Цитата(Fast @ Oct 12 2006, 18:04)  Цитата(uk8adi @ Oct 12 2006, 16:50)  Данные полиномы (1021hex и 0023hex) были проверены в самом начале поиска. Это не они. А как Вы проверяли, простым делением на порождающий? Инвертировали ли первые 2 байта перед делением согласно рекомендации V.42 (ну мало ли..) и результат деления? кстати, D02B полинома не существует в природе список неприводимых многочленов степени 16 имеется, только я его найти не могу, видел в какой-то книжке знаю, что их можно получить в Матлабе Все далалось по данной рекомендации (CCITT V.24). Причем считалось, как вручную на бумаге, так и программой "Hex Workshop v4.23". У нее есть функция подсчета CRC, как со стандартными полиномами, так и с пользовательскими, задаваемыми вручную. Кто знает разработчиков того устройства, они могли применить и нестандартный полином, и может быть что-нибудь еще.
|
|
|
|
|
Oct 12 2006, 14:24
|
Местный
  
Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839

|
Цитата(uk8adi @ Oct 12 2006, 17:14)  Кто знает разработчиков того устройства, они могли применить и нестандартный полином, и может быть что-нибудь еще. Ну могу предложить следующее - вырубить все топором принять 48 последовательностей и CRCi к ним (i = 1...48) 100000000000hex 200000000000hex 400000000000hex 800000000000hex 010000000000hex ... ... ... ... ... 000000000001hex т.е. с единичкой в каждом разряде отнять от каждого CRCi CRC0 (crc для нулевого КС) CRC любой кодовой последовательности(кодового слова = КС) будет равно сумме частных СRСi, соответствующих каждому ненулевому биту КС
|
|
|
|
|
Oct 13 2006, 05:47
|
Группа: Новичок
Сообщений: 14
Регистрация: 10-04-06
Пользователь №: 15 982

|
Доброе утро. По поводу единичек в каждом разряде. До устройства пока не добрался, но проверил на стандартном полиноме CRC16CCITT 1021hex. Вот данные:
двоичные данные.......HEX.......CRC..............Разность: (2 байта)................................p1021.......XOR.....алгебраическая
0000000000000000......0000......1D0F 0000000000000001......0001......0D2E......1021......0FE1 0000000000000010......0002......3D4D......2042......DFC2 0000000000000100......0004......5D8B......3063......BF84 0000000000001000......0008......9C07......8108......8108 0000000000010000......0010......0F3E......1231......0DD1 0000000000100000......0020......396D......2462......E3A2 0000000001000000......0040......55CB......48C4......C744 0000000010000000......0080......8C87......9188......9088 0000000100000000......0100......2E3E......3331......EED1 0000001000000000......0200......7B6D......6662......A1A2 0000010000000000......0400......D1CB......CCC4......4B44 0000100000000000......0800......94A6......89A9......8869 0001000000000000......1000......1E7C......0373......FE93 0010000000000000......2000......1BE9......06E6......0126 0100000000000000......4000......10C3......0DCC......0C4C 1000000000000000......8000......0697......1B98......1678
Как я правильно понял, CRC для данных 0003hex будет сумма разностей для нулевого и первого бита.
Правильное CRC, расчитанное программой для данных 0003hex будет 2D6Chex. По варианту, предложенному Вами, CRC будет 3063hex, при сложении XOR, и EFA3hex при алгебраическом.
Извеняюсь за первое сообщение, не проследил за табуляцией.
Сообщение отредактировал uk8adi - Oct 13 2006, 06:14
|
|
|
|
|
Oct 13 2006, 09:06
|
Местный
  
Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839

|
uk8adi, Неверно 1. я говорил, что от всех частных CRCi надо было отнять CRC0, конечно по модулю тут я что-то уже запутался, т.к. было это дело давно, но что надо от чего-то отнять CRC0, помню точно наверное, от конечного результата 2. Пусть  - сложение по модулю  - вычитание по модулю CRC для данных 0003hex будет равно CRC1  CRC2  CRC0 или 0D2E  3D4D  1D0F = 2D6C 3. чтобы найти правильный полином, надо для каждого полинома CRC-16 (и все-таки найти их все) получить XOR -разницу с нашими частными CRCi если это будет величина постоянная, то полином мы угадали останется только найти предустановку регистра
|
|
|
|
|
Oct 13 2006, 09:42
|
Группа: Новичок
Сообщений: 14
Регистрация: 10-04-06
Пользователь №: 15 982

|
Цитата(Fast @ Oct 13 2006, 14:06)  2. Пусть  - сложение по модулю  - вычитание по модулю CRC для данных 0003hex будет равно CRC1  CRC2  CRC0 или 0D2E  3D4D  1D0F = 2D6C Работает! Проверил на стандартном полиноме. Сейчас пойду к железке и наработаю таблицу. Сообщу о результатах.
|
|
|
|
|
Oct 13 2006, 12:25
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(uk8adi @ Oct 13 2006, 12:42)  Цитата(Fast @ Oct 13 2006, 14:06)  2. Пусть  - сложение по модулю  - вычитание по модулю CRC для данных 0003hex будет равно CRC1  CRC2  CRC0 или 0D2E  3D4D  1D0F = 2D6C Работает! Проверил на стандартном полиноме. Сейчас пойду к железке и наработаю таблицу. Сообщу о результатах. Если не получится попробуйте еще полином 0x8408 (CRC-XMODEM) вкупе со сдвигом в другую сторону
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
Сообщений в этой теме
uk8adi Нахождение полинома CRC Oct 11 2006, 10:21 DuHast Цитата(uk8adi @ Oct 11 2006, 14:21) Госпо... Oct 11 2006, 12:01 DuHast Дополню:
Последняя строка матрицы и будет порождаю... Oct 11 2006, 13:51 uk8adi Как я правильно понял Вас, порождающий полином рав... Oct 12 2006, 06:57 DuHast Цитата(uk8adi @ Oct 12 2006, 10:57) Как я... Oct 12 2006, 19:00  DuHast ю. Oct 12 2006, 19:28      Сергей Борщ Цитата(uk8adi @ Oct 12 2006, 16:14) Кто з... Oct 12 2006, 13:37       uk8adi Цитата(Сергей Борщ @ Oct 12 2006, 18:37) ... Oct 13 2006, 06:39           uk8adi Что и куда двигаем. Не понятно. Пожалуйста, поподр... Oct 16 2006, 12:27            Сергей Борщ Цитата(uk8adi @ Oct 16 2006, 15:27) Что и... Oct 16 2006, 14:36 Epikur Цитата(uk8adi @ Oct 12 2006, 12:31) Цитат... Oct 12 2006, 21:45 uk8adi Цитата(Epikur @ Oct 13 2006, 02:45) Попро... Oct 13 2006, 06:51 Epikur >> Подсчитано с полиномом D027 и стартовым з... Oct 13 2006, 07:17 uk8adi Господа!
Сделал эту таблицу, с одной единичкой... Oct 17 2006, 11:08 Fast Цитата(uk8adi @ Oct 17 2006, 15:08) Но ка... Oct 17 2006, 15:14  DuHast Цитата(Fast @ Oct 17 2006, 19:14) Цитата(... Oct 17 2006, 18:09   Fast Цитата(DuHast @ Oct 17 2006, 22:09) Колег... Oct 18 2006, 08:25    DuHast Цитата(Fast @ Oct 18 2006, 12:25) часто д... Oct 18 2006, 18:44     Fast Цитата(DuHast @ Oct 18 2006, 22:44) А вот... Oct 19 2006, 10:14      DuHast Цитата(Fast @ Oct 19 2006, 14:14) это я п... Oct 19 2006, 18:34 uk8adi Добрый день.
Снятая и частично вычисленная таблиц... Oct 19 2006, 06:32 uk8adi "Может лучше про реактор, про любимый лунный ... Oct 20 2006, 11:35 3.14 Имею 5 байт и контрольную сумму:
0x20 0x00 0x00 0x... Oct 31 2006, 12:39 DuHast Цитата(3.14 @ Oct 31 2006, 16:39) Имею 5 ... Oct 31 2006, 19:14
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|