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

 
 
> Взлом протокола обмена, определение алгоритма подсчета CRC
ARV
сообщение Apr 6 2018, 13:08
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Коллеги!
Прошу помочь, хотя бы советом, в решении проблемы реверс-инжиниринга ИК-протокола обмена.
Есть "фирменная" система, состоящая из приемника ИК-сигналов и кучи передатчиков сигнала. Передатчики посылают пакеты данных, в которых есть их собственный адрес и еще что-то.

Сам обмен я просниффил, оказалось достаточно просто, в пакете данных нашел поля адреса, в этом я точно уверен. Все остальные данные пока не известны, где находятся в пакете, но главное - в конце пакета (подозреваю очень сильно!) есть поле какой-то контрольной суммы. Во всяком случае, при изменении буквально 1-2 битов в пакете 4 последних байта сильно меняются, что наталкивает...

Так вот: каким способом можно вычислить алгоритм, по которому ведется подсчет этой КС? Прошивка МК недоступна, естественно... Я пробовал брутфорсить при помощи утилиты reveng, но ничего не вышло... Что посоветуете?

Вот просниффленные пакеты с трех разных передатчиков:
Код
73 07 61 = BA AF 20 05 1C 00 00 00 00 00 00 00 00 00 00 09 0A 00 00 00 00 00 00 80 00 00 00 41 41 00 3C 12 = 71 6D 62 87
73 07 61 = BA AF 40 60 18 00 00 00 00 00 00 00 00 00 00 09 0A 00 00 00 00 00 00 80 00 00 00 41 41 00 3C 12 = 3B 80 07 A9
73 07 61 = BA AF 60 00 16 00 00 00 00 00 00 00 00 00 00 09 0A 00 00 00 00 00 00 80 00 00 00 41 41 00 3C 12 = 01 6D 67 BD
73 07 61 = BA AF 20 05 12 00 00 00 00 00 00 00 00 00 00 09 0A 00 00 00 00 00 00 80 00 00 00 41 41 00 3C 12 = 71 20 62 88

72 4F 1B = BA 9C 60 00 62 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 = 01 30 E7 F6
72 4F 1B = BA 9C 40 62 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 = D0 13 85 05
72 4F 1B = BA 9C 60 00 5E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 = 01 12 E7 CA
72 4F 1B = BA 9C 20 0B 5E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 = 0B AA EC 80

73 10 07 = 25 41 20 04 1E 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 12 = 47 06 62 4C
73 10 07 = 25 41 40 60 1C 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 12 = 19 20 06 70
73 10 07 = 25 41 60 00 1A 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 12 = 01 6A 66 4E
73 10 07 = 25 41 20 04 18 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 12 = 78 0C 4E 45
знаками равенства я отделил в начале область адреса (я уверен, что это так) и в конце - область контрольной суммы (100% уверенности в назначении этих байтов нет)


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ARV
сообщение Apr 6 2018, 16:17
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(Baser @ Apr 6 2018, 17:35) *
Вообщем попробовать подбором.

Собственно, для подбора нужен какой-то автоматизированный инструмент, иначе просто нереально. Знаете такой?

Цитата(adnega @ Apr 6 2018, 17:43) *
А возможно ли получить один и тот же пакет два раза? У таких пакетов последние 4 байта будут совпадать?

пока что не удалось добиться такого, при каждой передаче по непонятному алгоритму меняются 5-7 байты. Пока что я не выявил их назначение, поэтому не могу сказать, возможно ли добиться повторяемости.


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Apr 7 2018, 09:35
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(ARV @ Apr 6 2018, 19:17) *
Собственно, для подбора нужен какой-то автоматизированный инструмент, иначе просто нереально. Знаете такой?
. . .
Очень давно переписывал ф-ию подсчета CRC для универсального применения (те с любым полиномом, с любым направлением сдвига и старт. значением).
Это не очень сложно. Стандартных полиномов не так много. Направления сдвига - 2 (оноже - "зеркальный" полином).
Стандартные длины 8-16-32, плюс может быть не стандартная, например 24.
Но "рояль" может не сработать, даже при правильном подборе алгоритма CRC, если девайс при подсчете суммы добавляет скрытые байты в подсчет.
(те они включаются в подсчет для каждого пакета на сторонах передатчика и приемника в качестве константы, но через канал связи не передаются)

ps
В пакете могут присутствовать байты, которые не должны включаться в подсчет CRC.
А есть возможность не сниффить, а "стрельнуть" в приемник своим пакетом ("ловить на живца") sm.gif
Go to the top of the page
 
