Криптованная прошивка что это
8_Пособие для прошивальщиков
Всем добрый день.
На рабочем месте сегодня был целый день в гордом одиночестве, поэтому разрешил себе немного пошалить)
Взял с дома ноут и все необходимое для баловства.
И так тема:»Изменение температуры включения вентилятора охлаждения», вопрос на которую ни где не нашел толкового ответа.
С наступлением тепла, многих водителей напрягает температура включения вентилятора.
В основном все справляются с этой проблемой установкой бк с регулировкой температуры включения этого самого «Карлосона».
Некоторые за определенное количество денежных средств едут к диагностам и чиптюнерам.
Эта запись для тех кто не хочет платить за то, что можно сделать самому.
Все что нам нужно:
ChipLoader — флешер, что бы считать и залить прошивку в блок,
СhipTuningPro (далее STP) — редактор прошивок,
Enigma — конвертер, делает из криптованной прошивки декриптованную.
Ромокабель или K-line адаптер для диагностики,
Паяльник,
Резисторы, в зависимости от блока,
А самое главное желание)
И так приступим.
В зависимости от того какую прошивку хотите отредактировать, зависит последовательность действий.
На моём примере будем использовать прошивку от Ledokol v 7.4 для Bosch 7.9.7
1) Скачиваем прошивку, и устанавливаем программу STP.
Подробную инструкцию по установке, можно найти в архиве с программой.
Все установили, запускаем «Хвостик»
Появляется хрюндель, как только загорится зелый глаз, можно запускать STP.
Открываем нашу прошивку (Можно просто перетащить файл мышкой в программу),
Видим окно, программа просит выбрать версию прошивки, для загрузки карт калибровки.
Для моего блока это будет B105DP09, то есть 1.6, 16 v.
Ждем пока загрузятся карты и перед нами открытая прошивка. Кому интересно, можно по изучать разные пункты данной программы.
Кто желает изменить обороты хх, перетягиваем точки графика в зависимости от температуры двигателя.
Если кто то хочет изменить момент отсечки:
Заводская отсечка вроде бы 5500, так как прошивка коммерческая, до меня её уже подняли до 7000
До меня стояло 99, я изменил на 96, так же не забываем изменить пункт ниже, температура выключения вентилятора.
Разница включения — выключения 2-3 градуса, в заводской прошивке разница где то 1.5 — 2 градуса.
Как все сделали сохраняем файл, обзываем кому как нравится.
2) Устанавливаем Enigma. (Если прошивать Chip Loader, не обязательно выполнять)
Находим файл нашей прошивки, открываем свойства
Видим что размер 226 кб, а нам надо 512 кб, то есть надо распаковать прошивку.
Запускаем Enigma, жмем распаковать прошивку, выбираем наш файл.
После распаковки файл автоматически заменится
Все готово для заливки прошивки в блок.
Как залить прошивку в блок на ресурсах интернета полно разжеваных статей, но раз начал будем жевать до конца.
3) Устанавливаем Chip Loader, и подключаем мозги к ПК.
В моём случае необходимо допаять 2 резистора номиналом от 4 до 8 кОМ,
Сделано.
Далее используем Ромокабель и подключаем к контактам ЭБУ:
51, 53, 43 контакт ЭБУ — (-12В)
13, контакт ЭБУ — Включение зажигания (+12В, выключатель)
12, 44, 63 контакт ЭБУ — (+12 В),
Подключаем к ПК, открываем Chip Loader, выбираем наш блок и жмакаем установить связь.
Если программа не видит адаптер, нужно изменить порт в настройках.
Но увы через Ромокабель мой капризный блок не в какую не хотел выходить на связь.
И пришлось использовать простой К-лайн
Схема подключения такая же, только необходимо добавить дополнительное питание.
Я использую блок от усилителя антенны) Дешево и сердито)
Жмем установить связь и вуаля)
Теперь касается тех, кто не хочет загружать авторскую прошивку, если всё устраивает и в этой, необходи считать Flash и сохранить её из буфера обмена.
Берем сохраненный файл и переходим к пункту 1 моего рассказа.
Ждем минут 5-10, зависит от компа.
Так же по изученным мной статьям, после прошивки советуют сделать сброс ЭБУ с инициализацией.
Я пользуюсь программой OpenDiag для этого.
В принципе все, донес информацию как смог)))
Криптованная прошивка что это
Источники питания электронной аппаратуры, импульсные и линейные регуляторы. Топологии AC-DC, DC-DC преобразователей (Forward, Flyback, Buck, Boost, Push-Pull, SEPIC, Cuk, Full-Bridge, Half-Bridge). Драйвера ключевых элементов, динамика, алгоритмы управления, защита. Синхронное выпрямление, коррекция коэффициента мощности (PFC)
Обратная Связь, Стабилизация, Регулирование, Компенсация
Организация обратных связей в цепях регулирования, выбор топологии, обеспечение стабильности, схемотехника, расчёт
Первичные и Вторичные Химические Источники Питания
Li-ion, Li-pol, литиевые, Ni-MH, Ni-Cd, свинцово-кислотные аккумуляторы. Солевые, щелочные (алкалиновые), литиевые первичные элементы. Применение, зарядные устройства, методы и алгоритмы заряда, условия эксплуатации. Системы бесперебойного и резервного питания
Высоковольтные выпрямители, умножители напряжения, делители напряжения, высоковольтная развязка, изоляция, электрическая прочность. Высоковольтная наносекундная импульсная техника
Электрические машины, Электропривод и Управление
Электропривод постоянного тока, асинхронный электропривод, шаговый электропривод, сервопривод. Синхронные, асинхронные, вентильные электродвигатели, генераторы
Технологии, теория и практика индукционного нагрева
Системы Охлаждения, Тепловой Расчет – Cooling Systems
Охлаждение компонентов, систем, корпусов, расчёт параметров охладителей
Моделирование и Анализ Силовых Устройств – Power Supply Simulation
Моделирование силовых устройств в популярных САПР, самостоятельных симуляторах и специализированных программах. Анализ устойчивости источников питания, непрерывные модели устройств, модели компонентов
Силовые полупроводниковые приборы (MOSFET, BJT, IGBT, SCR, GTO, диоды). Силовые трансформаторы, дроссели, фильтры (проектирование, экранирование, изготовление), конденсаторы, разъемы, электромеханические изделия, датчики, микросхемы для ИП. Электротехнические и изоляционные материалы.
Интерфейсы
Форумы по интерфейсам
все интерфейсы здесь
Поставщики компонентов для электроники
Поставщики всего остального
от транзисторов до проводов
Компоненты
Закачка тех. документации, обмен опытом, прочие вопросы.
Майнеры криптовалют и их разработка, BitCoin, LightCoin, Dash, Zcash, Эфир
Обсуждение Майнеров, их поставки и производства
наблюдается очень большой спрос на данные устройства.
Встречи и поздравления
Предложения встретиться, поздравления участников форума и обсуждение мест и поводов для встреч.
Ищу работу
Предлагаю работу
нужен постоянный работник, разовое предложение, совместные проекты, кто возьмется за работу, нужно сделать.
Куплю
микросхему; устройство; то, что предложишь ты 🙂
Продам
Объявления пользователей
Тренинги, семинары, анонсы и прочие события
Общение заказчиков и потребителей электронных разработок
Обсуждение проектов, исполнителей и конкурсов
Восстановления «заваленной» криптованной приборки.
Предисловие: Не пишите, пожалуйста, сообщения о помощи с приборками, я не буду на них отвечать т.к.
1. Я этим не занимаюсь и заниматься не хочу.
2. Есть отличная программа AudiDashEdit www.drive2.ru/b/516194596913414264/ при помощи которой можно почти все сделать.
3. Есть куча информации на drive2 и audi-club.ru, где все расписано ни один раз.
Информацией подробной об этом делится люди, её владеющие, особо не желают, т.к. зарабатывают этим деньги. Я их понимаю, но тем, что я собрал по различным форумам я поделюсь. Это, возможно, сэкономит людям, более-менее разбирающимся в технике, электронике время. А те, кто сами в этом ничего не понимают всё равно пойдут к специалистам. Так что чужой хлеб я не отбираю. Как уже выше написал, содержимое памяти приборки зашифровано при помощи так называемой «криптомаски». А VAG EEPROM Programmer даёт дамп уже в расшифрованном виде. При заливки этого же дампа в EEPROM через кабель и VAG EEPROM Programmer он зашифруется назад.
Если же вы залили через кабель прошивку от не криптованной приборки, либо просто левый файл, то приборка перестаёт принимать прошивки через кабель. И если вы не считали до этого программатором прошивку из памяти, то способ «залить прошивку считанную программатором из такой же приборки» в 8 из 9 случаях не сработает. Т.к. эти самые криптомаски разные даже приборках с одинаковым номером. После «завала» приборки самое главное не обнулить и не перезаписать содержимое eeprom программатором, т.к. хотя прошивка «похерена», но криптомаска по прежнему содержится в eeprom. И её можно оттуда извлечь. Для этого нужен паяльник и подходящий программатор либо человек с программатором и паяльником, программа Audi VDO Crypto (наверное платная, кто-то её писал, старался, но я не помню где её нашёл, гуглится она достаточно быстро), VAG EEPROM Programmer и какой-нибудь HEX редактор, можно который вместе с программатором.
Итак что мы делаем:
1. Выпаиваем микросхему EEPROM (мне попадались и 93C86 и 96LC86). Размещаем в программаторе и читаем. Данные считываются в формате 16bit (т.е. по два байта, и с этим далее может быть нюанс). Считываем программатором содержимое дампа и сохраняем, например в файл EEPROM.bin.
2. Открываем программу Audi VDO Crypto, и жмём кнопочку «Open 93C86 dump». Видим следующее:
Это реальный битый дамп с моей S6 приборки. Далее жмём кнопку «Save decrypted» и получаем два файла: один без расширения объёмом 2048 байт, а второй с расширением *.cry объёмом 26 байт. Это и есть т.н. криптомаска для вашей приборной панели. А вот второй файл – это то, что считывается через кабель программой VAG EEPROM Programmer, но только со «свапом» байт (как показывает сравнение файлов всё же почти то же самое, но не совсем). Т.е. если взять нормальный, не битый дамп, считанный с EEPROM, пропустить его через Audi VDO Crypto и сделать в полученном расшифрованном двухкилобайтном файле свап (замену местами старших и младших байт в 16 битном слове), то получится почти то, что считывается через кабель программой VAG EEPROM Programmer (на самом деле есть некоторые различия). И тут сам собой вырисовывается способ реанимации заваленной криптованной приборки:
3. Далее можно взять родную проишвку, слитую через кабель и VAG EEPROM Programmer (если есть), или прошивку от приборки с таким же номером (попросить слить через кабель счастливого владельца такой же машины за пиво или найти в интернете). Затем сделать в ней swap при помощи 16-ричного редактора или софта от программатора, сохранить, скажем под именем new. (без расширения или bin), в эту же папку положить файл от вашей приборки с криптомаской, назвать так же только с расширением cry (например new.cry), нажать в Audi VDO Crypto кнопочку «Open decrypted» и затем кнопку «Save 96C86 dump».
Или можно проще сразу взять из архива ниже готовый файл с такой криптомаской :).
4. Полученный файл программатором записываем в EEPROM в режиме 16 bit. Тут есть нюанс: некоторые программаторы корректно определяют адресацию 16-ти битную микросхемы, а некоторые нет. В принципе варианта два либо сначала старший, потом младший байт, либо наоборот. Поэтому если у вас не запустилась приборка после установки записанной микросхемы памяти, хрипит гонг и не горят надписи на дисплеях, попробуйте в полученном в результате действий в пункте 3 зашифрованном файле сделать swap и затем прошить записать его программатором в eeprom.
5. Панель может запуститься полностью в рабочем виде (это если вы нашли и записали дамп, считанный программатором с приборки с такой же криптомаской, ), а может с надписью def на дисплее с пробегом. Это если вы «химичили» файл с прошивкой сами на основе криптомаски.
У меня получилось именно так, с def когда я интереса ради сделал файл для заливки программатором из файла с криптомаской приборки и расшифрованного файла с приборки RS6.
Но даже в этом случае панель запускается нормально и примет прошивку, записанную через кабель и VAG EEPROM Programmer.
Собственно, даже если у вас нету вообще вашей микросхемы 93C86 или она была затёрта/перезаписана, то восстановить приборку можно. Судя по информации на формух существует для наших машин (Audi A6/S6/RS6/Allroad C5 c криптованными приборками VDO) всего 9 вариантов файлов с криптомасками, причём они все заказнчиваются двумя одинаковыми байтами. Т.е. имея их, и с их помощью повторяя пункты 3 и 4 указанные выше до 9-ой итерации ваша приборка оживёт. Либо просто заливать прошивки, из которых эти криптомаски были извлечены, пока не запустится нормально.
Есть мнение, что криптомасок больше, но я заметил следующее: если перед скармливанием на расшифровку программе Audi VDO Crypto в зашифрованном файле сделать swap (относительно того, что считал программатор), то на выходе расшифрованный двухкилобайтный файл будет точно таким же как если бы swap не делали, а вот файл с криптомаской будет отличаться только двумя последними символами от того, что получился в первом случае.
Соответственно получается, что помимо основных 9-ти криптомасок других не существует, это просто некоторые программаторы/люди делают свап перед расшифровкой файла при помощи Audi VDO Crypto, а некоторые не делают.
В ссылке в архиве я положил и Audi VDO Crypto и 9 файлов с криптомасками (и исходными файлами с прошивками соотв).
Надеюсь, кому-то это пригодится.)
Как расшифровать прошивку автомобиля в неизвестном формате
Toyota распространяет свои прошивки в недокументированном формате. Мой заказчик, у которого автомобиль этой марки, показал мне файл прошивки, который начинается так:
CALIBRATIONêXi º
attach.att
ÓÏ[Format]
Version=4
[Vehicle]
Number=0
DateOfIssue=2019-08-26
VehicleType=GUN1**
EngineType=1GD-FTV,2GD-FTV
VehicleName=IMV
ModelYear=15-
ContactType=CAN
KindOfECU=0
NumberOfCalibration=1
[CPU01]
CPUImageName=3F0S7300.xxz
FlashCodeName=
NewCID=3F0S7300
LocationID=0002000100070720
CPUType=87
NumberOfTargets=3
01_TargetCalibration=3F0S7200
01_TargetData=3531464734383B3A
02_TargetCalibration=3F0S7100
02_TargetData=3747354537494A39
03_TargetCalibration=3F0S7000
03_TargetData=3732463737463B4A
3F0S7300forIMV.txt ¸Ni¶m5A56001000820EE13FE2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133E2030133E2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133E2030133E2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133E20911381959FAB0EE9000
81C9E03ADE35CEEEEFC5CF8DE9AC0910
38C2E031DE35CEEEEFC8CF87E95C0920
.
Дальше идут строки по 32 шестнадцатеричные цифры.
Хозяину и прочим умельцам хотелось бы перед установкой прошивки иметь возможность проверить, что там внутри: засунуть ее в дизассемблер и посмотреть, что она делает.
Конкретно для этой прошивки у него имелся дамп содержимого:
Как видно, нет ничего даже близко похожего на строчки шестнадцатеричных цифр в файле прошивки. Встает вопрос: в каком формате распространяется прошивка, и как ее расшифровать? Эту задачу хозяин автомобиля поручил мне.
Повторяющиеся фрагменты
Посмотрим внимательно на те шестнадцатеричные строчки:
5A56001000820EE13FE2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133E2030133E2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133E2030133E2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133E20911381959FAB0EE9000
81C9E03ADE35CEEEEFC5CF8DE9AC0910
38C2E031DE35CEEEEFC8CF87E95C0920
.
Соответствия между блоками
Получим список всех пар (блок файла, блок дампа), и поищем в нем закономерности:
Вот как выглядят первые пары в отсортированном списке:
Действительно, видны закономерности:
Для проверки — «отрежем» старшие 4 бита в каждом полублоке, и посмотрим, какие пары получатся:
После перестановки подблоков по 4 бита в ключе сортировки, соответствия между парами подблоков становятся еще более явными:
Соответствия между подблоками
В вышеприведенном списке видны такие соответствия:
Когда таблицы соответствия готовы, код расшифровки получается совсем простой:
Заголовок прошивки
Хозяин автомобиля, передавший мне файлы для анализа, подтвердил, что в прошивках встречаются и сжатые LZF данные. К счастью, реализация LZF открыта и довольно проста, так что вместе с моим анализом ему удалось удовлетворить свое любопытство по поводу содержимого прошивок. Теперь он может вносить изменения в код — например, автозапуск двигателя при падении температуры ниже заданного уровня, чтобы использовать автомобиль в условиях суровой русской зимы.
Что такое прошивка
Заглядываем внутрь простой электроники
Наверняка вы слышали фразы вроде: «обновил прошивку телефона», «у фотоаппарата проблемы с прошивкой» или «пиратская прошивка». Сейчас эти фразы означают любой софт, который управляет железом на низком уровне.
О чём речь
Сам термин «прошивка» появился примерно 70 лет назад: это было время, когда ещё не было интегрированных микросхем и микроэлектроники, а вычислительные машины уже были. И вот тогда вместо флеш-памяти и жёстких дисков использовали память на магнитных сердечниках.
Сердечник — это тороид (типа бублик) из специального материала, который можно намагничивать с помощью тока. Через сердечники пропускают ток в разных направлениях, и в зависимости от этого менялись магнитные свойства этого сердечника. Намагниченный сердечник означал единицу, размагниченный — ноль.
Кайф был в том, что намагниченный сердечник оставался намагниченным, не мешал соседям и терял заряд очень медленно, поэтому такую технологию можно было с некоторой натяжкой назвать компьютерной памятью.
Чтобы собрать рабочий модуль памяти, нужно было продевать множество проводов через множество бубликов, что напоминало процесс прошивания иголкой и ниткой. Процесс был ручным: сидели инженеры и шили себе память. Отсюда и слово — «прошивка».
Потом изобрели печатные платы и интегрированные микросхемы, жить стало веселей, появилась флеш-память и магнитные накопители. Процесс записи данных поменялся, а термин остался. С тех пор прошивкой называют программу, заложенную в микросхему и отвечающую за её работу.
Память на магнитных сердечниках
Зачем нужна прошивка
Прошивка в электронике отвечает за работу всего устройства — телефона, фотоаппарата, умной колонки, часов или охранного модуля. Сама прошивка хранится либо в той же микросхеме в блоке памяти, либо в отдельном чипе, если для неё нужно много места.
Когда устройство включается, происходит такое:
👉 Получается, что прошивка — это программа, которая отвечает за работу всего устройства на самом низком уровне.
Зачем менять прошивку
Иногда производитель устройства не добавляет в него некоторые возможности. В этом случае программисты извлекают файл прошивки из устройства, разбираются, из чего он состоит, и смотрят, можно ли в нём что-то изменить, чтобы сделать устройство лучше.
История из жизни одного производителя смартфонов: при производстве телефонов используется один модуль камеры и в дешёвых, и в дорогих моделях. Чтобы они не конкурировали между собой, производитель может в прошивке дешёвой модели отключить оптическую стабилизацию или ночную съёмку. В итоге покупатели знают, что если нужна ночная съёмка, то нужно взять дорогую модель, потому что она это умеет, а дешёвая нет.
Но если в прошивке убрать это ограничение и загрузить её на дешёвый телефон, то он тоже станет снимать и со стабилизацией, и ночной режим появится. В итоге за те же деньги пользователь может получить новые возможности устройства. Но теряет гарантию производителя.
Другой пример — из мира фотоаппаратов. У старых камер Canon есть стандартная прошивка, у неё много ограничений. Разработчики придумали альтернативную прошивку Magic Lantern, которая делает из камеры настоящего зверя для съёмки видео.
Прошивка — не для всей электроники
Есть много устройств, которые прошить не получится: либо нужно распаивать микросхему, либо она защищена от записи. Чаще всего это простая бытовая техника: пульты от телевизоров, миксеры, микроволновки, детские игрушки и тому подобное.
👉 Общее правило такое: если устройство можно подключить к интернету или к компьютеру — скорее всего, его можно прошить. Работает это не всегда, но чаще всего так.
А можно ничего не прошивать и пользоваться как есть?
Можно, иногда даже нужно, если прошивка отвечает за важные системы, например за работу домашнего газового котла, автомобильных систем безопасности или кардиостимулятора.