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

 
 
> Определение алгоритма CRC8, неизвестный CRC8
TONAL
сообщение Oct 16 2007, 15:36
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 16-10-07
Пользователь №: 31 405



Доброго времени суток All!

Имеется некоторый контроллер декодирующий сигналы от местной клавиатуры, пульта ДУ и передающий соответствующие пакеты через USB мост в PC.
Каждый пакет состоит из шапки-3байта+данные-2байта+данные-2байта(повтор)+СRC.

Пакет CRC

53 4B 08 E0 00 E0 00 - AB
53 4B 08 E0 02 E0 02 - 3A
53 4B 08 E0 01 E0 01 - 6F
53 4B 08 E0 08 E0 08 - DD
53 4B 08 E0 10 E0 10 - 47
53 4B 08 E0 04 E0 04 - 90
53 4B 08 E0 24 E0 24 - 51
53 4B 08 E0 20 E0 20 - 6A
53 4B 08 E0 40 E0 40 - 30

53 4D 08 00 01 00 01 - DD

53 49 08 10 00 10 00 - D1
53 49 08 10 08 10 08 - A7
53 49 08 11 00 11 00 - 24
53 49 08 11 08 11 08 - 52
53 49 08 0D 00 0D 00 - EB
53 49 08 0D 08 0D 08 - 9D
53 49 08 00 00 00 00 - 06
53 49 08 00 08 00 08 - 70
53 49 08 01 00 01 00 - F3
53 49 08 01 08 01 08 - 85
53 49 08 02 00 02 00 - F5
53 49 08 02 08 02 08 - 83
53 49 08 03 00 03 00 - 00
53 49 08 03 08 03 08 - 76
53 49 08 04 00 04 00 - F9
53 49 08 04 08 04 08 - 8F
53 49 08 05 00 05 00 - 0C
53 49 08 05 08 05 08 - 7A
53 49 08 06 00 06 00 - 0A
53 49 08 06 08 06 08 - 7C
53 49 08 07 00 07 00 - FF
53 49 08 07 08 07 08 - 89
53 49 08 08 00 08 00 - E1
53 49 08 08 08 08 08 - 97
53 49 08 09 00 09 00 - 14
53 49 08 09 08 09 08 - 62

Хотя есть все основания полагать что используется класический алгоритм СRC8 с неизвестным полиномом и начальным заполнением - вследствие линейности:

53 49 08 01 00 01 00 - F3
53 49 08 02 00 02 00 - F5
XOR 00 00 00 03 00 03 00 - 06 !!!

53 49 08 00 00 00 00 - 06
53 49 08 03 00 03 00 - 00
XOR 00 00 00 03 00 03 00 - 06 !!!


Но перебор всех возможных полиномов и начальных заполнений по процедуре:

BYTE crc8_sft_buf(BYTE * buf, BYTE poly8, BYTE crc, BYTE len)
{
for (BYTE i = 0; i < len; i++)
{
crc ^= buf[i];
for (BYTE j = 0; j < 8; j++ )
crc = crc & 0x80 ? (crc << 1) ^ poly8 : crc << 1;
// crc = crc & 0x01 ? (crc >> 1) ^ poly8 : crc >> 1;
}
return crc;
}
Не принес результата sad.gif

Ранее здесь подымалась подобная тема (http://electronix.ru/forum/index.php?showtopic=22188&st=0), но до победы как я понял не дошло.

Надеюсь на помощь, заранее спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Ivan_Petrov
сообщение Oct 17 2007, 17:50
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 43
Регистрация: 12-10-07
Пользователь №: 31 293



Все перепровирил, при чтении CRC не проверяется. Читается всегда по 8 байт с порта "/dev/usb/tts/0" на скорости 9600, 8 бит данных. Вторым байтом идут идентификаторы, которые могут принимать значения: 0x4B,0x4D,0x42.
Для идентификатора 0x4B 4 и 5 байты пакета раскладываются в массив int значений, примерно вот так:
Код
for (i = 0; i < 8; i++)
{
    array[i] = (packet[4] & (1 << i)) ? 1 : 0;
}

Для других идетификаторов проверяются внутренние состояния. Дальше копать не стал.

при открытии порта посылаются вот такие пакеты инициализации
Цитата
0x52,0x03, CRC
0x41,0x04,0xFF, CRC


и есть еще пакет на запись вот такого формата:
Цитата
val = <expr> ? 3 : 0
0x4D,0x05, val, 0x00, CRC

когда точно отсылается тоже не стал копать.

все smile.gif

p.s.
я еще вот что думаю, а может в пакете на прием это не CRC, а неочищенный перед заполнением буфер, выделенный на стеке? Тоже самое объяснение может быть и для повторных полей с данными.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- TONAL   Определение алгоритма CRC8   Oct 16 2007, 15:36
- - TONAL   + Приведенная таблица пакетов является почти полно...   Oct 16 2007, 22:13
|- - TONAL   Можно спрогнозировать еще один такой елемент, даль...   Oct 17 2007, 09:55
|- - Ivan_Petrov   То что вы привели в качестве прогноза, свойственно...   Oct 17 2007, 11:13
|- - TONAL   Цитата(Ivan_Petrov @ Oct 17 2007, 14:13) ...   Oct 17 2007, 11:33
|- - Ivan_Petrov   Цитата(TONAL @ Oct 17 2007, 15:33) Какие ...   Oct 17 2007, 11:43
|- - TONAL   Цитата(Ivan_Petrov @ Oct 17 2007, 14:43) ...   Oct 17 2007, 12:03
|- - VslavX   Цитата(TONAL @ Oct 17 2007, 15:03) А каки...   Oct 17 2007, 12:13
||- - TONAL   Цитата(VslavX @ Oct 17 2007, 15:13) Если ...   Oct 17 2007, 12:17
|- - Ivan_Petrov   Цитата(TONAL @ Oct 17 2007, 16:03) А каки...   Oct 17 2007, 12:27
|- - TONAL   Цитата(Ivan_Petrov @ Oct 17 2007, 15:27) ...   Oct 17 2007, 12:45
|- - Ivan_Petrov   Цитата(TONAL @ Oct 17 2007, 16:45) Как ег...   Oct 17 2007, 13:08
|- - TONAL   Цитата(Ivan_Petrov @ Oct 17 2007, 16:08) ...   Oct 17 2007, 13:10
|- - Ivan_Petrov   Цитата(TONAL @ Oct 17 2007, 17:10) Имя пр...   Oct 17 2007, 13:30
|- - TONAL   Ну как оно???   Oct 17 2007, 14:46
|- - Ivan_Petrov   Цитата(TONAL @ Oct 17 2007, 18:46) Вроде ...   Oct 17 2007, 15:36
|- - TONAL   Цитата(Ivan_Petrov @ Oct 17 2007, 18:36) ...   Oct 17 2007, 15:56
- - TONAL   Пересчитал по твоему коду: CRC расчитаный таблично...   Oct 17 2007, 19:12
- - Ivan_Petrov   Цитата(TONAL @ Oct 17 2007, 23:12) Иденти...   Oct 17 2007, 19:44
- - TONAL   Цитата(Ivan_Petrov @ Oct 17 2007, 22:44) ...   Oct 17 2007, 20:39


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

 


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


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