Блок getaway за что отвечает
Перейти к содержимому

Блок getaway за что отвечает

  • автор:

Gateway Q

Ура! Наконец-то я подружил свою приборку и магнитолу с машиной.

Фото в бортжурнале Volkswagen Passat B6 Старый и новый довольно похожи 🙂

Что такое Gateway?
Это шлюз CAN (Controller-Area-Network) — шин автомобиля, посредством которого разное оборудование общается между собой. Passat в частности имеет насколько таких шин (отдельно на двигатель, на блоки комфорта и т.д.).

У меня стоял гейт C, я поменял на Q. Грубоговоря новый гейт имеет бОльшую пропускную способность, может передавать больше информации за единицу времени.

Зачем менять? Что это даёт?
В моём случае, когда была установлена приборная панель и магнитола от рестайлового пассата, они не до конца понимали где очутились. Часть информации была недоступна, что-то работало некорректно банально из-за того, что они передавали информацию не так как этого ожидала машина (Чаще передавали пакеты, или пакеты были большего объема; я точно не знаю но факт в том, что они как-бы говорили на разных, пускай и очен похожих языках).

Это выливалось в различного рода проблемы:
1) На руле не было информации про магнитолу, я мог регулировать только громкость, но не менять треки и смотреть информацию.
2) Блок #17 (это приборка) был банально недоступен, я не мог до конца адаптировать приборку под машину
3) Разряд аккумулятора. Магнитола не засыпала, даже когда вынимаешь ключи. На самом деле магнитолой можно пользоваться и без ключей в обычном режиме, но как только вы её отключаете, она полностью засыпает и не просаживает аккум.

Процесс замены

До того как всё начать, нужно запомнить настройки старого блока Gateway. Этот парень должен знать про всё установленное в машине оборудование, иначе обрежете себе комплектацию, в лучшем случае 🙂

Фото в бортжурнале Volkswagen Passat B6Подключаем VAG-COM и запоминаем что у нас стоит. После замены блока, там будет пустота и нужно будет заново выставить имеющееся оборудование. Заметили, что новый гейт поддерживает на много больше всего? Одна из причин его замены! Фото в бортжурнале Volkswagen Passat B6 Достаточно снять накладку под рулём и радоваться у кого небольшие руки, гейт спрятался глубоко.

Гейтвей на колесах

В данной статье пойдет речь о применении автомобильных гейтвеев на примере 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() :

19 Блок CAN шины Gateway, платформа А5 1K0 907 530 E can v 1,6

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

— CAN-шина привод
— CAN-шина комфорт
— CAN-шина Infotainment
— CAN-шина Kombi
— CAN-шина диагностика

Диагностический интерфейс шины данных J533 находится, под комбинацией приборов над педалью газа.

Внешний вид блока:

119237_01.jpg

Расширеная индификация блока:

119237_02.jpg

119237_03.jpg

119237_04.jpg

119237_05.jpg

119237_06.jpg

119237_07.jpg

119237_08.jpg

119237_09.jpg

119237_10.jpg

данный блок gateway поддерживает CAN шину версии 1.6, поэтому при замене на магнитоллы III поколения (RCD 310, RCD 510, RNS 510, RNS 310. ), которые поддерживают протокол CAN шины 2.0, будьте готовы к глубокому разряду аккумулятора за ночь.
Из-за этой несовместимости, появляется ошибка и блоки управления не переходят в спящий режим. При этом ток потребления может достигать 2 А.

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

Корректно проблема с несовместимостью версий CAN шины решается заменой на gateway 2.0

Цитата из Росстеча.
По ней видно, что с индекса L выпускается can-gateway 2.0
Так же данный блок поддерживает блок парктроника с визуализацией в штатных магнитоллах III поколения и даже адаптивный круиз контроль:

119237_11.jpg

