2008-11-18 2 views
5

Кто-нибудь знает, как вычислить алгоритм CRC, если задан заданный код + строка CRC?Как я могу догадаться о алгоритме контрольной суммы?

У меня есть несколько строк, состоящих из CRC с кодом + соответствия, но не знаю, как вычислить CRC, о котором идет речь, чтобы я мог создавать больше строк кода. Вот некоторые образцы (16bit код + 4bit CRC):

 
0010101000011101 + 0000 
0010101000011111 + 0001 
1000110011101101 + 0001 
0000000000000100 + 0010 
0011100011001110 + 0011 
1000110011101110 + 0100 
0001011110101100 + 0100 
0010101000011110 + 0101 
0011100011001101 + 0110 
0001011110101111 + 0111 
0011100011001100 + 1001 
0011100011001111 + 1010 
0001011110101101 + 1011 
0000000000001000 + 1011 
0000111100001101 + 1100 
0000000000001100 + 1100 
1111111111111111 + 1101 
1000110011101111 + 1101 
1000110011101100 + 1110 
0001011110101110 + 1110 
1111111100001101 + 1110 
0010101000011100 + 1111 

Эти коды поступают из РФ (433MHz) отправителя, как продукты Х10.

Я не уверен, что это CRC или что это такое, но, по крайней мере, он каким-то образом вычислен из этих кодовых строк.

Может ли кто-нибудь помочь?

Обновления:

RE: найти спецификации я также думаю, будет лучшим решением, но так как это не вариант мне нужно перебирает вычисление контрольной суммы каким-то образом.

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

+0

Связанный: http://stackoverflow.com/questions/283556/tricky-crc-algorithm – 2008-11-18 13:06:22

+0

Объясните, что такое отправитель RF и материал X10. Возможно, это связано с http://www.x10.com/minisites/videosender/rf_systems_pro_3250_wireless_video_sender.html. В этом случае вы, Том, должны были объяснить нам, что вы после. Нам не нужно было догадываться, что вам нужно! – 2008-11-18 14:25:24

ответ

3

Угадайте, это самое правильное слово. Если это радиочастотное устройство не является запатентованным, попробуйте прочитать спецификации ! Это было бы самым простым способом.

Угадать все возможные CRC (или алгоритмы Хеширования) не выглядит слишком оптимистичным. Просто взгляните here.

Третья возможность заключается в обратном проектировании кода, который вы используете для создания контрольных сумм.

удачи :)

0

Есть слишком много CRC возможностей алгоритма эффективно догадывается. Вы можете использовать простой подход, который находит спецификацию для вашего устройства. Или вы можете использовать метод грубой силы, который вычисляет CRC для каждого возможного ввода и создает алгоритм, который генерирует тот же результат.

0

Вы можете попробовать несколько распространенных методов CRC и надеяться на удачу, но ответ Mana (поиск спецификаций) был бы лучшим выбором.

5

Что заставляет вас думать, что это CRC? Обычно CRC не используются для таких небольших фрагментов данных.

Для меня это скорее похоже на какой-то паритет, ECC (фактически FEC) или Reed-Solomon. Может быть Hamming Code - Хэмминг широко используется в промышленности, в телекоммуникациях.

0

Весь смысл в хорошем алгоритме контрольной суммы состоит в том, что он не имеет что-то общее с входным текстом. Вы можете изменить один символ на входе. и весь вывод контрольной суммы изменится. Таким образом, единственный способ пойти другим путем - это, да, догадаться. Если вы знаете, что такое строка ввода и вывода, вы можете попробовать несколько общих алгоритмов контрольной суммы и посмотреть, дает ли какой-либо из них правильный выход. Кроме этого, нет, это невозможно.

В качестве альтернативы, как другие предположили, это может быть не контрольная сумма, а какой-то код исправления ошибок/избыточности, и это может быть проще определить.

0

Возможно, это не CRC, но все же я не могу найти алгоритм исправления ошибок/избыточности.

0

Судя по длине строк в сравнении с длиной контрольной суммы, я бы сказал, что это простая контрольная сумма с 1 ошибкой. Его, вероятно, один из простых, использующих расстояния для хамминга. Я не могу вспомнить, как это работает, и у меня нет учебников теории информации/линейных алгебр.

2
['0010101000011101', '0000', '0'] ['0010101000011110', '0101', '5'] [1, 3] 
['1000110011101101', '0001', '1'] ['1000110011101110', '0100', '4'] [1, 3] 
['0000000000000100', '0010', '2'] ['0000000000001000', '1011', 'b'] [0, 3] 
['0011100011001110', '0011', '3'] ['0011100011001101', '0110', '6'] [1, 3] 
['0001011110101100', '0100', '4'] ['0001011110101111', '0111', '7'] [2, 3] 
['0011100011001100', '1001', '9'] ['0011100011001111', '1010', 'a'] [2, 3] 
['0001011110101101', '1011', 'b'] ['0001011110101110', '1110', 'e'] [1, 3] 
['1000110011101111', '1101', 'd'] ['1000110011101100', '1110', 'e'] [2, 3] 

результаты дифференциального «анализа», это не выглядит как КРК, ссылки: http://www.cosc.canterbury.ac.nz/greg.ewing/essays/CRC-Reverse-Engineering.html

Я сомневаюсь, что он кривляется код или, как 4 бита четности позволяют только биты 11 данных, а не 16.

Смежные вопросы