Показать сообщение отдельно
Старый 27.10.2015, 19:28   #91 (permalink)
Абориген
 
Регистрация: 07.12.2013
Сообщений: 1,534
Вы сказали Спасибо: 14
Поблагодарили 1,038 раз(а) в 554 сообщениях
Сказал(а) Фууу!: 3
Сказали Фууу! 1 раз в 1 сообщении
Откуда: МО
По умолчанию

Цитата:
Сообщение от draw Посмотреть сообщение
Это правильно- ноль должен быть чистым.
Может есть и смысл поставить к-драйвер чтобы для правильного нуля не городить еще 2 транзистора
Можно сделать несложный тест.
Коротим к-линию на массу и смотрим потенциал на RxD входе 2313.
Если там будет больше 0.3V значит транзисторный интерфейс барахло.

ЗЫ: Хе-хе... Вот нашел свои записи 15-ти летней давности про разборки с иммо
По понятным причинам убрал из текста только конкретные значения байтов используемых при шифровании.
================================================== =======


Запрос к иммобилайзеру от ECU начинается с выдачи посылки "0" на
определенное время (именно эта посылка и определяется как байт 00, хотя
им не является !), и по длительности посылки можно выбрать скорость
работы - для 9600 это около 22 mS (вероятно, стандартное время ровно 20 mS,
но есть большой допуск), для 10400 - 10 mS. У разных ECU длительности
немного различаются.


Затем передается собственно запрос вида 07 01 D7 91 56 9A A8 03,
где байты 4...7 содержат некий код, над которым производится
операция "скремблирования". В примере значение 4...7 байт условно.

На каждый байт посылки иммобилайзер должен ответить байтом с
инвертированным значением (на 07 - F8, например). Таймаут для ответа
составляет (предположительно) длительность 200 битов.

Операция "скремблирования" ответа производится с содержимым
четырехбайтового поля операндов (байты 4...7).

Вначале поле циклически сдвигается на один бит вправо (младший бит
байта 7 перемещается в старший бит байта 4).

Затем для "новых" ECU производится операция XOR байтов 4 и 5 со значением
[скрыто] и [скрыто], а затем выполняется преобразование в дополнительный код.

Для "старого" варианта эта операция делается несколько иначе:

Вначале для байтов 4 и 5 делается OR со значением [скрыто] и [скрыто] соответственно,
затем делается XOR со значениями [скрыто] и [скрыто]
Кроме того, байты 5 и 6
заполнятся какой-то информацией, но если даже их обнулить (или оставить
неизменными ?), все работает нормально (?)

Последняя операция - эти байты еще раз сдвигаются вправо, код запроса
D7 заменяется на код ответа 3D.

Если ECU воспринимает пакет правильно, то в ответ придет Ack (03 nn 09 03),
после него надо выдать EndCom (03 nn 06 03) для завершения процедуры связи.

Если ответ не удовлетворяет алгоритму шифрования, то возможны как минимум
два варианта:

1) от ECU приходит повторный запрос 'D7', на который можно ответить,
используя иной алгоритм скремблирования;

2) от ECU приходит ответ NoAck ('0A'), на который также можно ответить
пакетом '3D' с иным алгоритмом шифрования, причем в моем эксперименте
я даже пробовал не менять номер блока - получилось.


"Непрописанный" иммобилайзер (а так же при отсутствии ключа) в ответ
на запрос 'D7' отвечает NoAck ('0A') и ECU либо прекращает связь, либо
продолжает делать запросы.

================================================== ==
Примечание:
В качестве подопытных кроликов использовались
Коробочка иммо от Audi 95-96 годов (иммо1)
"Cтарый" - блок A4 1.9TDI 1998 года
"Новый" - блок S4 2.7T 1999 года

Последний раз редактировалось veloseeped; 27.10.2015 в 19:54..
veloseeped вне форума   Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо veloseeped за сообщение:
baken (27.10.2015), draw (27.10.2015), logo33 (13.11.2015)