Coding
Coding (through Index F)
Byte 00 Bit 0 [01] Engine Electronics
Byte 00 Bit 1 [02] Transmission Electronics
Byte 00 Bit 2 [03] Brake Electronics (ABS)
Byte 00 Bit 3 [00] Steering Angle Sensor (G85)
Byte 00 Bit 4 [15] Airbags
Byte 00 Bit 5 [44] Steering Assist
Byte 00 Bit 6 [55] Xenon Range
Byte 00 Bit 7 [22] All Wheel Drive
Byte 01 Bit 0 [09] Central Electronics
Byte 01 Bit 1 [46] Central Convenience
Byte 01 Bit 2 [42] Door Electronics (Driver)
Byte 01 Bit 3 [52] Door Electronics (Passenger)
Byte 01 Bit 4 [62] Door Electronics (Rear Left)
Byte 01 Bit 5 [72] Door Electronics (Rear Right)
Byte 01 Bit 6 [36] Seat Memory (Driver)
Byte 01 Bit 7 [65] Tire Pressure Monitoring
Byte 02 Bit 0 [16] Steering Wheel Electronics
Byte 02 Bit 1 [08] Climate Control
Byte 02 Bit 2 [76] Parking Aid
Byte 02 Bit 3 [7D] Auxiliary Heating
Byte 02 Bit 4 [18] Auxiliary Heater
Byte 02 Bit 5 [26] Auto Roof
Byte 02 Bit 6 [69] Trailer
Byte 02 Bit 7 [06] Seat Memory (Passenger)
Byte 03 Bit 0 [3D] Special Function
Byte 03 Bit 1 [47] Sound System
Byte 03 Bit 2 [75] Telematics
Byte 03 Bit 3 [37] Navigation
Byte 03 Bit 4 [57] TV-Tuner
Byte 03 Bit 5 [0F] Radio (digital)
Byte 03 Bit 6 [56] Radio (analog)
Byte 03 Bit 7 [77] Telephone
Byte 04 Bit 0 [17] Instrument Cluster
Byte 04 Bit 1 [25] Immobilizer
Byte 04 Bit 2 [19] CAN-Gateway
Byte 04 Bit 3 [1C] Position Sensing
Byte 04 Bit 4 [5D] Operations
Byte 05 Manufacturer/Model
Byte 06 Options

Coding (from Index F through Index K)
Byte 00 Bit 0 [01] Engine Electronics
Byte 00 Bit 1 [02] Transmission Electronics
Byte 00 Bit 2 [03] Brake Electronics (ABS)
Byte 00 Bit 3 [00] Steering Angle Sensor (G85)
Byte 00 Bit 4 [15] Airbags
Byte 00 Bit 5 [44] Steering Assist
Byte 00 Bit 6 [55] Xenon Range
Byte 00 Bit 7 [22] All Wheel Drive
Byte 01 Bit 0 [09] Central Electronics
Byte 01 Bit 1 [46] Central Convenience
Byte 01 Bit 2 [42] Door Electronics (Driver)
Byte 01 Bit 3 [52] Door Electronics (Passenger)
Byte 01 Bit 4 [62] Door Electronics (Rear Left)
Byte 01 Bit 5 [72] Door Electronics (Rear Right)
Byte 01 Bit 6 [36] Seat Memory (Driver)
Byte 01 Bit 7 [65] Tire Pressure Monitoring
Byte 02 Bit 0 [16] Steering Wheel Electronics
Byte 02 Bit 1 [08] Climate Control
Byte 02 Bit 2 [76] Parking Aid
Byte 02 Bit 3 [7D] Auxiliary Heating
Byte 02 Bit 4 [18] Auxiliary Heater
Byte 02 Bit 5 [26] Auto Roof
Byte 02 Bit 6 [69] Trailer
Byte 02 Bit 7 [06] Seat Memory (Passenger)
Byte 03 Bit 0 [3D] Special Function
Byte 03 Bit 1 [47] Sound System
Byte 03 Bit 2 [75] Telematics
Byte 03 Bit 3 [37] Navigation
Byte 03 Bit 4 [57] TV-Tuner
Byte 03 Bit 5 [0F] Radio (digital)
Byte 03 Bit 6 [56] Radio (analog)
Byte 03 Bit 7 [77] Telephone
Byte 04 Bit 0 [17] Instrument Cluster
Byte 04 Bit 1 [25] Immobilizer
Byte 04 Bit 2 [19] CAN-Gateway
Byte 04 Bit 3 [1C] Position Sensing
Byte 04 Bit 4 [5D] Operations
Byte 04 Bit 5 [14] Suspension Electronics
Byte 04 Bit 6 [4C] Tire Pressure Monitoring II
Byte 04 Bit 7 [11] Engine Electronics II
Byte 05 Bit 0 [10] Park/Steering Assistant
Byte 05 Bit 1 [63] Easy Entry Driver Side
Byte 05 Bit 2 [73] Easy Entry Passenger Side
Byte 06 Manufacturer/Model
Byte 07 Options

