banner
Центр новостей
Наше глобальное присутствие основано на доверии, честности и качестве.

DisplayPort: укрощение альтернативного режима

Aug 22, 2023

Альтернативный режим DisplayPort является полупатентованным, но его вполне можно выделить, если постараться. В прошлый раз мы нашли классную заметку с подробным описанием альтернативного режима DisplayPort, переключили FUSB302 в режим прослушивания пакетов и получили захват пакетов, узнали о PD VDM (сообщениях, определяемых поставщиком) и успешно воспроизвели захваченные сообщения для переключения USB-C. порт в альтернативный режим DisplayPort. Сегодня мы рассмотрим семь сообщений, которые вызывают альтернативный режим DisplayPort, реализуем их и связываем все в библиотеку, а затем выясним, какое оборудование нам нужно, чтобы DisplayPort работал в реальных условиях.

Для начала, как вы могли видеть из диаграммы, одна команда может быть либо запросом, либо ответом. Например, если вы получаете REQ (запрос) Discover Identity, вы отвечаете на него ACK Discover Identity (ответ), попутно добавляя свои идентификационные данные в свой ответ. С помощью некоторых команд источник DP добавит некоторые данные для вашего использования; для большинства команд вместо этого ваш приемник DP должен будет предоставить информацию – и мы сделаем именно это, вооружившись предоставленным PDF-файлом и перехваченными пакетами.

У нас есть семь команд, которые нам нужно обработать, чтобы отключить DisplayPort от совместимого порта USB-C — если вам нужно освежить знания по этим командам, на странице 13 PDF-файла ST в альтернативном режиме DP вы увидите последовательность сообщений. Это следующие команды: «Обнаружение личности», «Обнаружение SVID», «Режимы обнаружения», «Вход в режим», «Обновление статуса DP», «Настройка DP» и «Внимание». Из них первые четыре уже частично описаны в базовом стандарте USB PD, две последующие команды DP зависят от DisplayPort-altmode, но достаточно описаны в имеющемся у нас PDF-файле, а команда «Внимание» также взята из базового стандарта. в основном полезно для сообщения о состоянии контакта HPD. Начнем с первых двух!

Первые две команды вообще не зависят от DisplayPort. В частности, сообщение Discover Identity присутствует повсюду. Как и в случае с сообщением Source_Capabilities, которое нам даже не пришлось запрашивать у блока питания, если вы подключитесь к порту USB-C ноутбука с поддержкой DP или даже Thunderbolt, вы получите командное сообщение Discover Identity. Если ваше устройство способно работать с любым альтернативным режимом, ответом на это сообщение вы объявите об этой возможности.

Ваш ответ Discover Identity должен будет содержать кучу данных о вашем устройстве — большую часть этих данных вы можете полностью подделать. Эти данные говорят о том, что вы являетесь адаптером альтернативного режима, есть два бита, обозначающие, способны ли вы работать с USB-хостом или USB-устройством, поле «сертификация», которое можно оставить полностью пустым, а также USB VID и PID. Насколько мне известно, VID и PID не используются ни для чего функционального, в отличие от PID и VID обычного USB-соединения, которые, как мы знаем, используются для выбора драйверов в операционных системах. У моего адаптера идентификатор поставщика 0xBDA, идентификатор продукта 0x2172 и номер bcdDevice 0x201. Эти значения отправляются один раз и больше не отображаются при дальнейшем обмене данными через USB-C.

Вторая команда — «Обнаружение SVID». SVID, по сути, представляют собой двухбайтовые коды альтернативных режимов, которые поддерживает ваше устройство. Если ваш ответ — 0xFF01 (то есть ответьте 0xFF010000 в качестве дополнительных данных), вы получите файл cookie в форме распознавания устройства с поддержкой альтернативного режима DisplayPort. Одно из принадлежащих мне устройств отвечает 0xFF01, но к нему также добавляется 0x25A4 — я подозреваю, что это интерфейс обновления прошивки, поэтому, если вы когда-нибудь захотите проверить устройства USB-C в целях пентестирования, это абсолютно точно будет вектором. чтобы изучить.

Давая ответ 0xFF01 на запрос Discover SVID, мы утверждаем, что наше устройство поддерживает альтернативный режим DisplayPort – даже если, по правде говоря, мы находимся на полпути к его правильной реализации, притворяясь, пока не добьемся его. Однако не беспокойтесь, мы на правильном пути — теперь мы говорим о специфике DisplayPort. Наша третья команда — «Режимы обнаружения», где мы сообщаем источнику DP, как именно наши требования DisplayPort сопоставляются с разъемом USB-C.