Есть ли тут спецы/любители в скремблировании/криптографии У коллеги по хобби покупной металлодетектор X-terra. В катушке находится микроконтроллер для хранения параметров катушки и фейсконтроля чужих катушек. Схему платы в катушке я видел и пообещал на досуге расколоть протокол.
Зима оказалось слишком короткой ;-) скоро новый сезон, а я только снял логи обмена и сделал первичный анализ:
Всего проанализировано 13 обменов по 7 посылок каждый
Совпадают побайтно посылки № 1,2, 6,7.
Остаются 3 посылки которые очевидно шифрованные.
1) Блок -> Катушка
0x00, 0x00, 0x00, 0x00, 0x00, - запрос версии ПО катушки
2) Катушка -> Блок
0x00, 0x08, 0x00, 0x00, 0x00, - ответ версия ПО катушки
3) Блок -> Катушка
0x20, xxxxxxxxx - шифрованный запрос идентификации
4) Катушка -> Блок
0x60, xxxxxxxxx - шифрованный ответ идентификации
5) Блок -> Катушка
0xA0, xxxxxxxxx - шифрованный запрос данных катушки
6) Катушка -> Блок
0xE0, - признак данных катушки
0x2E, 0x43, 0x7C, 0x8C, 0xC0, 0x40, 0x0C, 0x0C, - собственно данные 64 байта
0xC6, 0x2B, 0x0C, 0x00, 0x90, 0x80, 0x00, 0x00,
0xE7, 0x64, 0xC7, 0xF2, 0x33, 0xFD, 0xB7, 0x0A,
0x21, 0xED, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
7) Блок -> Катушка
0x90, 0x80, 0x00, 0x00, 0x00, - команда спать микроконтроллеру
Шифрованные посылки
все посылки №2
>0x20, 0xC2, 0x07, 0x47, 0xEC,
>0x20, 0xC7, 0xD4, 0x4F, 0xB4,
>0x20, 0xC8, 0x7F, 0xB6, 0x38,
>0x20, 0xD5, 0x18, 0xD5, 0x40,
>0x20, 0xD5, 0x73, 0xD7, 0x28,
>0x20, 0xD5, 0xDB, 0x2D, 0xD8,
>0x20, 0xD9, 0xE7, 0xB2, 0x50,
>0x20, 0xDA, 0x5D, 0x93, 0xE8,
>0x20, 0xDB, 0x43, 0xD2, 0x28,
>0x20, 0xE5, 0xCE, 0x6F, 0x6C,
>0x20, 0xE8, 0x00, 0x95, 0xF0,
>0x20, 0xFC, 0x23, 0x80, 0xC4,
все посылки №3
>0x60, 0x19, 0xF5, 0x49, 0x71,
>0x60, 0x2C, 0x87, 0x91, 0x14,
>0x60, 0x43, 0xAD, 0x6F, 0x3E,
>0x60, 0x53, 0x71, 0x0F, 0x07,
>0x60, 0x54, 0xCC, 0x2D, 0x93,
>0x60, 0x64, 0xBD, 0xE0, 0x3A,
>0x60, 0x76, 0xA0, 0xFF, 0x2A,
>0x60, 0x82, 0xCB, 0xCA, 0x89,
>0x60, 0x8B, 0x09, 0x03, 0x27,
>0x60, 0xAD, 0x12, 0x71, 0x0D,
>0x60, 0xDE, 0x60, 0xAC, 0x0A,
>0x60, 0xEB, 0x0F, 0xAB, 0x73,
все посылки №4
>0xA0, 0x09, 0x7E, 0xED, 0x4F,
>0xA0, 0x15, 0x4B, 0x7F, 0x4C,
>0xA0, 0x2D, 0xC9, 0x0B, 0xDC,
>0xA0, 0x2F, 0x7C, 0xBF, 0x8C,
>0xA0, 0x32, 0x4E, 0x41, 0x02,
>0xA0, 0x44, 0xAF, 0x4C, 0x0A,
>0xA0, 0x4F, 0x4C, 0xCB, 0x77,
>0xA0, 0x67, 0xA7, 0x95, 0x46,
>0xA0, 0x75, 0xE3, 0xC3, 0x48,
>0xA0, 0x8D, 0x2F, 0xAB, 0xD9,
>0xA0, 0xA8, 0xDA, 0x61, 0x64,
>0xA0, 0xCC, 0xC3, 0x2C, 0x71
Теперь пора приступать ко второму этапу или поднимать руки вверх "Гитлер капут".
Обнадеживающим фактором есть то,что две украинские фирмы продают катушки
http://marsmd.com
http://nel.com.ua
На сайтах нет информации о какой либо франшизе или лицензии.
У процессора всего 64 байта ОЗУ и 1 К ПЗУ - алгоритм должен быть не очень сложным.
Так, что решил продолжать "копать" протокол, пока копать в поле нет возможности.
Еще и похолодало, снег идет непрерывно.
Три шифрованных обмена как бы говорят о взаимной идентификации.
Но почему посылка начинается всегда одинаково?
Неужели просто 4 байта случайный шум?
Поискал по алгоритмам шифрации в сети, в расчете сузить круг "подозреваемых" алгоритмов за счет расходов ОЗУ/ПЗУ, но что-то жидковато.
В основном стандартные тяжеловесные.
Может кто встречал обзорную статью для 8-ми битников с ограниченными ресурсами?