Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Связаться с вами по микроконтроллеру семейства МК70 - K70P256M150SF3 #1

Open
brightproject opened this issue Apr 16, 2022 · 5 comments

Comments

@brightproject
Copy link

brightproject commented Apr 16, 2022

Здравствуйте.
Попались ваши посты на хабре, хотел с вами поговорить на тему прошивки микроконтроллера.
https://forum.cxem.net/index.php?/topic/239680-прошивка-платы-aircraft-ground-power-unit/
Если не против, обменяться почтой электрической.
[email protected]
Извините за навязчивость)
Issue можно удалить.

@Indemsys
Copy link
Owner

Здравствуйте Владислав.

Я делал некоторые вещи на MK70, но реверсом или вскрытием прошивок не занимаюсь.
В чипах Kinetis есть такая область в RAM называется VBAT register file
Там могут храниться ключи шифрования критических данных.
При полном отключении питания (и батарейки и разряда конденсаторов) эта область стирается.
Без ключей обычно с прошивкой ничего стоящего сделать нельзя.
Насколько знаю в таких вещах чип вскрывают химическим способом и режут защитные дорожки на кристалле без отключения батарейки.

Поэтому похоже ничем вам помочь не могу.

@brightproject
Copy link
Author

brightproject commented Apr 20, 2022

Огромное спасибо за отклик, не написали контакты, поэтому позвольте снова ответить здесь в issue не по теме ваших коммитов.
Возможно вы правы на счет "невозможности" перезаписать МК70, но производитель сам говорит, что как то снимает плату с блокировки и врят ли он снимает чип химическим способом и режет дорожки, т.к. со слов производителя, он возвращает ту же плату обратно после прошивки.

Попадалась статья, но там про ЭБУ авто.

В 2010 г. появились новые версии аппаратной реализации ЭБУ M73. С целью удешевления из схемы была удалена микросхема TDA3664, которая обеспечивала питание процессора (и, соответсвенно, ОЗУ) во время отключения зажигания. Разумеется, при этом данные всех адаптаций терялись бы, но в новых прошивках I(А)303CF06 и I(А)327RD08 перед отключением питания процессора данные адаптаций записываются в EEPROM. При включении зажигания содержимое из EEPROM записывается в ОЗУ, таким образом, ЭБУ ведет себя точно также, как если бы питание не отключалось.

Сам производитель говорит, что в обновленной прошивке он ушел от этого, и теперь можно плату держать сколько угодно дольше без питания и плата "не заблокируется" - поэтому у меня теплится надежда на прошивку, так как дамп у меня уже с новой версией ПО.
У меня на плате тоже стоит микросхема, похожая на TDA3664 в обвязке конденсаторов...

Мне вот интересно, прошивка у меня, что должна грузиться с флешки имеет расширение .itw
Это производитель видимо созвучно своей компании сделал ITW GSE.
name_program.itw
Я пробовал открывать прошивку в hex редакторе, и код похож на bin файл, то есть это не hex.
Так вот - если прошивка должна грузиться с флешки через usb.
Есть вероятность, что такая же прошивка и через UART или JTAG загружается или там иная обычно?
Также не ясно с какого адреса начинать загрузку.
По идее если объем флеша микроконтроллера и дампа прошивки одинаковые то с адреса 0*00000

Также мне известно, что МК очень ревностно относятся к файловым системам USB флешек, у знакомого прошивка осциллографа идет только с одной флехи из девяти.
Я пробовал пока две флешки, в форматах FAT 32 и NTFS.

  1. Планирую все таки помучаться с заменой USB флешек, так как в руководстве по обновлению прошивки, сам производитель рекомендует набраться терпения и пробовать грузить ПО с флешки пока не получиться...
  2. Также хочу подключиться по modbus, руководство мне производитель прислал по этому протоколу - но по нему как понимаю, только мониторинг, прошить МК нельзя?
  3. Также думаю купить адаптер JTAG и попробовать зашить прошивку в МК через JTAG.

Подскажите исходя из своего огромного опыта - какие шаги еще можно попробовать сделать?

@Indemsys
Copy link
Owner

Тут мне не ясно откуда у вас тогда дамп и точно ли знаете что это дамп именно прошивки, а не зашифрованный образ?
Потому что в таких чипах память защищается от считывания специальными битами FSEC[SEC] bits
И тогда чип без физического взлома нельзя прочитать никакими внешними инструментами включая JTAG.
Чип в таком случае можно только полностью стереть и запрограммировать чем-то другим потом.

Если у вас действительно бинарная прошивка и не зашифрованная, то в начале должна идти область векторов с периодической структурой 32-битных слов содержащих большое количество нулей.

В голом чипе MK70 нет загрузчика ни по USB ни по UART , а есть только загрузчик по их специализированному интерфейсу EzPort. Это значит что если ваш чип способен загружаться по USB, то в нем есть уже вторичный загрузчик, который способен расшифровывать образы и содержать ключи шифрования. Дампа вторичного загрузчика как понимаю у вас нет.
И тут уже вполне вероятно, что вторичный загрузчик изначально предполагал обход проблем с VBAT register file либо какой-то новый софт прошивки неудачно проапгрейдил свой же вторичный загрузчик после чего он перестал нормально работать.
Нельзя конечно исключать и то что вторичный загрузчик плохо понимает файловую систему на USB флэшке.
NTFS на флэшке точно не должно быть. А FAT система скорее всего должна быть FAT32, но не extFAT.
Покупные флэшки с объёмом больше 32 Гбайт всегда идут с exFAT.

@brightproject
Copy link
Author

brightproject commented Apr 21, 2022

Можно задать еще вопросы:

  1. Что из себя представляет этот EzPort?
    SPI интерфейс или что то "вновь изобретенный велосипед"?
  2. Какой программатор надо для осуществления программирования?
  3. К разъему cortex jtag даже смысла нет смысла подключатся, ничего не получить с него?
  4. Как все же понять, что за прошивка у меня на руках и что за файлы?
    Их вообще три штуки, можно их как то переслать вам по электрической почте?
    Сдается мне все же производитель не заложил, уж слишком сложную процедуру программирования...

@Indemsys
Copy link
Owner

EzPort это SPI интерфейс со специальным протоколом. Я им никогда не пользовался. Всегда использовал JTAG/SWD адаптер от Segger-а
JTAG/SWD применяют когда надо загрузить вторичный загрузчик, но на MK70 на производстве наверно используют ExPort.

Если файл после максимального сжатия любым упаковщиком не уменьшился, а увеличился в размере значит он был зашифрован.
Незашифрованные прошивки под ARM Cortex сжимаются приблизительно в два раза.

Насколько сложна у вас процедура программирования я не знаю, но шифрование прошивок - обычная практика.
У меня шифрование и вторичный загрузчик везде применяются.
В массовых изделиях может быть более 3-х последовательных загрузчиков.
Это связано с необходимостью защищаться от закладок на стороне контрактных производителей.

Моя почта [email protected]
Но я не занимаюсь реверсом.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants