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

Опознать контрольную сумму

Всем привет ... Уже несколько дней борюсь с crc  в прошивке есть области crc где нашел обычный стандарт crc 32 ... но есть одна область где никак не могу получить нужные значения. 

привожу пример с crc где она без проблем посчиталась ....
 a5 3c 96 00 14 ad 00 28 8a 38 49 71 a0 c6 07 00
00 00 ed ff 00 00 26 00 00 00 00 00 37 4a 52 31                -------       с байта (07 - .......03 00 00 00 )  - данные ,  62 b1 da 38 - CRC32
30 32 46 4b 37 4d 47 30 39 31 30 34 37 00 03 00
00 00 62 b1 da 38 15 15 bb bb bb bb bb bb bb bb

 

Ну а вот теперь с тем чем не могу разобраться 

a5 3c 96 00 18 2c 00 1c bf b7 60 14 cd c4 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00              ------ 60 14 cd c4    это контрольная сумма в пакете    данные скорее сразу после crc  и  без 4 байт нулевых до 15 15 
00 00 00 00 00 00 00 00 00 00 15 15 00 00 00 00
 

так же привожу пример пакета не нулевого 

a5 3c 96 00 18 2c 00 1c bf b7 7d 68 09 4b 07 01
01 02 03 02 02 02 01 01 02 03 01 02 02 01 03 01
01 02 02 ff ff 1f 00 00 00 00 15 15 00 00 00 00
 

a5 3c 96 00 18 2c 00 1c bf b7 c6 0c be 00 07 01
01 02 03 02 03 04 01 01 01 01 02 02 02 01 03 04
01 01 02 02 02 ff ff 7f 00 00 15 15 00 00 00 00
 

a5 3c 96 00 18 2c 00 1c bf b7 c1 d0 41 bf 07 01
01 02 03 02 02 02 01 01 02 03 01 02 02 01 03 01
01 01 02 02 ff ff 3f 00 00 00 15 15 00 00 00 00
 

Вот три пакета где точно знаем что перед байтом 07   - crc  4 байта !! каким образом посчитать так и не удалось !!Помогиле можно не бесплатно !!!
  

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


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

1. На этом сайте сколько-то (десять) лет назад обсуждался подобный вопрос с вариантами решения.

2. В сети есть сайты делающие расчет CRC для разных полиномов (калькуляторы). Начните с wiki, какие есть "стандартные" полиномы для различных протоколов, а также в каждом из них - режим-параметры расчета

3. Если нет 100-процентной уверенности, какой блок (последовательность байт) соотв-ет конкретной CRC в "образцах", то перспективы подбора-нахождения туманные.

4. Можете сами написать универсальную утилиту подсчета CRC с различными полиномами и исходными параметрами подсчета. Самый простой из них - стартовое значение регистра CRC, может быть как 0x0000, так и 0xFFFF. А может и любое из промежуточных значений.

и т д

Чтобы Вам помогли собственно "посчитать" - выкладывайте данные в виде массивов исходника С, и бинарник с указанием адресов/длин блоков и адресов CRC

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


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

@k155la3

Цитата

1. На этом сайте сколько-то (десять) лет назад обсуждался подобный вопрос с вариантами решения.

2. В сети есть сайты делающие расчет CRC для разных полиномов (калькуляторы). Начните с wiki, какие есть "стандартные" полиномы для различных протоколов, а также в каждом из них - режим-параметры расчета

3. Если нет 100-процентной уверенности, какой блок (последовательность байт) соотв-ет конкретной CRC в "образцах", то перспективы подбора-нахождения туманные.

4. Можете сами написать универсальную утилиту подсчета CRC с различными полиномами и исходными параметрами подсчета. Самый простой из них - стартовое значение регистра CRC, может быть как 0x0000, так и 0xFFFF. А может и любое из промежуточных значений.

и т д

Чтобы Вам помогли собственно "посчитать" - выкладывайте данные в виде массивов исходника С, и бинарник с указанием адресов/длин блоков и адресов CRC

1. Пробовал различные варианты расчета через калькуляторы CRC. Данные способы не эффективны. Собственно отсюда и назрел вопрос правильного определения и подбора расчёта контрольной суммы.

2. Как собрать правильно подбор и пересчёт с другим полиномом и подбором стартовых адресов - тут сложнее.

3. Во вложении 2 файла: "WHAT is CRC.bin" и READ ME.jpg

