Toyota Land Cruiser 2017 пробуем получить доступ к памяти панели приборов. Seed key

В стандарте ISO15765-4 в частности оговаривается механизм доступа к памяти блоков управления (ECU) автомобиля через диагностическую CAN шину.

Для доступа к памяти или изменению каких-либо настроек ECU необходима процедура обмена динамически изменяющимися ключами. Ключи называются Seed keys.

Обмен выглядит так:

->Диагностический прибор> Запрос на защищенный доступ Security Access

->ECU-> Ответ: 0x11 0x22 0xAA

Исходя из ответа ECU необходимо расчитать свое значение SeedKey. Формула расчета это и есть тот секрет, который необходимо раскрыть. У всех автопроизводителей принцип разный.

->Диагностические прибор-> Seedkey response: 0xEE 0xDD 0x56

->ECU  OK или если SeedKey неверен отклонение операции.

В стандарте ISO15765-4 этот диалог будет выглядеть следующим образом:

Диагностический прибор: 

ID=0x123;  DLC=8;  DATA 0x02 0x27 0x01,  где 0x123 ID программируемого ECU,                   0x02 Длина пакета, 0x27 запрос Security Access, 0x01 — команда на предоставление кода

 

ECU:

ID=0x12B; DLC=8; DATA = 0x05 0x67 0x01 0x11 0x22 0xAA, где 0x12B ID с которым отвечает ECU (ID запроса + 8), 0x05 длина пакета, 0x67 Подтверждение успешности выполнения запроса (0x27+0x40). 0x01 — выполненная функция -предоставление кода.                                   0x11 0x22 0xAA -Предоставленный код.

Диагностический прибор:

0x123   8   0x05 0x27 0x02 0xEE 0xDD 0x56, по аналогии с первым запросом, но 0x02 это команда говорящая о том, что теперь мы предоставляем рассчитаный SeedKey

ECU:

Если код принят:

0x12B 8 0x02 0x67 0x02    успешное исполнение 0x27+0x40=0x67

И если не принят ответ может выглядеть так:

0x12B 8 0x02 0x33 0x27 , где 0x33 код неверного того что рассчитанный SeedKey неверный

либо так:

0x12B 8 0x02  0x7F 0x27, где 0x7F код говорящий о том, что запрашиваемый сервис не поддерживается.

При последующем запросе SeedKey изменяется, смотрите на видео ниже.

Мы попробовали получить доступ к памяти панели приборов на Toyota Land Cruiser 200 2017 года выпуска через OBD2.  На наш запрос автомобиль отвечает 5-байтным ключом.

Сейчас мы работаем над поиском формулы расчета ответа, так что следите за новостями!

6 thoughts on “Toyota Land Cruiser 2017 пробуем получить доступ к памяти панели приборов. Seed key

  1. MaksVV

    А вы выложите небольшую статистику:
    код от ECU и соответствующий правильный код от диагностики
    хотя бы 3 — 4 таких пары.
    Над формулой вместе подумаем.

    Reply
  2. Абырвалг

    Немного уточнений по терминам. Понятия «Seed Key» не существует. У ECU запрашивается Seed. Полученное клиентом значение Seed подставляется в функцию с некоторым фиксированным значением, в итоге получаем Key, т.е. Key = f(Seed, Pin), то же самое делает ECU на своей стороне. Рассчитанный Key отправляется в ECU, где сравнивается со своим рассчитанным. Почитать можно в ISO 14229-1

    Reply
      1. Абырвалг

        На всякий случай скажу, что не пытаюсь учить/поучать. Просто хотел немного подтолкнуть в более правильную сторону. Рассказал бы больше, но на мне висит «неразглашение» коммерческой тайны: работаю над имплементацией кодинга, авторизации, диагностики на одного из производителей импортных авто. По сабжу рекомендую почитать ISO14229, в нём детально описан UDS — стандарт, в котором описана работа с DTC, запросом данных, сбросом ECU и многое другое. Эта часть стандартная у всех блоков, поддерживающих UDS. Различия между производителями и поколениями блоков — в уникальных идентификаторах данных. Также доступ к данным/операциям ограничивается разными уровнями доступа — сессиями, некоторые из которых защищены логином. Всё настраивается индивидуально для каждого блока в соответствии с требованиями конкретного заказчика. ISO15765 — это только транспортный протокол для UDS.

        Reply

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *