Кратко изложение на речта:
За много от нас колата е една от най-скъпите покупки, които някога ще направим. В свят, в който всичко е свързано, естествено е да искаме да управляваме колата си дистанционно: да получаваме напомняния къде сме я паркирали, да проверяваме дали сме забравили да заключим вратите или дистанционно да стартираме двигателя, за да загреем или охладим интериора в зависимост от времето на годината.
Има много производители, предлагащи опционални алармени системи, които осигуряват това удобство и спокойствие. Но доколко можем да се доверим на доставчиците на тези системи за защита на достъпа до нашите автомобили в цифровата област? В този разговор Jmaxxz ще говори за това, което е открил, когато е разгледал една от тези системи.
Jmaxxz е известен с работата си със системите за интелигентен дом August Smart Lock (презентация на DEFCON 24 „Backdooring The Frontdoor“). През последните години фокусът му е върху IoT устройствата. Той участва в секциите „IoT village zero day“ на DEFCON 24 и DEFCON 25 и най-накрая реши, че е време да проучи продукт от вторичния автомобилен пазар – дистанционен стартер (наричан по-нататък RS).

И така, казвам се J-Max, програмист съм по професия и хакер по призвание. Занимавам се с всички неща, свързани със заключване, и по време на този разговор ще чуете много твърдения, които изразяват единствено моето мнение и нямат връзка с мненията на моите минали, настоящи и бъдещи работодатели. Както вероятно разбрахте, ще говорим за автомобили, а именно за дистанционни стартери и алармени системи. Нека започнем с предистория, която е важна в този контекст, тъй като мнозина смятат подобни системи за ненужен лукс.
Така че там, където живея, е доста студено и приятелят ми страда от състояние, наречено синдром на Рейно. Студът предизвиква спазъм на кръвоносните съдове на ръцете, притокът на кръв към пръстите рязко намалява и се появяват признаци на измръзване, включително некроза на тъканите. Слайдът показва как изглежда обикновено.

Миналия ноември все още не бях решил какво да й подаря за Коледа. Така тя се прибира у дома от летището разстроена, защото колата й така и не загря на път за вкъщи. В този момент разбрах, че ще й дам система за дистанционно стартиране на двигателя и започнах да търся най-добрия вариант. Оказва се, че пазарът на дистанционно стартиране е доста голям, като много производители не предоставят достатъчно информация за своя продукт.
Те не ви казват как да инсталирате системата или какви инструменти да използвате, за да програмирате устройството. Това е проблем за мен, защото това е моята кола, моето дистанционно стартиране и трябва да имам достъп до тези инструменти. Така че потърсих още малко и намерих фирма от Канада, Fortin, която произвежда такива стартери и с готовност предоставя цялата необходима документация. Спрях се на този продукт и започнах да търся подходящо дистанционно управление. Факт е, че ако използвате стандартно дистанционно управление с дистанционен стартер, тогава неговият обхват на действие ще бъде ограничен до обхвата на стандартното дистанционно управление. Предлагат се резервни дистанционни, които работят в обхват от половин миля до една и половина мили. Според мненията на потребителите това е рекламен трик, тъй като в действителност разстоянието е много по-малко. Това е проблемът, защото приятелката ми трябва да запали двигателя на колата си на паркинга на летището веднага щом слезе от самолета, което е на около половин миля.

Така че би било чудесно, ако можеше просто да извади телефона си, да отвори приложението и да натисне Старт. Намерих продукт на трета страна, наречен MyCar, който е напълно съвместим със стартера Fortin. Това е малък ключодържател със SIM карта и GPS приемник, който можете да поставите в колата си и да го свържете към дистанционното стартиране. След това с помощта на мобилно приложение можете дистанционно да стартирате двигателя, да отключите ключалките и други подобни.

Мислех, че това ще бъде страхотно: веднага след като самолетът кацне, моята приятелка може да запали двигателя и докато стигне до колата, кабината вече ще е топла.
Така че нека поговорим малко за това как работят дистанционните стартери. За да направите това, първо трябва да разберете как стартира двигателят на автомобила. До средата на 2-те години автомобилният стартер беше традиционна механична брава в комбинация ключ-превключвател. Трябваше да поставите ключа и да го завъртите, за да завършите електрическата верига. Тогава брави с надпис „имобилайзер“ станаха популярни в Съединените щати. Звучи сложно, но това е просто електронна брава. И така, имате механична брава, която е ключът към електронна брава, която от своя страна е транспондер и съдържа някаква информация, която може да бъде прочетена. И докато не отворите електронната брава, колата ви няма да запали. От дясната страна на плъзгача виждате XNUMX ключа: левият е за имобилайзера, а десният е за обикновения ключ за запалване. Той просто управлява механичните компоненти на ключалката, докато левият ключ отключва електронната ключалка, която ще стартира двигателя на автомобила.

