Перейти к содержанию
    

Восстановить алгоритм контрольной суммы

Есть устройство, на вход которого поступают 9 байт данных. Устройство проверяет валидность CRC10(?) и бракует или не бракует пакет.

Биты СRC10(?) расположены в 0 байте, и в двух младших битах 1 байта.

К сожалению, не возможно сделать последовательность из всех нулей :( девайс анализирует 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, можно создать контрольную сумму ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какими еще функциями, кроме СRC, можно создать контрольную сумму ?

Много раз наблюдал обычную сумму по модулю X ...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К сожалению, здесь не обычная сумма :( Может быть они перед тем, как скормить байт процедуре CRC, ксорят его с константой ? тогда моя "бегущая по нулям единица" не выявит полином

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

попробуйте перебором

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

 

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

 

ну и по LSB/MSB нужно подумать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если код имеет отношение к СКУД, то можно посмотреть схемы кодирования карт EM-Marin в документах EM4006, EM4100

http://www.gaw.ru/html.cgi/txt/ic/em-marin/rfid/start.htm

Например, n-й бит контрольного байта может быть четностью всех n-х битов данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

@SFx

Не совсем понял Вас. Как построить последовательность?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

если это циклический код, то можно попробовать алгоритм Бэрлекампа-Мэсси.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@SFx

Не совсем понял Вас. Как построить последовательность?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

подсчет CRC состоит из:

(1) - разрядности ( 8 - 16 - 32 итд )

(2) - направления "сдвижки" регистра CRC ( со старших или младших бит байта - слова итд, в соответствии с (1)

(3) - начального значения CRC

(4) - округления последних байт до размера (1), или "неокругления" какой либо константой

(5) - собственно, полинома в соответствии с разрядностью (2)

---------------

Если есть образец-дам по входу, и его CRC неизвестного алгоритма - можно наваять-зарядить подборщик.

Но для достоверного подбора нужны не одна пара дамп-CRC а чем-больше-тем-лучше.

Думаю в области криптоаналитики есть что-то готовое.

 

 

К сожалению, здесь не обычная сумма :( Может быть они перед тем, как скормить байт процедуре CRC, ксорят его с константой ? тогда моя "бегущая по нулям единица" не выявит полином

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

И при приеме пакета, до просчета CRC пакет сначала "размусоривается", а потом уже считает CRC.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Dnepr33

Не понятно, каким образом они включили 6 бит длины вейганда из 2 байта последовательности в подсчет CRC ( .. Карточку я могу прочитать, не проверяя CRC. А вот сгенерировать новую карточку с заданным номером - невозможно.

ЗЫ Привет из Киева )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...