|
Взлом протокола обмена, определение алгоритма подсчета CRC |
|
|
|
Apr 6 2018, 13:08
|

Профессионал
    
Группа: Свой
Сообщений: 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% уверенности в назначении этих байтов нет)
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
 |
Ответов
|
Apr 6 2018, 16:17
|

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

|
Цитата(Baser @ Apr 6 2018, 17:35)  Вообщем попробовать подбором. Собственно, для подбора нужен какой-то автоматизированный инструмент, иначе просто нереально. Знаете такой? Цитата(adnega @ Apr 6 2018, 17:43)  А возможно ли получить один и тот же пакет два раза? У таких пакетов последние 4 байта будут совпадать? пока что не удалось добиться такого, при каждой передаче по непонятному алгоритму меняются 5-7 байты. Пока что я не выявил их назначение, поэтому не могу сказать, возможно ли добиться повторяемости.
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
Apr 7 2018, 09:35
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

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

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

|
Цитата(k155la3 @ Apr 7 2018, 12:35)  А есть возможность не сниффить, а "стрельнуть" в приемник своим пакетом ("ловить на живца")  Это, разумеется, один из этапов "взлома", но пока что я к нему не приступил. Все вами сказанное я понимаю, но продолжаю надеяться, что не все так сложно, особенно со скрытыми байтами. Просто система не та, чтобы так стараться сделать её невзламываемой, главное - обеспечить надежность передачи по ИК-каналу, который, в принципе, достаточно "грязный". Так что я все-таки надеюсь, что слишком хитрых трюков не будет... Мне вот уже подсказали, что XOR первых пяти байтов даёт НОЛЬ, хотя АДРЕС содержится только в первых трех - может быть, эта часть и не входит в общую КС... но 4 байта КС - это намекает на CRC32, что выглядит явно избыточным для пакета из 39 байт...
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
Apr 7 2018, 15:13
|

Гуру
     
Группа: Модераторы
Сообщений: 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)
|
|
|
|
Сообщений в этой теме
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 Цитата(k155la3 @ Apr 8 2018, 16:51) А ест... Apr 8 2018, 18:22       k155la3 Цитата(ARV @ Apr 8 2018, 21:22) Приемник ... Apr 11 2018, 09:34 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|