Защо ви разказвам за това? Дистанционното стартиране работи чрез имобилайзера. На следващия слайд виждате диаграма за свързване на устройството Fortin EVO One към имобилайзера - долу вляво виждате двойка контакти, обозначени като IMO. Горе вдясно на диаграмата виждате два реда: CAN LOW и CAN HIGH. Това са контакти за свързване към автомобилната CAN шина. Причината, поради която дистанционните стартери са свързани към CAN шината, е да се намалят разходите за инсталиране, тъй като по време на инсталирането се използват по-малко връзки. Ако дистанционният стартер може да чете данни от CAN шината или да изпраща команди през CAN шината, това намалява времето за инсталиране на системата за дистанционно стартиране на двигателя.
В горния ляв ъгъл на диаграмата има цял куп GPIO, които са свързани с управление или четене на информация за машината. Например, искате светлините да мигат или да прозвучи клаксон, когато натиснете бутона за заключване. Неща като това могат да се контролират с помощта на тези GPIO. В долния ляв ъгъл на диаграмата можете да видите голям, тромав конектор - това е интерфейсът, който заобикаля механичната ключалка. Това означава, че не е необходимо да поставяте и завъртате ключа в запалването, защото този интерфейс позволява на релето на системата за дистанционно стартиране да комуникира директно с електрическата ключалка.

Следващите слайдове показват етапите на инсталиране на дистанционен стартер. Състои се основно от премахване на капака на кормилната колона, инсталиране и свързване на DS блока. Изглежда доста страшно, но е лесно да се направи.

Самите дистанционни управления се свързват към това, което Фортин нарича връзка за данни. Системата използва собствения протокол за физически трансфер на данни UART - универсален асинхронен предавател, който обменя данни със скорост от 9600 бода. Дистанционният стартер Fortin просто се свързва чрез UART шина към двете дистанционни управления, които виждате на слайда.

След като инсталирах DS, си помислих как такива устройства могат да повлияят на безопасността на автомобила. Очевидно DS трябва да заобиколи имобилайзера, така че колко безопасно е това по отношение на възможността за кражба или прихващане на контрола на автомобила? Това се отнася не само за предаването на данни през клетъчната мрежа, но и за самия сигнал за дистанционно стартиране. Така че започнах да търся в интернет информация за производителя относно използвания протокол за пренос на данни и се озовах във форуми, където хората писаха, че Fortin отказва да предостави този протокол. Една от причините: „Ние не разпространяваме такава информация, защото EVO не е играчка за аматьори, а е предназначена за използване от професионалисти.

Тъй като съм нещо като професионалист, реших да създам моя собствена машина на десктоп. Сдобих се с втори системен блок EVO, сглобих платка, която представляваше колата, добавих ключове за симулиране на запалването, бутон за педала на спирачката и цял куп светодиоди за показване на различни състояния.

Обединявайки всичко това, свързах устройството за наблюдение на връзката за данни FTI и започнах да събирам тези данни. Първоначално изглежда нещо като слайда и не е съвсем ясно какво се случва тук. Но ако се вгледате внимателно, можете да кажете, че тук определено има някаква структура.

Моля, обърнете внимание, че винаги когато натисна бутон на дистанционното управление, съобщението, което антената изпраща към моя DS, винаги започва с 0C и завършва с 0D. Така че, ако просто разделим полученото, като приемем, че 0C е началото и 0D е краят, ще завършим с нещо подобно.

Тук вече има някаква структура, която се вижда ясно, така че можете да разберете какво се случва. Прекарвайки време в проследяване какво съобщение се появява след натискане на конкретен бутон, успях да създам таблица с команди, всяка от които съответства на конкретно действие. Тоест, когато натиснете бутон на дистанционното управление, антената изпраща команда към модула за дистанционно стартиране, която изглежда така.

Ето как изглежда типичната структура на екипа.

Когато натиснете бутон на дистанционното управление, антената изпраща такава команда към дистанционното стартиране. Той се събужда от байт 0C, последван от 2 байта, които според мен представляват посоката на предаване. Това е интересно, защото UART вече има посока на сигнала, така че маркирах тези байтове като "боклук", просто ги третирайте като константа. Това е последвано от един байт, указващ командата, която потребителят би искал да изпълни. Това може да е заключване на врати или отварянето им, изключване на алармата и т.н. Като цяло, всичко, което искате да направите дистанционно, е свързано с тази команда. Полезният товар FF FF F1 е адрес или идентификатор, който идентифицира отдалечената антена, от която идва съобщението. Ако DS модулът не разпознае идентификатора, командата се игнорира. Ако DS приеме идентификатора, започва многоетапна процедура, която включва проверка за наличие на ключ в контакта, включване или изключване на двигателя, натискане на педала на спирачката и др. Всъщност този процес няма голямо значение, просто устройството научава ID в този момент.
В края на съобщението има байт с контролна сума и байт, показващ края на командата. Сега, след като разбираме как работи протоколът, какво можем да направим по въпроса? Имам няколко видеоклипа по темата. За съжаление по някаква причина видеото е без звук, така че ще ви кажа какво се случва на екрана. Вляво от кормилната колона на корпуса на арматурното табло има бяла кутия, която съдържа електроника с фърмуер Particle.IO, който разбира протокола Fortin. Проводникът със син връх е антената. Това нещо ми позволява да взаимодействам с устройството за дистанционно стартиране от вътрешността на колата и да виждам какво се случва на екрана на лаптопа.

