"Бесчиповый" обходчик иммобилайзера (эмулятор ключа PATS) - мой вариант.
Когда устанавливал сигнализацию с дистанционным запуском, видел что для других машин существуют так называемые "Бесчиповые обходчики". Посмотрел схему PATS (у меня сейчас Kuga- кнопка Ford Power).
Без кнопки Ford Power думаю аналогично, только вместо модуля KVM используется приборка (IC, HEC).
Схема PATS (с кнопкой Ford Power):
Вроде бы всё просто - RxD, TxD -интерфейс RS-232C. Достаточно засниффить обмен и повторить его потом на микроконтроллере...
Вооружился цифровым запоминающим осциллографом, самодельным сниффером 2-х COM портов, доступными даташитами от Texas Instruments и решил сделать эмулятор.
Осциллограмма- успешное определение ключа:
Осциллограмма- нет ключа:
На деле оказалось всё намного сложнее...
1) RS-232C присутствует только на линии RxD PATS
2) Полярность сигнала как у Data кабелей (однополярный сигнал уровня TTL), однако амплитуда сигнала 12в.
3) Скорость передачи оказалась "не совсем стандартной" - 15625 бит/c. К счастью адаптер USB-COM, который я
использовал, на чипе Prolific PL2303 можно заставить работать на этой скорости, используя недокументированные
возможности драйвера (прописав ключ ExtBaudrate в реестр Windows). Использовал переделанный вариант адаптера
с уровнями TTL плюс внешний делитель из резисторов с 12 на 5 в.
4) На линии TxD используется спец сигнал. Для передачи данных применяется особый вид Pulse Width Modulation
(PWM)- каждый бит информации передаётся последовательностью "1" - "0", причём длительность уровней "1"и"0"
для информационного бита "1" в два раза больше, чем для информационного бита "0"
5) И наконец, самое главное: сигналы на линиях TxD и RxD всё время разные! В PATS используются траспондеры Texas DST, в которых применяется технология Challenge-Response (аналог системы "свой-чужой").
Блок KVM (или IC) передаёт запрос, в котором присутствует Challenge - случайное 40 битное число.
Осциллограмма- Challenge:
Транспондер обрабатывает запрос по проприертарному (засекреченному) алгоритму Texas Crypto (похож на DES) с ключём шифрования длиной 40 бит и формирует ответ Response, в котором оставляет только 24 бита из 40. Response включается в состав пакета направляемого в линию RxD. В этот пакет также входит серийный номер транспондера и контрольная сумма CRC-CCITT, параметры полинома которой также не афишируются...
Осциллограмма- Response:
Ключ шифрования прочитать из транспондера нельзя, его можно только записать в трансподер.
Как выяснилось он один и тот же для машины, т.е. в каждом ключе иммобилайзера одной машины он один и тот же.
Ключ шифрования в каком-то виде присутствует в памяти блока KVM (IC), поэтому последний может проверить правильность Response от транспондера в ответ на посланный Challenge.
К счастью алгоритм Texas Crypto был взломан Steve Bono et al ещё в 2005г с применением PLIC-FPGA - этот случай очень популярный, изучается во всех американских университетах...
http://www.usenix.org/event/sec05/tech/bono/bono.pdf Вообщем, собрав всё это в кучу, прочитав много даташитов, проведя много экспериментов мне удалось сделать эмулятор.
Схема эмулятора:
Схема подключения эмулятора (Ford Power):
Схема подключения эмулятора (без Ford Power):
Мне кажется, что выход из приёмника транспондера (RxD) выполнен по схеме с "открытым коллектором". Если это действительно так, то можно использовать на свой страх и риск (я использую) 2-х проводную схему подключения.
И это действительно так, спасибо за фотку приемо-передатчика
Victor_AlarmSPbВ этом случае можно замкнуть джампер "2Wire", а можно и не замыкать- последняя версия программы микроконтроллера сама определяет подключен ли эмулятор по 2-х проводной схеме
При 2-х проводной схеме резистор R8 по схеме устанавливать не надо, т.к. такой резистор уже установлен в блоке KVM (IC)
Схема подключения эмулятора 2-x проводная (Ford Power):
Схема эмулятора- минимальный вариант- для размещения внутри блока сигнализации:
Прошивка микроконтроллера:
http://db.tt/1ZGzJn3JEEPROM микроконтроллера:
http://db.tt/1ZGzJn3JВсе Fuse bits = 1 (unprogrammed), кроме SUT0=0
Как записать серийный номер транспондера и ключ шифрования:
I Способ (редактирование EEPROM):
1. Подключить эмулятор к машине.
2. Замкнуть джампер "Record"
3. Контакт "ByPass" не замыкать.
4. Убрать брелок бесключевого запуска из зоны досягаемости
5. Вставить ключ аварийного запуска в держатель (в случае Ford Power)
6. Нажать кнопку Ford Power (Включить зажигание)
7. Дождаться не менее двух миганий (~1 сек. каждое) светодиода- эмулятор запишет в EEPROM серийный номер и две пары Chalenge-Response (две пары необходимы, чтобы исключить коллизии при подборке ключа, т.к. в Response 24 бита, а не 40; 40/24=2)
8. Прочитать в программаторе EEPROM
Ввести в программу Texas DST Calc
http://db.tt/1ZGzJn3JChallenge/Response как показано на рисунке
и нажать кнопку "BruteForce"
Программа будет подбирать ключ шифрования полным перебором.
Для перебора всех комбинаций на 4-х ядерном проце требуется около 120 суток (и это после глубокой оптимизации проги). Для ускорения можно запустить прогу на нескольких компах, разделив весь диапазон на несколько частей. Для этого в поле "CryptoKey" на каждом компьютере задать своё начальное значение.
Программа ведёт log- файл. Так что можно продолжать в разные дни (или в случае зависания продолжить с последнего проверенного ключа). Если программа запускается на рабочих серверах(компах), то можно поумерить её пыл в рабочие часы (см. группу "Idle")
В первый раз я запускал 16 задач на 7 компах. Ключ был найден на 5-ые сутки.
В результате оказалось, что младшие 2 байта в ключе = 0000. Если и на других Фордах так, то жизнь сильно упрощается- надо установить галочку "Reverse byte order"- в этом случае у меня ключ находится за 1.5 минуты )
Теперь остаётся лишь записать найденный ключ в EEPROM микроконтроллера (адреса 0003...0007- младщий байт вперёд).
Программу последнего пришлось тоже сильно оптимизировать, функция Texas Crypto написана полностью на ассемблере.
Первая версия вычисляла Response за 215 ms - когда уже "поезд ушёл".
Незначительная задержка (на 8 MHz уже меньше нельзя) не влияет на работу PATS
II Способ (чтение Challenge/Response, запись Cryptokey по последовательному каналу):
Понадобится программа ComSniff
http://db.tt/1ZGzJn3Jа также модифицированный вариант адаптера USB-COM на чипе Prolific PL2303 (один или два)
Диагностический адаптер своими силами. (сообщение #12220173)с дополнительным делителем на резисторах 10к и 3к
Вот примеры логов
Для записи Серийного номера транспондера в EEPROM по последовательному каналу можно с помощью любой терминальной программы послать
на вход RxD эмулятора после сброса(включения питания) последовательность байт:
50 7E XX XX XX
где XX XX XX - серийный номер - младший байт вперед
в подтверждение записи светодиод однократно мигнет длительностью 1 сек
Для записи Криптоключа транспондера в EEPROM по последовательному каналу можно с помощью любой терминальной программы послать
на вход RxD эмулятора после сброса(включения питания) последовательность байт:
50 7F XX XX XX XX XX
где XX XX XX XX XX - криптоключ - младший байт вперед
в подтверждение записи светодиод дважды мигнет длительностью 0.5 сек с паузой 0.5 сек