Контрольная сумма

Arduino85
Offline
Зарегистрирован: 31.10.2016

Всем привет,

Кто может подсказать как считается контрольная сумма? Приходят вот такая команды где 05 это длинна пакета а F5, 31 и 00 это контрольная сумма

A5 5A 05 C0 62 F5 AE

A5 5A 05 C0 1E 31 AE

A5 5A 05 CC 01 00 AE

 

Arduino85
Offline
Зарегистрирован: 31.10.2016

За помошь закину баланс на тел. :)

Green
Offline
Зарегистрирован: 01.10.2015

Берите калькулятор и считайте сами. На сколько хватит фантазии.))

Arduino85
Offline
Зарегистрирован: 31.10.2016

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

Гриша
Offline
Зарегистрирован: 27.04.2014
Arduino85
Offline
Зарегистрирован: 31.10.2016

Поймал вот такие два пакета у которых у обоих Контрольная сумма равна 00:

A5 5A 05 CC 01 00 AE

A5 5A 0F C1 02 00 AE

Если суммировать 05+СС+01=D2 также 0F+C1+02=D2 но не как не 00

Прогнал по всем стандартным CRC  на сайте http://crccalc.com/ без результатно. Пересобрал и прогнал те примеры которые отправил Гриша тоже не работает.

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Значит один пакет битый или 00 - не контрольная сумма.

kalapanga
Offline
Зарегистрирован: 23.10.2016

У Вас вообще непонятно контрольную сумму чего считать. В исходном сообщении Вы утверждали, что третье число 05 это длина пакета. Какие пять байт из Ваших шести "пакет"? А теперь там уже не 05, а 0F. Ну и где 15 байт? Так что у Вас даже исходных данных для подбора контрольной суммы нет.

Arduino85
Offline
Зарегистрирован: 31.10.2016

Оригинальное пакет был такой я просто его сократил: A5 5A 0F C1 02 00 00 00 00 00 00 00 00 00 00 00 AE там было 10 нулей

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

жесть! Ышо  одна жыжыгалка

nik182
Offline
Зарегистрирован: 04.05.2015

Мужик ты крут. Выкинуть нули из пакета это пять! Воткни в любой онлайн калькулятор свои строчки и добавляй нули в HEX. Наслаждайся изменением CRC8 после каждого следующего нуля. Казалось бы,причем здесь нули?   

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Arduino85 пишет:
Оригинальное пакет был такой я просто его сократил: A5 5A 0F C1 02 00 00 00 00 00 00 00 00 00 00 00 AE там было 10 нулей

Смотри, сокращалка: в алгоритме контрольной суммы может участвовать, например, не только значение байта, но и его позиция в пакете, и длина пакета в байтах. Смекаешь? Это я к тому, что порой удивляет - да ничо страшного, я тут сократил, догадайтесь, какой длины пакет и как считается контрольная сумма.

Не останавливайся на достигнутом: сократи пакет до одного байта, и попроси угадать, как там считается контрольная сумма. И не обращай ни на что внимания - нули там, не нули - просто тупо сокращай по самые помидоры, всё равно тут каждый второй с натёртым хрустальным шаром сидит, трепеща в ожидании вот таких вот угадывательных задач.

Ма-ла-дца!

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Arduino85 пишет:
Оригинальное пакет был такой я просто его сократил: A5 5A 0F C1 02 00 00 00 00 00 00 00 00 00 00 00 AE там было 10 нулей

Может, лучше заняться макраме?

Arduino85
Offline
Зарегистрирован: 31.10.2016

Убрал нули потому что тут сумма без полинома я это понял из следующего E7 01 = E8 00. Что то делают с суммой и получается этот проверочный байт который в конце. Также если поменять местами байты в данных то не меняется проверочный байт что не характерно для полиномных контрольных сумм.

Самое непонятное что если я увеличиваю значение сумма то растет то уменьшается (два раза растет потом куда то прыгает):

 

Arduino85
Offline
Зарегистрирован: 31.10.2016

Any ideas...

sadman41
Offline
Зарегистрирован: 19.10.2016

Идея: хачьте исходник. 

kalapanga
Offline
Зарегистрирован: 23.10.2016

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

Arduino85
Offline
Зарегистрирован: 31.10.2016

Программа по управлению Беспилотно летательных апаратов GSC. Управляется по UART. Разного рода команды ручное управление, посадка итд.

b707
Offline
Зарегистрирован: 26.05.2017

Arduino85 пишет:

Программа по управлению Беспилотно летательных апаратов GSC. Управляется по UART. Разного рода команды ручное управление, посадка итд.

а вы уверены, что эти пакеты не используют шифрование? Вообще-то все, что работает на расстоянии дальше 15-20м, обычно не шлет данные в открытом виде.

Я смотрю, у вас в пакете 17 байт - может это 16 байт простейшего блока AES128 + 1 байт окончания пакета?

sadman41
Offline
Зарегистрирован: 19.10.2016

Не дороговато ли по ресурсам на леталках AES закручивать/раскручивать?

b707
Offline
Зарегистрирован: 26.05.2017

sadman41 пишет:

Не дороговато ли по ресурсам на леталках AES закручивать/раскручивать?

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

Видел в сети тесты ардуиновских АЕS библиотек -  атмега328 успевает шифровать UART примерно до 38 или 57кбод. Правда ничего другого уже не делает :)

Logik
Offline
Зарегистрирован: 05.08.2014

//Убрал нули потому что тут сумма без полинома я это понял из следующего E7 01 = E8 00.

Не факт, раз скачет, то скорей с полиномом, возможно не циклическим. При подборе алгоритма учитывайте что неизвестно по какому блоку считается, только данные или длина и данные или с первого байта.