Така че изпращам командата за заключване и отключване на колата, но тя не работи, защото DS не знае за тази антена. Както вече споменах, това е просто UART, чието свойство е да поддържа така наречената двупосочна комуникация, благодарение на която можете да получавате дистанционно информация за състоянието на автомобила. Например, ако двигателят е стартиран или спрян физически, DS модулът ще изпрати съответно съобщение до антената на дистанционното управление. В този случай съобщението ще съдържа адреса на същата антена.

Проблемът е, че комуникацията се осъществява чрез UART протокола и всеки, който се свърже към UART шината, може да види адреса, на който е изпратено дадено съобщение, така че моят фърмуер има способността да клонира адреса на съществуваща антена, което правя със съответната команда.

За да генерирате съобщение, трябва само да отворите вратата на колата. Както можете да видите, DS изпраща съобщение до антената, че вратата е била отворена и алармата веднага се включва.

За да изключа алармата, изпращам командата „отключване“, след което звукът на алармата се изключва и колата се отключва. Ще трябва да повярвате на думата ми, тъй като не успяхме да възпроизведем това видео със звук. Нека опитаме да пуснем видеото отново.

Е, звукът се появи (бележка на преводача: на екрана се възпроизвежда същото видео със звук). И така, видяхте как изпратих DS команда и включих алармата, всичко без ключ. Сега нека се опитаме да запалим колата по същия начин; за да направите това, гледайте следното видео.
Обикновено, ако просто напишете "старт" и опитате да запалите двигателя, няма да работи. Причината е, че това е автомобил с ръчна скоростна кутия и системите за дистанционно стартиране имат специална процедура за такива автомобили. В този случай трябва да натиснете бутона за дистанционно стартиране, докато ключът е в контакта и двигателят работи. След това можете да извадите ключа, да излезете от колата, да затворите вратата, след което DS ще изключи двигателя и ще заключи вратата. Това се прави, за да не реагира колата на дистанционно стартиране на двигателя по време на шофиране, защото това е опасно. Това обаче не е пълна защитна функция. Това е доста лесно да се докаже, като се погледне устройството за дистанционно стартиране на EVO. Виждате този жълт кръгов проводник, който е проектиран да работи с ръчна скоростна кутия. Ако се среже, този блок може да се използва за кола с автоматична скоростна кутия. Този дизайн на устройството ви позволява да не използвате специални настройки при инсталиране на DS в автомобили с различни видове трансмисия.

Така че системата не отговори на командата "старт", така че ще върна този блок на място и просто ще прережа този проводник, за да прекъсна връзката. Сега, ако повторите командата "старт", ще прозвучи звуков сигнал и индикаторите за състоянието на системите на автомобила ще светнат на арматурното табло, както се случва, когато ключът е поставен в ключалката.

В момента имаме кола, която можем да запалим дистанционно без ключ в контакта, но DS модулът не е всичко, което ни трябва. При нормални обстоятелства все още няма да можете да потеглите с кола, стартирана дистанционно, но нека все пак опитаме.
За да деактивирате заключването на волана, трябва да поставите обикновен ключ в ключалката за запалване, който няма транспондер. Както можете да видите, достатъчно е да преместите ключа в позиция преди стартиране на двигателя и воланът на Subaru Impreza започва да се върти напълно свободно.
Ако обаче нямате ключ, тогава, когато натиснете педала на спирачката, колата ще спре. Много лесно е да заобиколите това ограничение. Трябва да разберете как колата казва на дистанционното стартиране, че спирачката е натисната. Виждате няколко многоцветни порта в задната част на корпуса на модула EVO - тук ще бъде свързан кабелът от CAN шината. Достатъчно е просто да извадите този кабел от устройството DS след дистанционно стартиране на автомобила и той няма да реагира на натискане на педала на спирачката. Тъй като това устройство се намира под капака на кормилната колона, давам команда "старт" през лаптопа, колата пали, отварям вратата, излизам от колата и премахвам CAN bus конектора от EVO устройството. Както можете да видите, двигателят на колата работи, но все още нямаме ключ в запалването.
Сега, ако натиснете педала на спирачката, нищо няма да се случи, защото EVO не знае, че е натиснат. След това мога да седна зад волана, да натисна спирачката, да преместя скоростния лост в положение „Шофиране“ и колата тръгва. Всичко това става без никакъв ключ.
21:40

Малко реклами 🙂
Благодарим ви, че останахте с нас. Харесвате ли нашите статии? Искате ли да видите още интересно съдържание? Подкрепете ни, като направите поръчка или препоръчате на приятели, , уникален аналог на сървъри от начално ниво, който беше изобретен от нас за вас: (предлага се с RAID1 и RAID10, до 24 ядра и до 40GB DDR4).
Dell R730xd 2 пъти по-евтин в центъра за данни Equinix Tier IV в Амстердам? Само тук в Холандия! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - от $99! Прочети за
Източник: www.habr.com
