реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Восстановить алгоритм контрольной суммы
Santinel
сообщение May 1 2014, 13:12
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 29-11-12
Пользователь №: 74 613



Есть устройство, на вход которого поступают 9 байт данных. Устройство проверяет валидность CRC10(?) и бракует или не бракует пакет.
Биты СRC10(?) расположены в 0 байте, и в двух младших битах 1 байта.
К сожалению, не возможно сделать последовательность из всех нулей sad.gif девайс анализирует 6 старших бит байта 1.
Диапазон 0х50(010100хх) .. 0хА0(101000хх)
И байты 2,3 должны быть равны 0х01 и 0х00. Иначе пакет тоже бракуется
Методом подбора я сгенерил небольшую табличку
0 1 2 3 4 5 6 7 8
92-6B-01-00-00-00-00-00-00
B6-6B-01-00-00-00-00-00-01
DA-6B-01-00-00-00-00-00-02
02-6B-01-00-00-00-00-00-04
B2-6A-01-00-00-00-00-00-08
D2-69-01-00-00-00-00-00-10
12-6B-01-00-00-00-00-00-20
92-6A-01-00-00-00-00-00-40
92-69-01-00-00-00-00-00-80
82-6A-01-00-00-00-00-01-00
B2-69-01-00-00-00-00-02-00
D2-6B-01-00-00-00-00-04-00
13-6A-01-00-00-00-00-08-00
90-6A-01-00-00-00-00-10-00
92-69-01-00-00-00-00-20-00
Читаем документ, раздел "Putting Theory into Practice"
http://www.cosc.canterbury.ac.nz/greg.ewin...ngineering.html
Получается, что соседние СRC (со сдвигом) должны отличаться либо на полином, либо быть равны.
В моем случае такого не наблюдается
Какими еще функциями, кроме СRC, можно создать контрольную сумму ?
Go to the top of the page
 
+Quote Post
kovigor
сообщение May 1 2014, 21:20
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Santinel @ May 1 2014, 16:12) *
Какими еще функциями, кроме СRC, можно создать контрольную сумму ?

Много раз наблюдал обычную сумму по модулю X ...
Go to the top of the page
 
+Quote Post
Santinel
сообщение May 2 2014, 12:47
Сообщение #3





Группа: Участник
Сообщений: 13
Регистрация: 29-11-12
Пользователь №: 74 613



К сожалению, здесь не обычная сумма sad.gif Может быть они перед тем, как скормить байт процедуре CRC, ксорят его с константой ? тогда моя "бегущая по нулям единица" не выявит полином
Go to the top of the page
 
+Quote Post
SFx
сообщение May 4 2014, 22:04
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 758
Регистрация: 11-07-05
Из: Понаехал (Мск)
Пользователь №: 6 688



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

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

ну и по LSB/MSB нужно подумать.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 5 2014, 08:16
Сообщение #5


Гуру
******

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



Еще возможно, что один из крайних битов - бит четности, а CRC имеет на 1 бит меньше.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Santinel
сообщение May 5 2014, 10:31
Сообщение #6





Группа: Участник
Сообщений: 13
Регистрация: 29-11-12
Пользователь №: 74 613



