24

Как найти алгоритм контрольной суммы?

Есть лог обмена управляющего ПО и исполнительного устройства. Надо найти алгоритм вычисления контрольки.

AA 03 00 00 01 9C FD запрос

AA 04 00 00 01 E8 FC ответ

AA 03 00 00 03 5D FC запрос

AA 04 00 00 03 29 7D ответ

Я посчитал CRC8, не подходит. Сложил все цифры по модулю FF, поксорил все цифры, ничего не совпадает.

Вариант одной и той же команды с явным параметром:

aa 03 01 00 08 10 e1 5b передаю 16dec

aa 03 01 00 08 20 f5 5b передаю 32dec

aa 03 01 00 08 1e 25 da передаю 30dec

AA есть во всех пакетах, допускаю, что это синхра, как в CAN, LIN. 03 скорее всего код, что это команда. Три числа дальше скорее всего тоже данные, они не меняются. Далее передаваемый параметр, и за ними два числа скорее всего чексумма. Не могу придумать ни одного алгоритма. Даже CHAT-GPT спросил, он завис)))

РЕШЕНО. #comment_295288865

Спасибо участникам!

TECHNO BROTHER

2K постов13.5K подписчика

Правила сообщества

1-Мы А-политическое сообщество. 2-Запрещено оскорбление: Администрации Пикабу, сообщества, участников сообщества а также родных, близких выше указанных.

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

Вы смотрите срез комментариев. Показать все
9
Автор поста оценил этот комментарий
CRC16 попробуй
раскрыть ветку (6)
5
Автор поста оценил этот комментарий

Он и есть:


unsigned short crc16(unsigned short crc, unsigned char *data, unsigned int len) {

const static unsigned short crc_lut[256] = {

0x0000,0xC0C1,0xC181,0x0140,0xC301,0x03C0,0x0280,0xC241,

0xC601,0x06C0,0x0780,0xC741,0x0500,0xC5C1,0xC481,0x0440,

0xCC01,0x0CC0,0x0D80,0xCD41,0x0F00,0xCFC1,0xCE81,0x0E40,

0x0A00,0xCAC1,0xCB81,0x0B40,0xC901,0x09C0,0x0880,0xC841,

0xD801,0x18C0,0x1980,0xD941,0x1B00,0xDBC1,0xDA81,0x1A40,

0x1E00,0xDEC1,0xDF81,0x1F40,0xDD01,0x1DC0,0x1C80,0xDC41,

0x1400,0xD4C1,0xD581,0x1540,0xD701,0x17C0,0x1680,0xD641,

0xD201,0x12C0,0x1380,0xD341,0x1100,0xD1C1,0xD081,0x1040,

0xF001,0x30C0,0x3180,0xF141,0x3300,0xF3C1,0xF281,0x3240,

0x3600,0xF6C1,0xF781,0x3740,0xF501,0x35C0,0x3480,0xF441,

0x3C00,0xFCC1,0xFD81,0x3D40,0xFF01,0x3FC0,0x3E80,0xFE41,

0xFA01,0x3AC0,0x3B80,0xFB41,0x3900,0xF9C1,0xF881,0x3840,

0x2800,0xE8C1,0xE981,0x2940,0xEB01,0x2BC0,0x2A80,0xEA41,

0xEE01,0x2EC0,0x2F80,0xEF41,0x2D00,0xEDC1,0xEC81,0x2C40,

0xE401,0x24C0,0x2580,0xE541,0x2700,0xE7C1,0xE681,0x2640,

0x2200,0xE2C1,0xE381,0x2340,0xE101,0x21C0,0x2080,0xE041,

0xA001,0x60C0,0x6180,0xA141,0x6300,0xA3C1,0xA281,0x6240,

0x6600,0xA6C1,0xA781,0x6740,0xA501,0x65C0,0x6480,0xA441,

0x6C00,0xACC1,0xAD81,0x6D40,0xAF01,0x6FC0,0x6E80,0xAE41,

0xAA01,0x6AC0,0x6B80,0xAB41,0x6900,0xA9C1,0xA881,0x6840,

0x7800,0xB8C1,0xB981,0x7940,0xBB01,0x7BC0,0x7A80,0xBA41,

0xBE01,0x7EC0,0x7F80,0xBF41,0x7D00,0xBDC1,0xBC81,0x7C40,

0xB401,0x74C0,0x7580,0xB541,0x7700,0xB7C1,0xB681,0x7640,

0x7200,0xB2C1,0xB381,0x7340,0xB101,0x71C0,0x7080,0xB041,

0x5000,0x90C1,0x9181,0x5140,0x9301,0x53C0,0x5280,0x9241,

0x9601,0x56C0,0x5780,0x9741,0x5500,0x95C1,0x9481,0x5440,

0x9C01,0x5CC0,0x5D80,0x9D41,0x5F00,0x9FC1,0x9E81,0x5E40,

0x5A00,0x9AC1,0x9B81,0x5B40,0x9901,0x59C0,0x5880,0x9841,

0x8801,0x48C0,0x4980,0x8941,0x4B00,0x8BC1,0x8A81,0x4A40,

0x4E00,0x8EC1,0x8F81,0x4F40,0x8D01,0x4DC0,0x4C80,0x8C41,

0x4400,0x84C1,0x8581,0x4540,0x8701,0x47C0,0x4680,0x8641,

0x8201,0x42C0,0x4380,0x8341,0x4100,0x81C1,0x8081,0x4040

};

while(len--) {

crc = crc_lut[(*data ^ crc) & 0xff] ^ (crc >> 8);

data++;

}

return(crc);

}

1
Автор поста оценил этот комментарий

пробовал.

раскрыть ветку (4)
8
Автор поста оценил этот комментарий

Не пробовал. CRC16 по алгоритму выше для "AA 03 00 00 01"

Иллюстрация к комментарию
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

ахаха, точно. Я, балбес, с пробелами вставил)))

Иллюстрация к комментарию
5
Автор поста оценил этот комментарий
плохо пробовал))
crccalc.com
Иллюстрация к комментарию
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

исходную строку с пробелами захерачил)))

Иллюстрация к комментарию
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку