Автор |
Сообщение |
|
Дата: 12 Окт 2015 20:35:11
#
Здравствуйте. Прошу вашей помощи.
Разбираюсь с одним устройством, протокол разобрал, осталось понять алгоритм создания контрольной суммы.
Сами посылки:
20000000FFFF010000000029
20000100FFFF01000000006B
20000200FFFF0100000000AD
20000300FFFF0100000000EF
20000400FFFF010000000088
20000500FFFF0100000000CA
20005FC3FFFF1C000000004B
0000FFFF5FC31D10014100C0
20005FC3FFFF1000000000C3
20005FC3FFFF300000000051
21005FC3FFFF0700000000405F
21005FC3FFFF070000000001F0
21005FC3FFFF070000000002A2
21005FC3FFFF0700000000030B
21005FC3FFFF07000000000406
21005FC3FFFF070000000005AF
21005FC3FFFF070000000006FD
21005FC3FFFF07000000000754
Последний байт - контрольная сумма.
Буду признателен за любую помощь.
|
|
Дата: 12 Окт 2015 21:11:21
#
Viking117
Может попробовать посмотреть в сторону циклического избыточного кода (CRC)?
|
Реклама Google
|
|
|
Дата: 12 Окт 2015 21:19:44
#
AVIAAMATOR
Пробовал CRC RevEng, количество бит выбирал от 2 до 8, но полином найти не удалось. Есть какие нибудь мысли?
|
|
Дата: 12 Окт 2015 22:30:17 · Поправил: AVIAAMATOR (12 Окт 2015 22:32:21)
#
|
|
Дата: 12 Окт 2015 22:32:49
#
А что за устройство если не секрет?
|
|
Дата: 13 Окт 2015 02:44:15 · Поправил: attache (13 Окт 2015 02:53:57)
#
Заставили поломать мозги... Полином 8753
И что это за интересное устройство, в номерном городе?
|
|
Дата: 13 Окт 2015 03:40:19 · Поправил: XOR (13 Окт 2015 03:54:38)
#
Полином 8753
а как так получилось что кс 8 бит а полином 16?
crc8, надо перебрать начальное значение и полином.
20000700FFFF01000000004E
|
|
Дата: 13 Окт 2015 10:35:22
#
А что за устройство если не секрет?
И что это за интересное устройство, в номерном городе?
Устройство - один из счетчиков в квартире, конкретно этот счетчик электроэнергии.
crc8, надо перебрать начальное значение и полином.
20000700FFFF01000000004E
Здорово, у Вас получилось. Расскажите какой полином и нач. значение использовали? Биты данных нужно реверсить, а результат, xor результата не нужен?
|
|
Дата: 13 Окт 2015 10:43:37 · Поправил: attache (13 Окт 2015 10:46:37)
#
|
|
Дата: 13 Окт 2015 10:50:57
#
Алгоритм поиска чуть позже опишу. Достаточно листка бумаги.
|
|
Дата: 13 Окт 2015 11:04:32 · Поправил: XOR (13 Окт 2015 12:11:13)
#
Расскажите
я только проверил что у вас точно crc и есть смысл дальше искать в этом направлении.
тут Помогите вскрыть проверочное поле подробно расписано как найти кс не зная полинома.
unsigned char crcrs(char *pcBlock, unsigned char len)
{
unsigned char crc = 0x00;
unsigned char i;
while (len--){
crc ^= *pcBlock++;
for (i = 0; i < 8; i++)
crc = crc & 0x80 ? (crc << 1) ^ 0xA9 : crc << 1;
}
return crc;
}
21005FC3FFFF070000000008E7
|
|
Дата: 13 Окт 2015 13:17:59
#
attache
пользуясь случаем и я поинтересуюсь
все данные из интернета, самого устройства нет и произвольно биты я менять не могу
5A6D008E60101016A831 53 85
85 это crc, 53 сумма ниблов, А кусок синхры, таким образом посылка скорее всего принимает вид 05D600E8060101618A13, это верно для протокола третьей версии, для протокола версии 2.1 от которого эти посылки полином найти не удалось.
5A6D008E60101016A8315385
5A6D00E9402230459061538A
5A6D008E20080007A7C15D32
5A6D0022902020459DC55971
5A6D002220206045993145AC
5A6D002280198004993958F6
5A6D0022901920059A314D91
5A6D002260190005A6C55215
5A6D002290200045A7C5527A
5A6D002220206045993145AC
5A6D009B5018508271C15EA8
5A6D007540204045A1C14FD2
5A6D00C41100702590214400
5A6D0030702130839BC55826
|
|
Дата: 13 Окт 2015 14:04:11
#
Берем значения, у которых изменяются соседние биты и ксорим с исходным, в котором они в нуле.
20000000FFFF010000000029
20000100FFFF01000000006B
20000200FFFF0100000000AD
20000400FFFF010000000088
29h xor 6Bh = 42h
29h xor ADh = 84h
29h xor 88h = A1h
Для проверки линейности алгоритма подсчета контрольной суммы 29h xor EFh = 42h xor 84h = C6h
42h 01000010b
Старший бит 0 - циклический сдвиг влево
84h 10000100b
Старший бит 1 - циклический сдвиг влево и xor с полиномом
A1h 10100001b
Отсюда полином x^8 + x^7 + x^5 + x^3
|
|
Дата: 13 Окт 2015 14:20:43 · Поправил: attache (13 Окт 2015 14:21:49)
#
XOR
А еще сырые данные есть?
Или что за протокол, можно в приват.
|
|
Дата: 13 Окт 2015 15:04:51 · Поправил: XOR (13 Окт 2015 15:08:55)
#
attache
увы нет, это все что получилось найти в инете.
это rf протокол oregon scientific версии 2.1, датчик BTHR918N или что-то подобное.
|
|
Дата: 13 Окт 2015 15:11:35
#
Отсюда полином x^8 + x^7 + x^5 + x^3
а вот интересно, при назначении того или иного полинома для CRC по каким критериям выбирают их коэффициенты? или могут применить любой полином, какой в голову взбредёт?
|
|
Дата: 13 Окт 2015 15:48:14
#
killer258
При выборе коэффициентов руководствуются максимальным кодовым расстоянием.
Но в ряде стандартов используют не самые оптимальные.
|
|
Дата: 13 Окт 2015 16:45:59
#
XOR
attache
Большое спасибо за помощь. Особая благодарность за ликбез.
П.С. Можете посоветовать что-нибудь почитать на эту тему?
|
|
Дата: 13 Окт 2015 17:31:59
#
XOR
При наличии устройства можно сделать плавный нагрев/охлаждение для получения, пусть не произвольных, но удобных для исследования данных.
Или использовать суточный лог. По имеющимся данным угадывать полином, дело не благодарное.
Viking117
Например Питерсон У. "Коды, исправляющие ошибки" не могу сказать, что она доступна для понимания без других знаний.
|
|
Дата: 13 Окт 2015 23:43:43
#
|
|
Дата: 14 Окт 2015 04:34:35
#
|
Реклама Google |
|