воскресенье, 30 сентября 2012 г.

Попытка угнать Вольво: epic fail.

Значит, жена укатила в Европы. Обычно я без жены очень сильно скучаю, но тут ещё лишился и мелкого сына, поэтому грусть и тоска моя помножилась в 2.71 раз (я не математик, поэтому, по-инженерному, больше склоняюсь к e вместо pi). От безысходности, было решено влезть в иммобилайзер Вольво и посмотреть, чо там, да как.

Значит, на этой картинке видно вольвовскую схему проводьёв в части, ответственной за иммобилайзер. Кроме того, видно сам модуль антенны иммобилайзера, а также проводья, которым суждено быть припаянным к модулю.


Центральный электронный блок, судя по всему, шлёт сигнал модулятору, который, собственно, модулирует этим сигналом опорную частоту, которая попадает на антенну RFID-чипа в ключе, тот чё-то там делает, и отвечает, модулируя модулированный сигнал. Приёмник антенны демодулирует дважды модулированный сигнал и шлёт ответ CEM'у.

Вот модуль с тремя проводьями, припаянными к ICK, IDS и земле:


По ICK, судя по названию, должен переть сигнал от CEM, а по IDS - демодулированный ответ от ключа. Для их подсекания нужен двухканальный осциллограф. К счастью, у меня есть ажно 4-канальный:


На предыдущей картинке, кстати, виден правый горный ботинок фирмы Keen, которым я застрял в дереве во время своих велосипедных покатушек, отодрал подошву, но смог самостоятельно подшить инструментом, купленным, в первую очередь, для ремонта кожанного вольвовского кресла. Ещё я этим же инструментом подшил резиновые китайские тапки тогда ещё беременной жены, которая поставила категорическое условие: или она рожает в этих тапках, или пусть весь мир пылает синим пламенем. И вообще, почему ещё ей мороженого с солёными огурцами никто не принёс? =)

Во время эксперимента ключ будет повёртнут стопицот раз, поэтому отключаем стартер, чтобы не посадить батарею, и топливный насос, чтобы не залить свечи:

Вот так вся эта байда выглядит:



Значит, CEM шлёт запрос к ключу, когда ключ вставляется в замок и поворачивается в позицию 2. Если ключ не вынимался, то в следующий старт движка код не считывается.

Вот осциллограф чё-то поймал:


К сожалению, полностью кодовая посылка CEM с ответом ключа в буфер моего двухсотдолларового карманного осциллографа (DSO230, 4 тысячи точек) не уместилась, поэтому с разборкой на логическом уровне я пролетел. Сеанс связи с ключём, судя по осциллограмме, не такой уж и примитивный: CEM шлёт несколько пакетов данных, ключ на них отвечает. Но если применить более мощный осциллограф, либо наваять решение на FPGA, то обойти защиту Вольво не особо сложно.

Но для этого нужно заранее знать код ключа, т.е. от того, что просто так выбить стекло, заменить модуль антенны иммобилайзера на свой, с проводьями и какой-нибудь приблудой, имитирующей ключ, толку особо не будет: нужно заранее знать, какие ключи прописаны в CEM.

Тот, кто в состоянии сломать эту систему, и так может  позволить себе покупать новую Вольво два или три раза в год. Поэтому Вольво и неугоняемые.

UPD: Залил в осциллограф логический анализатор и перехватил две сессии между CEM и ключиком. Анализатор сохраняет в памяти только переходы сигналов, поэтому вся сессия в 4% памяти укладывается. Данные сохраняются в VCD-файл, которые смотрятся GtkWave'ом:


Осталось расшифровать, прибабахать микроконтроллер и заводить без родного ключа.