Coding (from Index L)
Byte 00 Bit 0 [01] Engine Electronics
Byte 00 Bit 1 [11] Engine Electronics II
Byte 00 Bit 2 [02] Transmission Electronics
Byte 00 Bit 3 [03] Brake Electronics (ABS)
Byte 00 Bit 4 [53] Parking Brake
Byte 00 Bit 5 [04] Steering Angle Sensor (G85)
Byte 00 Bit 6 [44] Steering Assist
Byte 00 Bit 7 [15] Airbags
Byte 01 Bit 0 [55] Xenon Range
Byte 01 Bit 1 [22] All Wheel Drive
Byte 01 Bit 2 [13] Distance Regulation
Byte 01 Bit 3 [14] Suspension Electronics
Byte 01 Bit 4 [4C] Tire Pressure Monitoring II
Byte 01 Bit 5 [10] Park/Steering Assist
Byte 01 Bit 6 [32] Differential Locking
Byte 01 Bit 7 [17] Instrument Cluster
Byte 02 Bit 0 [25] Immobilizer
Byte 02 Bit 1 [09] Central Electronics
Byte 02 Bit 2 [46] Central Convenience
Byte 02 Bit 3 [42] Door Electronics (Driver)
Byte 02 Bit 4 [52] Door Electronics (Passenger)
Byte 02 Bit 5 [62] Door Electronics (Rear Left)
Byte 02 Bit 6 [72] Door Electronics (Rear Right)
Byte 02 Bit 7 [36] Seat Memory (Driver)
Byte 03 Bit 0 [65] Tire Pressure Monitoring
Byte 03 Bit 1 [16] Steering Wheel Electronics
Byte 03 Bit 2 [08] Climate Control
Byte 03 Bit 3 [76] Park Assist
Byte 03 Bit 4 [7D] Auxiliary Heating
Byte 03 Bit 5 [26] Auto Roof
Byte 03 Bit 6 [69] Trailer
Byte 03 Bit 7 [06] Seat Memory (Passenger)
Byte 03 Bit 0 [3D] Special Function
Byte 04 Bit 1 [6D] Trunk Electronic
Byte 04 Bit 2 [63] Easy Entry Driver Side
Byte 04 Bit 3 [73] Easy Entry Passenger Side
Byte 04 Bit 4 [47] Sound System
Byte 04 Bit 5 [75] Telematic/Emergency Call
Byte 04 Bit 6 [37] Navigation
Byte 04 Bit 7 [57] TV-Tuner
Byte 05 Bit 0 [0F] Radio (digital)
Byte 05 Bit 1 [56] Radio (analog)
Byte 05 Bit 2 [77] Telephone
Byte 05 Bit 3 [18] Auxiliary Heater
Byte 05 Bit 4 [1C] Position Sensing
Byte 05 Bit 5 [5D] Operations
Byte 05 Bit 6 [6C] Rear View Camera
Byte 05 Bit 7 [59] Tow Protection
Byte 06 Bit 0 [4F] Central Electronics II
Byte 06 Bit 1 [19] CAN-Gateway (Standard)
Byte 06 Bit 2 [3C] Lane Change Assist
Byte 06 Bit 3 [5C] Lane Maintenance Assist
Byte 07 Manufacturer/Model
Byte 08 Options

Блок getaway за что отвечает

В данной статье пойдет речь о применении автомобильных гейтвеев на примере 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 года с неисправностями, которые связаны именно с блоком комфорта, то есть выход.

Какие проблемы можно решить с помощью инструкции:

  1. Освещение в автосалоне.
  2. КАН шина.
  3. Плавная деактивация освещения и подсветки.
  4. Подтверждение открытия/закрытия авто светом.
  5. Проблемы с акселератором.