4. В *.bin собраны примеры областей. На картинке *.jpg есть пометки где и что находится. (Область - серый цвет, контрольная сумма - желтый, данные - синий.

5. Все примеры областей в bin и на картинке имеют одинаковое начало "A5 3C 96 00 18 2C 00 1C BF B7", после идёт контрольная сумма с неизвестным порядком расчёта (который и требуется узнать), далее идут данные для расчета,  и конец области "15 15 .. .. до конца оболасти".

Изложил повторно как мог. Прошу помочь.

 

READ ME .png

WHAT IS CRC_forum.bin

Изменено пользователем Andrei2018

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


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

CRC32 такое ?

 CRC-32-IEEE 802.3 	
 x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 +  * x^4 + x^2 + x + 1

или дайте ссылку на калькулятор в сети, которым считали "обычный стандарт crc 32".

Насколько понял, CRC считается правильно в этом пакете

привожу пример с crc где она без проблем посчиталась ....
-------       с байта (07 - .......03 00 00 00 )  - данные ,  62 b1 da 38 - CRC32

------ HEADER --------
a5 3c 96 00 14 ad 00 28 8a 38 49 71 a0 c6 
------ DATA ------
07 00 00 00 ed ff 00 00 26 00 00 00 00 00 37 4a 
52 31 30 32 46 4b 37 4d 47 30 39 31 30 34 37 00 
03 00 00 00 
----- CRC --------
62 b1 da 38 
------ etc -------
15 15 bb bb bb bb bb bb bb bb

Возможно Вам быстрее ответят, если разместите вопрос в разделе "Предлагаю работу".

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

В бинарном файле нарушений структуры не заметил

Спойлер

BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB
A5 3C 96 00 18 2C 00 1C BF B7
59 58 B7 05                             CRC
0A 01 01 02 02 02 02 02 01 01 02 02 01 02 02 01 03 03 01 01 03 02 FF FF 3F 00 00 00 15 15 00 00 00 00

BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB
A5 3C 96 00 18 2C 00 1C BF B7 
DC 6D C3 34 
0A 01 01 02 02 02 02 02 01 01 02 02 01 02 02 01 03 03 01 01 03 FF FF 1F 00 00 00 00 15 15 00 00 00 00

BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB
A5 3C 96 00 18 2C 00 1C BF B7 
1D E3 1C F4 
0A 01 01 02 02 02 02 02 01 01 02 02 01 02 02 01 03 02 01 01 03 FF FF 1F 00 00 00 00 15 15 00 00 00 00

BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB
A5 3C 96 00 18 2C 00 1C BF B7 
B3 69 77 83 
0A 01 01 02 02 02 02 02 01 01 02 02 01 02 02 01 03 03 01 01 02 03 02 FF FF 7F 00 00 15 15 00 00 00 00

BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB
A5 3C 96 00 18 2C 00 1C BF B7
5B 0B 4B 57 
0A 01 01 02 02 02 04 01 01 01 02 01 02 01 02 02 03 01 01 01 03 FF FF 1F 00 00 00 00 15 15 00 00 00 00

BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB
A5 3C 96 00 18 2C 00 1C BF B7 
AC 58 64 FC 
0B 01 01 02 02 02 04 01 01 01 02 01 02 01 02 02 03 02 01 01 02 03 02 FF FF 7F 00 00 15 15 00 00 00 00

BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB
A5 3C 96 00 18 2C 00 1C BF B7 
02 D2 0F 8B
0B 01 01 02 02 02 04 01 01 01 02 01 02 01 02 02 03 03 01 01 03 FF FF 1F 00 00 00 00 15 15 00 01 40 08

BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB
A5 3C 96 00 18 2C 00 1C BF B7
24 6C DB E7
0B 01 03 02 09 02 04 01 01 01 02 01 02 01 02 02 03 01 01 01 01 03 02 FF FF 7F 00 00 15 15 00 00 00 00

BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB
A5 3C 96 00 18 2C 00 1C BF B7
5D 51 44 56 
0D 01 01 02 02 02 02 02 01 01 02 02 01 02 02 01 03 03 01 01 03 02 FF FF 3F 00 00 00 15 15 00 00 00 00

BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB
A5 3C 96 00 18 2C 00 1C BF B7
BA 6D 9B DB 
07 01 01 02 03 02 03 04 01 01 01 01 02 02 01 01 03 04 01 01 02 02 02 FF FF 7F 00 00 15 15 00 00 00 00

BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB
A5 3C 96 00 18 2C 00 1C BF B7
5B A3 80 DA
07 02 03 02 0A 02 03 04 01 01 01 01 02 02 02 01 03 02


HDR =================== ======================= ========================== ======================== ===================
A5 3C 96 00 18 2C 00 1C BF B7
A5 3C 96 00 18 2C 00 1C BF B7 
A5 3C 96 00 18 2C 00 1C BF B7 
A5 3C 96 00 18 2C 00 1C BF B7 
A5 3C 96 00 18 2C 00 1C BF B7
A5 3C 96 00 18 2C 00 1C BF B7 
A5 3C 96 00 18 2C 00 1C BF B7 
A5 3C 96 00 18 2C 00 1C BF B7
A5 3C 96 00 18 2C 00 1C BF B7
A5 3C 96 00 18 2C 00 1C BF B7
A5 3C 96 00 18 2C 00 1C BF B7


DATA ============ ============ ================ ============= =============== =
0A 01 01 02 02 02 02 02 01 01 02 02 01 02 02 01 03 03 01 01 03 02 FF FF 3F 00 00 00 15 15 00 00 00 00
0A 01 01 02 02 02 02 02 01 01 02 02 01 02 02 01 03 03 01 01 03 FF FF 1F 00 00 00 00 15 15 00 00 00 00
0A 01 01 02 02 02 02 02 01 01 02 02 01 02 02 01 03 02 01 01 03 FF FF 1F 00 00 00 00 15 15 00 00 00 00
0A 01 01 02 02 02 02 02 01 01 02 02 01 02 02 01 03 03 01 01 02 03 02 FF FF 7F 00 00 15 15 00 00 00 00
0A 01 01 02 02 02 04 01 01 01 02 01 02 01 02 02 03 01 01 01 03 FF FF 1F 00 00 00 00 15 15 00 00 00 00
0B 01 01 02 02 02 04 01 01 01 02 01 02 01 02 02 03 02 01 01 02 03 02 FF FF 7F 00 00 15 15 00 00 00 00
0B 01 01 02 02 02 04 01 01 01 02 01 02 01 02 02 03 03 01 01 03 FF FF 1F 00 00 00 00 15 15 00 01 40 08
0B 01 03 02 09 02 04 01 01 01 02 01 02 01 02 02 03 01 01 01 01 03 02 FF FF 7F 00 00 15 15 00 00 00 00
0D 01 01 02 02 02 02 02 01 01 02 02 01 02 02 01 03 03 01 01 03 02 FF FF 3F 00 00 00 15 15 00 00 00 00
07 01 01 02 03 02 03 04 01 01 01 01 02 02 01 01 03 04 01 01 02 02 02 FF FF 7F 00 00 15 15 00 00 00 00
07 02 03 02 0A 02 03 04 01 01 01 01 02 02 02 01 03 02

 

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


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

8 часов назад, k155la3 сказал:

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

Ну как сказать... У меня бывало и несколько разных алгоритмов и полиномов, и несколько способов запихивания байтов в этот алгоритм. А все это либо от сопровождения или стыковки с техникой печального наследия, либо для того, чтоб ломать было тяжело:biggrin: В данном случае, если учесть, что струкутра пакета (в отличие от первого, где CRC посчиталась правильно) другая, делать выводы о маловероятности использования другого алгоритма, ИМХО, не имеет оснований.

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


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

@Arlleex

30 минут назад, Arlleex сказал:

Я вычислил за 0.00005с. Жду еще набор данных для подтверждения.

поработаем? как получить решение моей проблемы?
Вот еще набор (в прикрепленном файле). Могут быть дубли областей. Но на расчёт я думаю это никак не повлияет.

bin.bin

Изменено пользователем Andrei2018

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


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

было бы все так просто то не написали бы сюда !! стандартные полиномы не подошли походу !!

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


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

1 час назад, Andrei2018 сказал:

было бы все так просто то . . . .

Вот именно, что все "не просто", и даже очень не просто. При минимальном желании разработчика усложнить жизнь "какеру", достаточно при "стандартном", и даже известном "какеру" полиноме изменить стартовые значения для расчета CRC. Это не повлечет доп.затрат времени в алгоритме расчета, и можно использовать при работе с аппаратным "рассчетчиком" в микроконтроллере.

При чуть-большем желании "закрыть" данные или код, в качестве стартовых значений можно взять первые 2-4 байта данных, CRC которыех подсчитывается. При еще большем желании - из произвольного места данных изымаются произвольное кол-во байт, которые не будут участвовать в расчете CRC. Но "какер" об этом не знает и продолжает терять время своей жизни на закат солнца вручную подбор. И... Т.... Д ....

Даже если это простейшая псевдо-защита, которую я привел первой то вручную :dash2: это отловить нельзя (для CRC16 надо просчитать 65536 раз CRC пакета, а для CRC32 - сколько-то миллиардов раз). 

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


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

РЕбята базрить впустую все могут что и кто и как !!!!  сможете посчитать ??  или написать программу подбора полинома из имеющихся пакетов!!????

 

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


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

17 часов назад, k155la3 сказал:

CRC32 такое ?

 CRC-32-IEEE 802.3 	
 x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 +  * x^4 + x^2 + x + 1

или дайте ссылку на калькулятор в сети, которым считали "обычный стандарт crc 32".

Ответа не увидел.

47 минут назад, Andrei2018 сказал:

РЕбята базрить впустую все могут что и кто и как !!!!  сможете посчитать ??  или написать программу подбора полинома из имеющихся пакетов!!????

"базарить впустую" нет никакого интереса. Какой контроллер/процессор обрабатывает данные ? Если Вы намек поняли.

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


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

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

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

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

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

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

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

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

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

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