+Quote Post
ARV
сообщение Apr 7 2018, 13:28
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(k155la3 @ Apr 7 2018, 12:35) *
А есть возможность не сниффить, а "стрельнуть" в приемник своим пакетом ("ловить на живца") sm.gif
Это, разумеется, один из этапов "взлома", но пока что я к нему не приступил.
Все вами сказанное я понимаю, но продолжаю надеяться, что не все так сложно, особенно со скрытыми байтами. Просто система не та, чтобы так стараться сделать её невзламываемой, главное - обеспечить надежность передачи по ИК-каналу, который, в принципе, достаточно "грязный". Так что я все-таки надеюсь, что слишком хитрых трюков не будет...

Мне вот уже подсказали, что XOR первых пяти байтов даёт НОЛЬ, хотя АДРЕС содержится только в первых трех - может быть, эта часть и не входит в общую КС... но 4 байта КС - это намекает на CRC32, что выглядит явно избыточным для пакета из 39 байт...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 7 2018, 15:13
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (ARV @ Apr 7 2018, 15:28) *
но 4 байта КС - это намекает на CRC32, что выглядит явно избыточным для пакета из 39 байт...
Там может быть, например, 2 байта обычной суммы и 2 байта контрольной суммы Флетчера. Я бы на вашем месте обратил пристальное внимание на сообщение от _pv.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ARV
сообщение Apr 8 2018, 11:42
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(Сергей Борщ @ Apr 7 2018, 18:13) *
Там может быть, например, 2 байта обычной суммы и 2 байта контрольной суммы Флетчера. Я бы на вашем месте обратил пристальное внимание на сообщение от _pv.
Я обращаю внимание... но не все понятно. Например, что за КС Флетчера - не ясно, в интернете что-то непонятное написано (по-русски).


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Apr 8 2018, 13:51
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



А есть возможность проверить что эти пакеты принимаются корректно другим приемником ?
Go to the top of the page
 
+Quote Post
ARV
сообщение Apr 8 2018, 18:22
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(k155la3 @ Apr 8 2018, 16:51) *
А есть возможность проверить что эти пакеты принимаются корректно другим приемником ?

Приемник пока один. Статистику по пакетам буду набирать для имеющихся передатчиков... Потом буду гондобить свой передатчик и пытаться обмануть приемник...
Пока это все, что в моих силах.


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Apr 11 2018, 09:34
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(ARV @ Apr 8 2018, 21:22) *
Приемник пока один. Статистику по пакетам буду набирать для имеющихся передатчиков... Потом буду гондобить свой передатчик и пытаться обмануть приемник... Пока это все, что в моих силах.