@Сергей Борщ: Спасибо за идею ) как-то не подумал об этом. Однако, похоже ни один из битов контролем четности не является (

CRC 0..7 Wieg26 89 Const 0x0100 Wiegand bit 1-26 Wieg bit 27-40 CRC 0..7 & 8..9
10010010 011010 11 0000000100000000 00000000000000000000000000 00000000000000 92-3
10110110 011010 11 0000000100000000 00000000000000000000000000 00000000000001 B6-3
11011010 011010 11 0000000100000000 00000000000000000000000000 00000000000010 DA-3
00000010 011010 11 0000000100000000 00000000000000000000000000 00000000000100 02-3
10110010 011010 10 0000000100000000 00000000000000000000000000 00000000001000 B2-2
11011010 011010 01 0000000100000000 00000000000000000000000000 00000000010000 D2-1
00010010 011010 11 0000000100000000 00000000000000000000000000 00000000100000 12-3
10010010 011010 10 0000000100000000 00000000000000000000000000 00000001000000 92-2
10010010 011010 01 0000000100000000 00000000000000000000000000 00000010000000 92-1
10000010 011010 10 0000000100000000 00000000000000000000000000 00000100000000 82-2
10110010 011010 01 0000000100000000 00000000000000000000000000 00001000000000 B2-1
11010010 011010 11 0000000100000000 00000000000000000000000000 00010000000000 D2-3
00010011 011010 10 0000000100000000 00000000000000000000000000 00100000000000 13-2
10010000 011010 10 0000000100000000 00000000000000000000000000 01000000000000 90-2
10010010 011010 01 0000000100000000 00000000000000000000000000 10000000000000 92-1
10010011 011010 11 0000000100000000 00000000000000000000000001 00000000000000 93-3
10010000 011010 11 0000000100000000 00000000000000000000000010 00000000000000 90-3
11010001 011010 01 0000000100000000 00000000000000000000000100 00000000000000 B1-1
00010010 011010 10 0000000100000000 00000000000000000000001000 00000000000000 12-2
10010010 011010 10 0000000100000000 00000000000000000000010000 00000000000000 92-2
10110110 011010 01 0000000100000000 00000000000000000000100000 00000000000000 B6-1
11011011 011010 11 0000000100000000 00000000000000000001000000 00000000000000 DB-3
10010000 011010 11 0000000100000000 00000000000000000010000000 00000000000000 90-3
10110110 011010 11 0000000100000000 00000000000000000100000000 00000000000000 B6-3
11011010 011010 11 0000000100000000 00000000000000001000000000 00000000000000 DA-3
11111100 011010 10 0000000100000000 00000000000000010000000000 00000000000000 FC-2
10010010 011010 01 0000000100000000 00000000000000100000000000 00000000000000 92-1
10010011 011010 11 0000000100000000 00000000000001000000000000 00000000000000 93-3
10000000 011010 10 0000000100000000 00000000000010000000000000 00000000000000 80-2
11010110 011010 01 0000000100000000 00000000000100000000000000 00000000000000 D6-1
11011010 011010 11 0000000100000000 00000000001000000000000000 00000000000000 DA-3
10000010 011010 10 0000000100000000 00000000010000000000000000 00000000000000 82-2
10110010 011010 01 0000000100000000 00000000100000000000000000 00000000000000 B2-1
11011011 011010 11 0000000100000000 00000001000000000000000000 00000000000000 DB-3
10010000 011010 11 0000000100000000 00000010000000000000000000 00000000000000 90-3
10110110 011010 11 0000000100000000 00000100000000000000000000 00000000000000 B6-3
10011001 011010 01 0000000100000000 00001000000000000000000000 00000000000000 99-1
00000010 011010 10 0000000100000000 00010000000000000000000000 00000000000000 02-2
10110010 011010 01 0000000100000000 00100000000000000000000000 00000000000000 B2-1
11010001 011010 01 0000000100000000 01000000000000000000000000 00000000000000 D1-1
00010010 011010 10 0000000100000000 10000000000000000000000000 00000000000000 12-2
Go to the top of the page
 
+Quote Post
adnega
сообщение May 5 2014, 18:40
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Если код имеет отношение к СКУД, то можно посмотреть схемы кодирования карт EM-Marin в документах EM4006, EM4100
http://www.gaw.ru/html.cgi/txt/ic/em-marin/rfid/start.htm
Например, n-й бит контрольного байта может быть четностью всех n-х битов данных.
Go to the top of the page
 
+Quote Post
Santinel
сообщение May 5 2014, 20:21
Сообщение #8





Группа: Участник
Сообщений: 13
Регистрация: 29-11-12
Пользователь №: 74 613



да, имеет прямое отношение к СКУД) только это не ЕМ-Маринsad.gif это карточка ТЕМИК 5557, на которую записан код

@SFx
Не совсем понял Вас. Как построить последовательность?
Go to the top of the page
 
+Quote Post
barabek
сообщение May 5 2014, 23:54
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(Santinel @ May 6 2014, 06:21) *
да, имеет прямое отношение к СКУД) только это не ЕМ-Маринsad.gif это карточка ТЕМИК 5557, на которую записан код

если это циклический код, то можно попробовать алгоритм Бэрлекампа-Мэсси.
Go to the top of the page
 
+Quote Post
SFx
сообщение May 12 2014, 21:18
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 758
Регистрация: 11-07-05
Из: Понаехал (Мск)
Пользователь №: 6 688



Цитата(Santinel @ May 6 2014, 00:21) *
@SFx
Не совсем понял Вас. Как построить последовательность?

ну вы меняете последний бит у пакета, а попробуйте первый поменять, что в общем то вы уже и сделали. дальше чисто анализ.
Go to the top of the page
 
+Quote Post
Dnepr33
сообщение Jun 5 2014, 07:47
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 1-02-11
Из: Днепропетровск
Пользователь №: 62 622



подсчет CRC состоит из:
(1) - разрядности ( 8 - 16 - 32 итд )
(2) - направления "сдвижки" регистра CRC ( со старших или младших бит байта - слова итд, в соответствии с (1)
(3) - начального значения CRC
(4) - округления последних байт до размера (1), или "неокругления" какой либо константой
(5) - собственно, полинома в соответствии с разрядностью (2)
---------------
Если есть образец-дам по входу, и его CRC неизвестного алгоритма - можно наваять-зарядить подборщик.
Но для достоверного подбора нужны не одна пара дамп-CRC а чем-больше-тем-лучше.
Думаю в области криптоаналитики есть что-то готовое.


Цитата(Santinel @ May 2 2014, 18:57) *
К сожалению, здесь не обычная сумма sad.gif Может быть они перед тем, как скормить байт процедуре CRC, ксорят его с константой ? тогда моя "бегущая по нулям единица" не выявит полином

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

Go to the top of the page
 
+Quote Post
Santinel
сообщение Jun 13 2014, 14:16
Сообщение #12





Группа: Участник
Сообщений: 13
Регистрация: 29-11-12
Пользователь №: 74 613



@Dnepr33
Не понятно, каким образом они включили 6 бит длины вейганда из 2 байта последовательности в подсчет CRC ( .. Карточку я могу прочитать, не проверяя CRC. А вот сгенерировать новую карточку с заданным номером - невозможно.
ЗЫ Привет из Киева )
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 19:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01453 секунд с 7
ELECTRONIX ©2004-2016