Описание процедуры ремонта:

Сначала доберитесь до расположения блока комфорта Volkswagen, потом снимите: накладку порога наполовину, накладку площадки для ног, обшивку стойки, отогните ковролин с звукоизоляцией. За освещение здесь отвечает провод красно-чёрного цвета 20 пин большого разъёма, если он обрезан, видимо это сделали из-за короткого замыкания этой цепи, проблема возникла в плафоне освещения «бардачка», рассеиватель расплавила лампа (вывод ставьте светодиоды, а не лампочки).

Если с CAN — шиной что-то не так, возможно, сгнило место соединения (расположения) нескольких проводков в жгуте идущему к БК, ведь они отвечают за нее.

В первом и втором случаях проблема решается высококачественной пайкой, герметизацией пайки и термической усадкой.

В случае плавного отключения освещения в салоне, виновник 21 пин разъёма, наверняка, он сгнил именно в корпусе разъёма на проводке, вылечить можно припайкой нового.

Если появились проблемы с подтверждением открытия и закрытия транспорта, значит сгнил красный проводок в области протыкания изоляции. Сначала нужно вырезать гниль, а потом провести лечение паяльником и термоусадкой и небольшим куском провода.

В случае с педалью газа (если загорается спираль, и нет реакции на нажатие хотя бы один раз) тоже можно решить проблему. Если нет времени на ремонт, может помочь выключение зажигания.

Если вы готовы к «лечению», перелопатьте всё саму педаль, проверьте состояние дорожек, усиков внутри и разъем идущий из салона. Возможно, причина кроется в окислении.

Последовательный процесс замены реле на БК:

  • Для начала откройте крышку блока, которая находится сзади, для этого поджимайте контакты, чтобы вытащить плату.
  • Прозвоните контакт, и после выявления неисправности, переходите к замене детали.
  • Уберите ножиком лак с контактов реле, смотрите не переусердствуйте.
  • Обработайте флюсом контакты, и запаяйте все.
  • Уберите все олово посредством отсоса.
  • Выньте нерабочее реле, установите новое и запаяйте его осторожно.
  • Уберите проспиртованной тряпкой остатки флюса, не используйте воду.
  • Соберите данный БК в обратной последовательности.
  • Установите его в машину.

Важно! Пользователи, пожалуйста, запомните, если блок комфорта был заменен, потребуется «обучить» ключи, чтобы они распознавали автомобиль. Подобную процедуру в основном выполняют с использованием VCDS.

Gateway Q

Ура! Наконец-то я подружил свою приборку и магнитолу с машиной.

Что такое Gateway?
Это шлюз CAN (Controller-Area-Network) — шин автомобиля, посредством которого разное оборудование общается между собой. Passat в частности имеет насколько таких шин (отдельно на двигатель, на блоки комфорта и т.д.).

У меня стоял гейт C, я поменял на Q. Грубоговоря новый гейт имеет бОльшую пропускную способность, может передавать больше информации за единицу времени.

Зачем менять? Что это даёт?
В моём случае, когда была установлена приборная панель и магнитола от рестайлового пассата, они не до конца понимали где очутились. Часть информации была недоступна, что-то работало некорректно банально из-за того, что они передавали информацию не так как этого ожидала машина (Чаще передавали пакеты, или пакеты были большего объема; я точно не знаю но факт в том, что они как-бы говорили на разных, пускай и очен похожих языках).

Это выливалось в различного рода проблемы:
1) На руле не было информации про магнитолу, я мог регулировать только громкость, но не менять треки и смотреть информацию.
2) Блок #17 (это приборка) был банально недоступен, я не мог до конца адаптировать приборку под машину
3) Разряд аккумулятора. Магнитола не засыпала, даже когда вынимаешь ключи. На самом деле магнитолой можно пользоваться и без ключей в обычном режиме, но как только вы её отключаете, она полностью засыпает и не просаживает аккум.

Процесс замены

До того как всё начать, нужно запомнить настройки старого блока Gateway. Этот парень должен знать про всё установленное в машине оборудование, иначе обрежете себе комплектацию, в лучшем случае ��

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *