Tesla в очередной раз у всех на устах: недавно Маск показал новую, более дешевую модель, и на нее тут же посыпались предзаказы. Тем временем старые модели интересны не только экологически сознательным автолюбителям, но и хакерам-умельцам. Автор сервиса Twelephone, который умеет делать звонки из Twitter, глава направления IoT в Citrix Крис Метью на днях запостил детальную инструкцию о том, как получить root-доступ к своей Tesla (если интересно, вот GitHub взломщика). Правда, взламывать придется и фигурально, и буквально, так что, если решитесь повторить эксперимент Криса, вооружитесь не только ноутбуком и сетевыми кабелями, но и отверткой.

hacked_small

Пару месяцев назад, бог знает зачем, но я решил взломать свою Tesla Model S. Моей целью было получить root-доступ к ее сенсорному экрану, известному как CID. Я провел два месяца в исследованиях и подготовке к этому проекту. Когда я уверился, что наконец все готово, то прихватил свои инструменты, ноутбуки и принялся за работу.

1. Получить доступ к боковой панели

Первый шаг – убрать небольшую боковую панель прямо за дверью со стороны водителя. Так мы получаем доступ к маленькому белому коннектору, который виден на фото:
service_connector

Он может выглядеть странно, но в основе своей это обычный Ethernet-кабель шестой категории с фирменным коннектором Tesla. К нему можно подключиться, просто взяв обычный сетевой кабель и подсоединив к нему соответствующий коннектор. Или найти подходящий на рынках б/у-электроники. Я использовал кабель, который сам сделал.
wire

Так что именно с помощью белого разъема я подключился к сети — и могу выполнить сам взлом. К несчастью, доступ спрятан за VPN, куда требуется пароль, которого у меня не было.

2. Снять нижний кусок панели

lower_dash_cover

После этого мне пришлось снять большой кусок передней панели под рулем управления. Она держалась на 9 защелках и мне пришлось повозиться, чтобы их отсоединить. Наконец, получилось.

3. Снять решетки обдува

vents_removed_censored

Боже, это заняло целую вечность. Мне пришлось свинтить большую панель, которая покрывает доску приборов, чтобы добраться до болтов, на которых держатся вентиляционные решетки. Разбирая переднюю панель, нужно быть осторожным и стараться ничего не погнуть, одновременно пытаясь снять ее и получить доступ к двум винтам. После этого остается только снять крышку приборной панели и вытащить решетки обдува.

4. Снять приборную панель

ic_cover_vents_removed

Приборную панель тоже нужно снять. Для этого требуется приподнять верхнюю крышку, чтобы добраться до двух верхних болтов. Честно, я сделал это фото, после того, как вывинтил нижние болты, потому что мне было стремно приниматься за верхние.

ic_removed

Хотя в результате мне удалось и их вывинтить. На этом этапе вы, должно быть, удивляетесь, за каким чертом это все нужно и как это поможет разлочить белый коннектор. Скоро увидите.

5. Получить доступ к кабелю приборной панели

IC_connector_censored

И вот наш золотой пропуск: еще один коннектор, такой же как белый. Это – кабель, ведущий к сенсорному экрану (CID). Приборная панель подсоединяется к CID через веб-интерфейс, чтобы получать апдейты по вещам типа навигации или музыки, а также отсылать команды вроде открытия крыши.

ic_factory_mode_censored

Мне нужно было отсоединить кабель от приборной панели и подключить туда кабель, который сделал я. Это позволило мне перевести машину в “заводской режим” (Factory Mode). Как только и это было сделано, я отключил свой ноутбук от машины и подключил кабель обратно к приборной панели.

Если вы подержите панель в заводском режиме, вы сможете перейти к экранам разработки (Developer Mode). Возможно, я еще напишу пост о том, как именно это сделать. Но я не могу удержаться, чтобы не добавить это фото: на нем изображен экран температурного контроля, он – безусловный мой любимчик.

factory_thermal_censored

6. Получить root-доступ к модели S

Машина сейчас в заводском режиме, так что белый разъем, который мы нашли сбоку двери водителя, разлочен и ждет, когда я к нему подключусь. Подключаю свой ноутбук и запускаю скрипт, который я написал заранее: obtain_root.
hacked

Далее происходит секретный процесс, который в конце-концов дает мне подключение к сенсорному экрану с root-правами. Я проделал некоторые волшебные манипуляции по настройке, чтобы в будущем не проходить каждый раз через всю эту фигню, чтобы получить доступ к машине. Затем я отключился от белого кабеля, отключил заводской режим, перезапустил машину и попривинчивал обратно все панели и крышки, которые снимал ранее. Все. Взлом окончен!

После взлома

У меня появился root-доступ и что? Я много чего запланировал, много исследовал. Ждите новых записей о моих находках.