Гейтвей на колесах
В данной статье пойдет речь о применении автомобильных гейтвеев на примере Toyota RAV4 4-го поколения. Этот автомобиль выбран неспроста: гейтвей на нем появился в середине жизненного цикла, поэтому можно провести наглядное сравнение до/после в рамках одной модели. Также данный блок оказался сравнительно простым, без экзотических интерфейсов: CAN и только CAN.
Статья поможет ответить на следующие вопросы:
Мешает ли гейтвей прослушивать трафик через разъем OBD2?
Как внедрение гейтвея повлияло на процедуру диагностики?
Как внедрение гейтвея повлияло на загрузку данных, например, обновление калибровок?
Что же такое автомобильный гейтвей?
Гейтвеем в автомобиле называют центральный узел сети, который отвечает за надежный и безопасный обмен данными между функциональными доменами автомобиля:
Протоколы при этом могут быть самыми разными: CAN, LIN, FlexRay, Ethernet и т.д.
К основным возможностям гейтвея относят:
фильтрация трафика (изолирование сетей от уязвимых или избыточных данных, например изоляция диагностического разъема OBD2 от прикладных данных);
маршрутизация прикладных данных (обеспечение обмена «рабочими» данными между блоками автомобиля, например: обороты коленвала, состояние подушек безопасности и т.д.);
маршрутизация диагностических данных (обеспечение надежного соединения между диагностическим оборудованием и диагностируемым блоком);
трансляция протоколов (например, преобразование и передача данных из CAN в LIN и наоборот).
К расширенным возможностям можно отнести:
обнаружение вторжения (например, появление подозрительного трафика на CAN-шине двигателя с целью обхода иммобилайзера);
обновление блоков (например, с помощью OTA, с последующей перезагрузкой и проверкой состояния блока);
хранение сертификатов и ключей автомобиля (например, для безопасной работы телематики).
Гейтвеи становятся умнее с каждым новым поколением автомобилей и выполняют все больше функций, поэтому этот список постоянно растет.
До появления гейтвеев в явном виде, часть их функций по организации работы сети могли брать на себя другие модули, например блок комфорта. Кроме того, даже при наличии гейтвея в автомобиле могут существовать участки сети, недоступные ему напрямую, а, например, только через блок управления двигателем.
Конкретный пример: Toyota
Чтобы перейти от общего к частному, изучим главного героя статьи поближе. Это деталь с партномером 89111-42020, компактная пластиковая коробочка с одним разъемом на 24 пина. Произведем вскрытие, чтобы увидеть, что у нее внутри:
На борту оказались микроконтроллер uPD70F4178 фирмы Renesas и high-speed CAN трансиверы TJA1049 фирмы NXP Semiconductors. Согласно информации из даташита, uPD70F4178 может использовать до 6 CAN шин. И действительно, на плате можно насчитать все 6 трансиверов, что многовато, т.к. RAV4 использует только 4 из них, но позже мы поймем, почему их столько.
Пинов у блока не так много, поэтому на основе электросхем можно быстро восстановить распиновку гейтвея:
Пины CAN с буквенным индексом — терминирующие, там просто резисторы.
Пользуясь распиновкой и остатками проводки, запитываем гейтвей на столе и пробуем поговорить с ним по диагностическому протоколу. Чтобы это сделать, нужно знать два адреса: по какому отправлять запрос и по какому получать ответ. На это ушло некоторое время, т.к. ни один адрес из распространенного диагностического диапазона 0x700 — 0x7FF не подходил, блок продолжал упорно молчать. Все остальные возможные 11-битные адреса тоже не давали результатов. Ну раз это гейтвей, то может быть он использует расширенные 29-битные адреса для диагностики? Можно попробовать перебрать, но и адресов там гораздо больше.
Чтобы не тратить время на перебор, провернем следующий трюк — притворимся автомобилем и пообщаемся через CAN шину с диагностическим ПО Techstream. После нескольких попыток узнаем, что правильный адрес запроса — это 0x750 и 0x5F в нулевом байте, то есть обмен выглядит так:
где 0x758 — это адрес ответа. Один байт полезных данных всегда занят значением 0x5f, снижая полезную нагрузку кадра.
Это любопытный момент, потому что обычно утилиты для обнаружения диагностируемых блоков не предполагают наличие дополнительного байта адресации.
Они работают следующим образом: в пределах выбранного диапазона адресов рассылаются UDS запросы DiagnosticSessionControl (0x10) с переключением в defaultSession (0x01), т.к. это самый базовый и относительно безобидный запрос, и ожидается ответ. Далее предполагаются три варианта развития событий: 1) блок откликнется подтверждением операции (0x50), 2) блок откликнется отказом (0x7f), 3) блок не откликнется совсем. В случаях 1 и 2 адрес отклика может потенциально скрывать за собой искомый блок, ну а в случае 3 адрес инкрементируется и поиски продолжаются.
Наконец-то заполучив адреса, переберем все возможные значения сессий для запроса DiagnosticSessionControl (0x10) и посмотрим на отфильтрованный результат:
где 0x01 — defaultSession, 0x02 — programmingSession; 0x5f попадает в диапазон vehicleManufacturerSpecific, а 0x60 и 0x70 — в диапазон systemSupplierSpecific.
Проделаем тоже самое для сервиса SecurityAccess (0x27):
Обнаружены 3 действующих варианта запроса, каждый из который возвращает seed длиной в 16 байт. Посылка рандомных ключей разной длины дает понять, что длина ключа тоже 16 байт.
Что скрывается за этими сессиями и уровнями доступа — пока неинтересно, но мы ими еще займемся.
Занимательная картография
А как выглядит гейтвей в естественной среде обитания, в автомобиле?
Настоящего, физического RAV4 у нас нет, поэтому окунемся с головой в электросхемы Toyota. Как упоминалось в начале статьи, RAV4 4-го поколения пережил внедрение гейтвея приблизительно в середине своего существования. Этот переход хорошо видно, если сравнить электросхемы для автомобилей выпущенных до и после октября 2015 года.
Примечание: изначальные схемы упрощены для наглядности; изображены все возможные блоки, некоторые из которых не устанавливаются вместе.
Начнем с анализа исходной системы (до октября 2015 года):
На схеме видно, что большинство блоков автомобиля подключены к одной шине, которая ведет к диагностическому разъему DLC3 (Data Link Connector), он же OBD2. Есть несколько изолированных участков сети, например, соединение между блоком управления двигателем (ECM) и трансмиссией. За блоком Main Body ECU спрятана еще одна небольшая сеть, отвечающая за комфорт и камеру заднего вида. Правый блок контроля слепых зон (Blind Spot Monitor Sensor RH) изолирован от основной шины и общается с ней через левый блок контроля слепых зон (Blind Spot Monitor Sensor LH).
Переходим к следующей схеме, уже с гейтвеем (после октября 2015 года):
Теперь сеть разбита на 4 отдельных домена, каждому из которых можно присвоить свое имя, на основании его функций:
диагностический (черного цвета), к которому подключается диагностическое оборудование через разъем OBD2;
основной (синего цвета), внутри которого находятся критически важные блоки управления двигателем, трансмиссией и кузовной электроникой;
ассистентов (желтого цвета), объединяет сенсоры, радары и камеры, которые помогают водителю;
инфотейнмента (красного цвета), содержит в себе навигацию, головное устройство, и модуль телематики.
Поменялась не только общая структура сети, но и количество ее узлов. Был добавлен блок телематики и целая группа блоков помощи водителю, которые устанавливались только при наличии гейтвея, и у этого есть веские причины.
Телематику и головное устройство обычно изолируют, так как они подвержены удаленной атаке, которая потенциально может привести к контролю над некоторыми функциями автомобиля. Пример, ставший уже классическим — взлом Jeep Cherokee в 2015 году.
А вот системе ADAS (Advanced Driver Assistance System) отводят отдельный домен, поскольку ее основные узлы — это камеры и разнообразные датчики, генерирующие большой поток данных, который нужно обрабатывать в реальном времени. Большинству модулей автомобиля этот трафик не нужен и только нагружает сеть, поэтому его можно без проблем вынести «за скобки».
В принципе, на этом можно было бы переходить к следующему этапу, но не помешает вспомнить о двух «лишних» трансиверах, которые были обнаружены в прошлом параграфе. Как оказалось, блок с такой же начинкой можно найти и в других автомобилях производителя.
Например, в Lexus RX 4-го поколения, где модуль гейтвея заведует уже всеми 6-ью шинами. Разнообразной электроники там тоже побольше — люкс, все-таки:
Сегменты сети, по порядку:
диагностический (красного цвета);
двигателя (зеленого цвета);
инфотейнмента (голубого цвета);
рулевого управления, ходовой части и тормозов (синего цвета);
комфорта и кузовной электроники (черного цвета);
ассистентов (бежевого цвета).
При этом за кадром осталась подсеть головного устройства «AVC-LAN», которая имеет отдельную схему в документации Lexus.
Обычно автопроизводители считают каждый цент и выгрызают все опциональные компоненты, но конкретно в этом случае Toyota не экономила и запаивала их даже там, где они не используются. Скорее всего в целях унификации или упрощения технологии производства.
Таблицы фильтрации: дубль первый
Результаты первых экспериментов показали, что модуль относительно несложный и просто выполняет фильтрацию на основе адреса принятого сообщения.
Теперь, когда известна распиновка гейтвея и подключаемые к нему домены, можно приступить к нудному, но любопытному процессу — перебору всех адресов для всех возможных сочетаний доменов. Так мы получим искомые таблицы фильтрации.
Всего имеется 4 домена, которые образуют 12 возможных пар:
Примечание: далее ради компактности обозначения доменов будут применяться сокращения: DIAG — диагностический, MAIN — основной, ASSI — ассистентов, INFO — инфотейнмента.
Для каждой пары нужно перебрать все 2048 (0x800) возможных адресов, это число обусловлено размером 11-битного CAN ID. Для каждого сочетания подключаем два CAN-интерфейса, один из которых будет передавать сообщения, а второй — принимать. Адреса «просеянных» сообщений вынесем в результирующую таблицу.
Первая таблица справедлива для всех сочетаний, в которых есть домен DIAG , то есть для всех случаев, когда к автомобилю подключено диагностическое оборудование через разъем OBD2: ASSI->DIAG , MAIN->DIAG , INFO->DIAG , DIAG->ASSI , DIAG->MAIN , DIAG->INFO .
Пропускаются только определенные сообщения с адресами из диагностического диапазона (0x700 — 0x7FF). Таблица содержит адреса и запросов и ответов, то есть может работать в обе стороны, и одинакова для всех доменов. Гейтвей не мешает диагностическим сообщениям, он для них прозрачен.
Остальные таблицы спрятаны под спойлер, чтобы не перегружать статью.
Дальнейшие таблицы регулируют обмен только собственных модулей автомобиля, без какого либо оборудования, подключенного к разъему OBD2.
Но что интересно, они все равно содержат диагностический диапазон, причем без пробелов. Любой модуль может отправлять в любой домен диагностическое сообщение и беспрепятственно получить ответ.
Выглядит это не очень безопасно. Давайте представим, что хакер смог заполучить контроль над модулем телематики из домена INFO . Поскольку правила фильтрации никак не ограничивают рассылку диагностических запросов из этого домена во все остальные, у потенциального злоумышленника открываются широкие просторы для творчества. Например, он может начать рассылать команды hard reset по всем адресам, погружая электронику автомобиля в хаос.
Таблица для пары MAIN->ASSI :
Таблица для пары INFO->ASSI :
Таблица для пары ASSI->MAIN :
Таблица для пары INFO->MAIN :
Таблица для пары ASSI->INFO :
Таблица для пары MAIN->INFO :
Пока все выглядит очень гладко, если бы не один момент: отсутствие адресов 0x001 и 0x002 при работе с диагностической шиной (самая первая таблица параграфа).
Дело в том, что для заливки калибровочных данных Toyota использует свой очень специфичный протокол, подробно описанный в популярной работе Adventures in Automotive Networks and Control Units.
Краткая выдержка протокола из этой работы
Адреса 0x001 и 0x002 должны быть указаны в правилах фильтрации, иначе было бы невозможно калибровать автомобили через диагностический разъем, например, во время отзывных кампаний.
Но где же они в таблицах?
Погружение в CUW
Чтобы разобраться с этим вопросом, вернемся к обнаруженным ранее сессиям и уровням доступа, вполне вероятно, что среди них кроется ответ. Сами по себе номера этих сервисов ничего не говорят, поэтому пришло время расковырять утилиту для калибровки CUW в поисках подробной информации.
CUW (Calibration Update Wizard) — это отдельная программа, входящая в состав диагностического комплекса Techstream от Toyota. Ее основная задача — это загрузка калибровочных данных в блоки автомобиля через диагностический интерфейс Toyota или другой J2534-совместимый интерфейс. Размер исполняемого файла программы всего несколько мегабайт и беглый просмотр показывает наличие большого количества текстовых символов и отладочных строк.
Открываем дизассемблер Ghidra и скармливаем ей CUW.
После пристального поиска находим некую сущность CCentralGWModeChanger в состав которой входят функции CollateSeedKey() и ChangeMode() , которые вызывают особый интерес. Давайте посмотрим, что у них внутри:
Хорошо видно, как буфер подготавливается к отправке, сначала в него загружаются идентификаторы сервиса — 0x27 для запроса seed и 0x10 для смены сессии, а далее мы видим уже знакомые байты 0x02/0x60 и 0x4f/0x51 соответственно. Выбор между этими байтами происходит по определенному условию.
Дальнейший поиск привел к двум функциям-оберткам ChangeToReprogMode() и ChangeToReprogGWMode() , которые и контролируют это условие, передавая флаг в качестве аргумента в CollateSeedKey() и ChangeMode() :
Блок комфорта в Пассат Б5
Автор: Александр Хряк 18.05.2020 Время прочтения: 4 минут 22 482 просмотров комментария 4
Многие люди покупают иномарки с блоком комфорта . Это специальный агрегат, имеющий похожие логические схемы и обеспечивающий набор опций при определенных действиях собственника: включает свет в авто, отвечает за двери, правильную работу подъемника стекла и так далее. Блок комфорта Фольксвагена Б5 состоит из грамотно созданной схемы, с защитой от скачков напряжения, переполюсовки и импульсных помех.
Где находится блок комфорта на Пассат б5
Итак, где находится блок комфорта пассат б5, и как его найти:
Если коротко, то вначале надо снять накладку по левому борту (там, где ручка открывания капота), после этого убрать подставку для левой ноги, затем потребуется потянуть вверх накладку порога (она на защелках), и в конце необходимо отогнуть ковер в районе ног и там будет проводка (скрутки) и сам блок! Расположение у него не самое лучшее, но найти можно.
Функционал
Стандартный список функций блока комфорта vw passat b5:
- освещение автосалона;
- удаленное открывание и закрывание замка;
- подъемники стекла;
- сигнализация;
- противоугонного типа системы;
- регулирование зеркал;
- подогрев заднего станка;
- активация световой техники при включении или отключении охранного режима.
Важно! Водитель Фольксвагена может перекодировать параметры под удобное для себя меню.
Электрическая схема и распиновка блока комфорта
Распиновка Пассат Б5:
23-х контакты.
23/1. Звуковое оповещение открытия водительской двери, выход.
23/2. Кнопка открытия багажного отделения E188, вход.
23/3. Не эксплуатируется, выход.
23/4. Открытие задней дверцы от Е165 (лишь универсал), вход.
23/5. Редко используется, вход.
23/6. Автошина CAN-L.
23/7. Концевой выключатель багажного отделения F5, вход.
23/8. Система управления люком на J245, выход.
23/9. Автошина CAN-H.
23/10. Концевой выключатель багажного отделения, вход.
23/11. К-лайн, диагностические манипуляции.
23/12. Управление люком на J245, выход.
23/13. Открытие багажного отделения личинкой в багажнике F218, (лишь седан), вход.
23/14. Не применяется, вход.
23/15. Сигнализатор скорости от устройства V-Signal, вход.
23/16. Сигнал активации подогрева зеркал от регулятора расположения зеркал E231, вход.
23/17. Звуковое оповещение наличия ключа, клемма 86s, вход.
23/18. Система управления актуатором замка багажного отделения V53, выход.
23/19. Не эксплуатируется, вход.
23/20. Питание на лампочки, выход.
23/21. Земля на арматуру освещения, выход.
23/22. Клеммная колодка 30 через предохранительную систему S14, вход.
23/23. Клеммная колодка 31, масса.
15 Разъем для контактов.
15/1. Клеммная колодка 31, масса (разрыв — выключение основной сигнализации).
15/2. Средства измерения объема G273 и G274, вход.
15/3. Шина LIN на автономного типа сирену H12.
15/4. Не эксплуатируется.
15/5. Вход концевого выключателя капота F120, вход.
15/6. Не применяется.
15/7. Клеммная колодка 31, масса.
15/8. Блокирование стандартной сигнализации на реле J433, выход.
15/9. Выключающее устройство внутренних средств измерений объема E267, вход.
15/10. Антенна радиоприемника, вход.
15/11. Сирена автосигнализации H8, выход.
15/12. Клеммная колодка 30 на питание сирены H8 через, вход.
15/13. Клемма 30 на питание сигналов поворота, вход.
15/14. Поворотник слева, выход.
15/15. Поворотник справа, выход.
Распиновка вполне понятная. «Проблемными» проводками в жгуте БК считаются:
23/20 — подсвечивание салона (красно-черный)
23/6 и 23/9 — CAN автошина (оранжево-коричневый)
Как «вылечить» блок комфорта
Если вам достался Фольксваген б5 1998 года с неисправностями, которые связаны именно с блоком комфорта, то есть выход.
Какие проблемы можно решить с помощью инструкции:
- Освещение в автосалоне.
- КАН шина.
- Плавная деактивация освещения и подсветки.
- Подтверждение открытия/закрытия авто светом.
- Проблемы с акселератором.
Описание процедуры ремонта:
Сначала доберитесь до расположения блока комфорта Volkswagen, потом снимите: накладку порога наполовину, накладку площадки для ног, обшивку стойки, отогните ковролин с звукоизоляцией. За освещение здесь отвечает провод красно-чёрного цвета 20 пин большого разъёма, если он обрезан, видимо это сделали из-за короткого замыкания этой цепи, проблема возникла в плафоне освещения «бардачка», рассеиватель расплавила лампа (вывод ставьте светодиоды, а не лампочки).
Если с CAN — шиной что-то не так, возможно, сгнило место соединения (расположения) нескольких проводков в жгуте идущему к БК, ведь они отвечают за нее.
В первом и втором случаях проблема решается высококачественной пайкой, герметизацией пайки и термической усадкой.
В случае плавного отключения освещения в салоне, виновник 21 пин разъёма, наверняка, он сгнил именно в корпусе разъёма на проводке, вылечить можно припайкой нового.
Если появились проблемы с подтверждением открытия и закрытия транспорта, значит сгнил красный проводок в области протыкания изоляции. Сначала нужно вырезать гниль, а потом провести лечение паяльником и термоусадкой и небольшим куском провода.
В случае с педалью газа (если загорается спираль, и нет реакции на нажатие хотя бы один раз) тоже можно решить проблему. Если нет времени на ремонт, может помочь выключение зажигания.
Если вы готовы к «лечению», перелопатьте всё саму педаль, проверьте состояние дорожек, усиков внутри и разъем идущий из салона. Возможно, причина кроется в окислении.
Последовательный процесс замены реле на БК:
- Для начала откройте крышку блока, которая находится сзади, для этого поджимайте контакты, чтобы вытащить плату.
- Прозвоните контакт, и после выявления неисправности, переходите к замене детали.
- Уберите ножиком лак с контактов реле, смотрите не переусердствуйте.
- Обработайте флюсом контакты, и запаяйте все.
- Уберите все олово посредством отсоса.
- Выньте нерабочее реле, установите новое и запаяйте его осторожно.
- Уберите проспиртованной тряпкой остатки флюса, не используйте воду.
- Соберите данный БК в обратной последовательности.
- Установите его в машину.
Важно! Пользователи, пожалуйста, запомните, если блок комфорта был заменен, потребуется «обучить» ключи, чтобы они распознавали автомобиль. Подобную процедуру в основном выполняют с использованием VCDS.
Gateway Q
Ура! Наконец-то я подружил свою приборку и магнитолу с машиной.
Что такое Gateway?
Это шлюз CAN (Controller-Area-Network) — шин автомобиля, посредством которого разное оборудование общается между собой. Passat в частности имеет насколько таких шин (отдельно на двигатель, на блоки комфорта и т.д.).
У меня стоял гейт C, я поменял на Q. Грубоговоря новый гейт имеет бОльшую пропускную способность, может передавать больше информации за единицу времени.
Зачем менять? Что это даёт?
В моём случае, когда была установлена приборная панель и магнитола от рестайлового пассата, они не до конца понимали где очутились. Часть информации была недоступна, что-то работало некорректно банально из-за того, что они передавали информацию не так как этого ожидала машина (Чаще передавали пакеты, или пакеты были большего объема; я точно не знаю но факт в том, что они как-бы говорили на разных, пускай и очен похожих языках).
Это выливалось в различного рода проблемы:
1) На руле не было информации про магнитолу, я мог регулировать только громкость, но не менять треки и смотреть информацию.
2) Блок #17 (это приборка) был банально недоступен, я не мог до конца адаптировать приборку под машину
3) Разряд аккумулятора. Магнитола не засыпала, даже когда вынимаешь ключи. На самом деле магнитолой можно пользоваться и без ключей в обычном режиме, но как только вы её отключаете, она полностью засыпает и не просаживает аккум.
Процесс замены
До того как всё начать, нужно запомнить настройки старого блока Gateway. Этот парень должен знать про всё установленное в машине оборудование, иначе обрежете себе комплектацию, в лучшем случае 🙂