
Этот репозиторий - все о обратной инженерии старых автомобильных радиостанций Volkswagen, как радио Premium 5, показанное выше. Изученные здесь радиоприемники более пятнадцати лет и имеют размер одного дина. Несмотря на их возраст, они являются интеллектуальными и поддерживают встроенную диагностику (используя протокол VW KWP1281 на K-линии). Здесь вы найдете заметки о протоколах и аппаратном обеспечении, а также частичные разборки прошивки, но без оригинальных двоичных файлов прошивки или эпомов.
Radios VW в эту эпоху требует четырехзначного кода безопасности, часто называемого «безопасным кодом». Радио, как правило, хранят безопасный код в серийном EEPROM, например, 93C46 или 24C04. Безопасной код можно найти, открыв радио, ослабляя EEPROM, прочитав его, а затем парят EEPROM. Я хотел знать, был ли более простой способ.
Я разобрал прошивку для этих радиоприемников: Premium 4 (Clarion), Premium 5 (Delco), Gamma 5 (Technisat) и Rhapsody (Technisat). Я обнаружил, что у всех них есть бэкдоры, чтобы прочитать безопасный код с помощью встроенной диагностики. Чтение кода таким образом означает, что радио не нужно открывать и даже не нужно быть удаленным с автомобиля. Поскольку эта информация не опубликована нигде, и я не мог найти ни одного инструмента, который мог бы сделать это, я создал свой собственный инструмент.
kwp1281_tool : инструмент протокола диагностики (Volkswagen KWP1281). Он может отправлять произвольные команды на радио или любой другой модуль, используя протокол KWP1281. Он также может отправлять команды с использованием проприетарного протокола, найденного в Radios Technisat. Наконец, он может автоматически извлечь безопасный код для любого из перечисленных выше радиоприемников.
faceplate_emulator : эмулятор лицевой панели (NEC µPD16432B). Он подключается к радио Premium 4 вместо лицевой панели и позволяет контролировать радио через последовательный. Это также может одновременно контролировать реальную лицевую панель.
tape_emulator : эмулятор кассетной ленты (Philips TDA3612). Он подключается к радиосвязи Premium 4 вместо сборки кассетной ленты SCA4.4/TDA3612 и обманывает радио, думая, что играет лента.
volume_monitor : монитор объема (Mitsubishi M62419FP). Он подключается параллельно с звуковым контроллером M62419FP, используемым в радио Premium 4, и отправляет обновления по сериалу всякий раз, когда меняются регистры звука.
reverse_engineering : примечания о радиоприемниках от обратной инженерии, включая комментированные списки разборки радиопрограммы. Этот репозиторий не содержит оригинальной прошивки или двоичных файлов EEPROM.
Вот некоторые из самых интересных открытий, которые я сделал о радиоприемниках:
Все изучаемые радиоприемники поддерживают общий набор функций диагностики KWP1281 на нормальном радио -адресе 0x56. Некоторые радиоприемники (не все) также защищены команды KWP1281 по этому же адресу. Доступные защищенные команды варьируются в зависимости от модели, но могут включать в себя возможность чтения ПЗУ или ОЗУ микроконтроллера, а также для чтения/записи последовательных (ах). Доступ к защищенным командам требует отправки блока входа в систему на основе безопасного кода, а также для выполнения группы считывания скрытой группы.
VW Premium 4 (Clarion) имеет незащищенную команду KWP1281 0xf0, которая возвращает безопасный код. Он также содержит скрытый режим, в котором безопасный код может быть изменен с помощью лицевой панели. Ввод в этот режим требуется нажатия клавиш, которые не существуют на лицевой панели. Я предполагаю, что была специальная производственная лицевая панель, используемая фабрикой.
VW Premium 5 (Delco) и Seat Liceo (Delco) отвечают на другой набор команд KWP1281 по адресу 0x7c. Эти команды требуют аутентификации с использованием жестко -кодированного блока входа в систему. После проверки подлинности команды доступны для чтения и записи EEPROM, который можно использовать для извлечения безопасного кода.
VW Gamma 5 (Technisat) и Rhapsody (Technisat) имеют запатентованный протокол не KWP по адресу 0x7c. Это не похоже на то, что я нашел задокументирован, и, вероятно, был сделан Technisat только для производства радио. У него есть команды для чтения и записи EEPROM, который можно использовать для получения безопасного кода. Область безопасного кода EEPROM обычно отфильтровывается из этих команд, но другая команда отключает фильтрацию.
Я также разработал несколько других проектов в качестве побочного эффекта этой работы:
F2MC8DUMP: эксплуатируйте, чтобы сбросить внутренний ПЗУ микроконтроллеров FUJITSU F2MC-8L с возможностью внешней шины
F2MC8DASM: Fojitsu F2MC-8 Disasssembler, который генерирует выход, совместимый с ассемблером ASF2MC8
K0DASM: NEC 78K0 Disassassembler, который генерирует выход, совместимый с Ас 78K0.
k0emu: эмулятор NEC 78K0, способный запускать большие части прошивки VW Premium 5
M740DASM: Mitsubishi 740 Disassassembler, который генерирует выход, совместимый с АС740.
Майк Наберезни