1. Приемник может быть (и скорее всего для этого применения есть) селективный. (принимает только "свои" корректные пакеты).
2. Если используется даже примитивное шифрование данных (XOR по всем или части данных), то разломать будет трудно.
Под разломать я понимаю разобраться как формируется CRC или чего оно там.
CRC может считаться с динамически изменяемым стартовым значением. Эти 2 или 4 байта могут передаваться в начале пакета (не обязательно).
3. То что меняется в пакетах - возможно - температура чипа. (не помню в F149 есть или нет встроенный ADC температуры)
Онаже может использоваться для кодирования в качестве "случайного" числа.
Также возможно передается данные о состоянии батарей.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ARV   Взлом протокола обмена   Apr 6 2018, 13:08
- - Baser   Если CRC стандартная, то можно попробовать перебра...   Apr 6 2018, 13:35
- - adnega   Цитата(ARV @ Apr 6 2018, 16:08) в конце п...   Apr 6 2018, 13:43
|- - adnega   Цитата(ARV @ Apr 6 2018, 19:17) пока что ...   Apr 6 2018, 17:00
|- - Baser   Цитата(ARV @ Apr 6 2018, 19:17) Собственн...   Apr 6 2018, 20:22
- - ARV   Цитата(Baser @ Apr 7 2018, 00:22) Сейчас,...   Apr 7 2018, 05:36
- - _pv   Первая и четвертая строки отличаются на пару бит, ...   Apr 7 2018, 05:59
- - esaulenka   Мысли на уровне ".опой чую": - передатчи...   Apr 9 2018, 19:53
|- - Baser   Цитата(esaulenka @ Apr 9 2018, 22:53) ......   Apr 10 2018, 10:11
|- - ARV   Цитата(Baser @ Apr 10 2018, 14:11) Может ...   Apr 10 2018, 10:21
|- - Flood   Цитата(ARV @ Apr 10 2018, 13:21) Проводно...   Apr 10 2018, 10:30
|- - ARV   Цитата(Flood @ Apr 10 2018, 14:30) Часто ...   Apr 10 2018, 10:55
- - ARV   Я набрал еще пакетов для статистики. Выяснилось, ч...   Apr 10 2018, 07:51
- - vesago   Случаем не для буренок таги? https://electronix.ru...   Apr 10 2018, 18:01
- - ARV   Для них, родимых. Я продвинулся куда дальше всех, ...   Apr 10 2018, 18:29
|- - vesago   Однако. Не думал, что кто-то еще в такой области р...   Apr 10 2018, 20:01
|- - ARV   Цитата(vesago @ Apr 11 2018, 00:01) Но пр...   Apr 11 2018, 04:22
- - vesago   В таге у меня стоял MSP430. Я пробовал подцепиться...   Apr 11 2018, 06:01
|- - ARV   Цитата(vesago @ Apr 11 2018, 10:01) В таг...   Apr 11 2018, 08:54
|- - Baser   Цитата(vesago @ Apr 11 2018, 09:01) В таг...   Apr 11 2018, 09:00
|- - vesago   Цитата(Baser @ Apr 11 2018, 12:00) А како...   Apr 11 2018, 09:17
|- - Baser   Цитата(vesago @ Apr 11 2018, 12:17) У мен...   Apr 11 2018, 09:57
|- - k155la3   Цитата(Baser @ Apr 11 2018, 12:57) . . . ...   Apr 11 2018, 10:42
- - vesago   Во как на объекте выглядит   Apr 11 2018, 09:41
- - ARV   К сожалению, семейство MSP430 для меня абсолютно н...   Apr 11 2018, 11:41
|- - k155la3   Цитата(ARV @ Apr 11 2018, 14:41) К сожале...   Apr 11 2018, 13:03
- - ARV   Способы выделения полей в пакете в общих чертах мн...   Apr 11 2018, 13:11
|- - k155la3   Цитата(ARV @ Apr 11 2018, 16:11) . . . И...   Apr 11 2018, 15:16
|- - halfdoom   Цитата(ARV @ Apr 11 2018, 16:11) Остается...   Apr 12 2018, 07:23
|- - k155la3   Цитата(ARV @ Apr 11 2018, 16:11) . . . . ...   Apr 12 2018, 09:27
- - ARV   При помощи reveng я пробовал перебор (т.е. брутфор...   Apr 12 2018, 08:29
|- - Сергей Борщ   QUOTE (ARV @ Apr 12 2018, 10:29) При помо...   Apr 12 2018, 09:04
- - ARV   Так там и нет изменения пары битов, там все 4 байт...   Apr 12 2018, 09:13
- - ARV   Я умом понимаю сложность задачи... но надеюсь еще ...   Apr 12 2018, 10:43
|- - k155la3   Цитата(ARV @ Apr 12 2018, 13:36) Я умом п...   Apr 12 2018, 11:00
- - _pv   последние два байта - тупо xor от первых 18ти 16ти...   Apr 12 2018, 10:44
|- - ARV   Цитата(_pv @ Apr 12 2018, 14:44) последни...   Apr 12 2018, 10:54
- - ARV   Идеи требуются. Но еще сильнее требуется какое-то ...   Apr 12 2018, 11:04
- - _pv   четвертый с конца байт - не КС, есть пакеты где то...   Apr 12 2018, 11:22
|- - k155la3   Цитата(_pv @ Apr 12 2018, 14:22) . . . а ...   Apr 12 2018, 11:53
|- - _pv   Цитата(k155la3 @ Apr 12 2018, 18:53) Хемм...   Apr 12 2018, 12:06
|- - k155la3   Цитата(_pv @ Apr 12 2018, 15:06) под один...   Apr 12 2018, 12:54
- - _pv   7310072541 2004 46 0000000000000000000000008240C10...   Apr 12 2018, 13:02
- - k155la3   А ТС стопроцентно уверен, что пакеты "просниф...   Apr 12 2018, 13:07
- - ARV   Только что проверил на всех имеющихся на сегодня д...   Apr 12 2018, 13:17
|- - _pv   Цитата(ARV @ Apr 12 2018, 20:17) Набросал...   Apr 12 2018, 13:26
- - vesago   Да, у них обычный UART 4800. По крайней мере ридер...   Apr 12 2018, 13:23
- - k155la3   А как передатчик узнает, что ему надо передать инф...   Apr 12 2018, 18:06
- - ARV   Цитата(k155la3 @ Apr 12 2018, 21:06) А ка...   Apr 12 2018, 18:56


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

 


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


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