Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как прочитать code flash из самого МК?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
hwdev
Для контроля CRC флеш памяти контроллера f169 нужно считывать его флеш и выдавать наружу. Как это попроще сделать в IAR?
Dog Pawlowa
Цитата(hwdev @ Jun 20 2009, 19:46) *
Для контроля CRC флеш памяти контроллера f169 нужно считывать его флеш и выдавать наружу. Как это попроще сделать в IAR?

Не понял вопроса.
1. Компилятор сам может посчитать контрольную сумму и сохранить по нужному адресу, а Ваша программа - сравнить рассчитанную сумму с ожидаемой и моргнуть светодиодом.
2. Если речь идет о считывании программатором, то где гарантии, что флэш не слетит во время работы?
3. Если речь идет о чтении флэш и передаче по интерфейсу, то в чем проблемы?
hwdev
Цитата(Dog Pawlowa @ Jun 20 2009, 22:57) *
Не понял вопроса.
1. Компилятор сам может посчитать контрольную сумму и сохранить по нужному адресу, а Ваша программа - сравнить рассчитанную сумму с ожидаемой и моргнуть светодиодом.
2. Если речь идет о считывании программатором, то где гарантии, что флэш не слетит во время работы?
3. Если речь идет о чтении флэш и передаче по интерфейсу, то в чем проблемы?

Нужно именно считывать всю флеш и передавать её содержимое стороннему процессору. Тот будет принимать решение о валидности содержимого (заморочки спецсвязи). Т.е. можно просто поставить указатель на 0xFFFF и читать до упора или же нужны специальные функции доступа?
Dog Pawlowa
Цитата(hwdev @ Jun 21 2009, 09:47) *
Т.е. можно просто поставить указатель на 0xFFFF и читать до упора или же нужны специальные функции доступа?

Да ничего не нужно, это же архитектура от фон Неймана, единое пространство памяти, даже модификаторы для указателей не нужны.
А вот куда указатели ставить и где упор... Правильнее ограничить область чтения и читать только заведомо существующую флэш, что зависит от контроллера.
Иначе Ваша спецсвязь никогда не свяжется smile.gif
MrYuran
Цитата(hwdev @ Jun 21 2009, 10:47) *
Нужно именно считывать всю флеш и передавать её содержимое стороннему процессору. Т

Позаботьтесь ещё о защите данной команды от несанкционированного доступа, чтобы враги не смогли слить содержимое флеши и разобраться в секретных заморочках вашей спецсвязи.
Например, загрузчик BSL использует в качестве пароля содержимое секции векторов прерывания (64 байта). Вероятность подбора невелика, особенно если на неиспользуемые вектора ставить заглушки (как делает mspgcc), а не оставлять 0xFFFF, как делает IAR.
hwdev
Цитата(MrYuran @ Jun 21 2009, 18:25) *
Позаботьтесь ещё о защите данной команды от несанкционированного доступа, чтобы враги не смогли слить содержимое флеши и разобраться в секретных заморочках вашей спецсвязи.
Например, загрузчик BSL использует в качестве пароля содержимое секции векторов прерывания (64 байта). Вероятность подбора невелика, особенно если на неиспользуемые вектора ставить заглушки (как делает mspgcc), а не оставлять 0xFFFF, как делает IAR.

И как тогда организовать проверку пароля? Передавать в МК - считают и подставят. Кодировать кусочек флеша, накладывая маску, и отсылая процессору? Несерьезно, набирается статистика и обнаруживается маска в два счета. Куда пароль передвать или где его проверять?
zltigo
Цитата(MrYuran @ Jun 21 2009, 17:25) *
Позаботьтесь ещё о защите данной команды от несанкционированного доступа, чтобы враги не смогли слить содержимое флеши и разобраться в секретных заморочках вашей спецсвязи.

Спокойно. Этого не надо - от врагов самая надежная защита пластилиновая печать. Короче, в России главным считается совпадение с эталоном. Остальное не есть забота разработчика.
=DS=
Цитата(hwdev @ Jun 21 2009, 10:47) *
Нужно именно считывать всю флеш и передавать её содержимое стороннему процессору. Тот будет принимать решение о валидности содержимого (заморочки спецсвязи).

Простите за любопытство, а какой в этом смысл? Для защиты от случайного повреждения программы достаточно контрольной суммы, а обнаружить закладку так не получится - любая хоть чуть-чуть уважающяя себя закладка просто перехватит выдаваемый наружу поток и подправит, чтобы скрыть свое присутствие...
Нет, в общем-то понятно, что заказчик хотел, то пусть и получит, просто не могу понять, чем вообще такое требование мотивировано?

Цитата(hwdev @ Jun 22 2009, 00:14) *
И как тогда организовать проверку пароля? Передавать в МК - считают и подставят. Кодировать кусочек флеша, накладывая маску, и отсылая процессору? Несерьезно, набирается статистика и обнаруживается маска

Действительно, зачем еще какие-то пароли (которые еще и перехватить могут !!!), когда и так все содержимое флешки тупо вываливается наружу по первой просьбе biggrin.gif

А если всерьез, то считать ГАРАНТИРОВАННО ПОДЛИННОЕ содержимое флешки можно через JTAG или BSL. Через BSL проще чем через JTAG.
Dog Pawlowa
Цитата(=DS= @ Jun 23 2009, 01:17) *
Нет, в общем-то понятно, что заказчик хотел, то пусть и получит, просто не могу понять, чем вообще такое требование мотивировано?

Вы просто со многим не сталкивались.
Даже в обычных коммерческих системах бывают случаи когда после сертификации не допускается менять код.
Что ж говорить о системе защиты связи?
Или, например, подмена ПО игрового автомата с ПРАВИЛЬНОЙ контрольной суммой приведет к тому, что клиент никогда не выиграет. Доставай чистые денежки и все.
=DS=
Цитата(Dog Pawlowa @ Jun 23 2009, 12:22) *

Да нет, цель-то всего этого понятна, я говорил немного о другом - поскольку контроллер будет САМ выдавать содержимое своей флеши, какая у Вас гарантия, что оно подлинное?
Т.е. какой смысл требовать у контроллера выдать содержимое флешки, если полученной информации нельзя доверять?
Dog Pawlowa
Цитата(=DS= @ Jun 23 2009, 11:41) *
Да нет, цель-то всего этого понятна, я говорил немного о другом - поскольку контроллер будет САМ выдавать содержимое своей флеши, какая у Вас гарантия, что оно подлинное?
Т.е. какой смысл требовать у контроллера выдать содержимое флешки, если полученной информации нельзя доверять?

Вспомним цели контроля и логические операции smile.gif

Как может микроконтроллер, в частности MSP430, выдать данные о флэш-памяти, соответствующие эталонным, и при этом работать по другой программе? - У него просто нет больше места.

То есть любое отклонение трактуется как несоответствие и работа невозможна.
=DS=
Цитата(Dog Pawlowa @ Jun 23 2009, 14:41) *
Как может микроконтроллер, в частности MSP430, выдать данные о флэш-памяти, соответствующие эталонным, и при этом работать по другой программе? - У него просто нет больше места.

Без проблем. Ему же не нужно будет параллельно основной деятельности еще и втихаря рассчитывать баллистическую орбиту rolleyes.gif . Модифицирован будет небольшой кусочек кода (допустим, в Вашем примере, отвечающий за выигрыш) и процедура вывода содержимого флешки, подставляющяя при выводе "правильный" образ памяти в той части, где она отличается от действительного (в том числе и собственный код, естественно). Ресурсов это практически жрать не будет - сотня-другая байт.
zltigo
Цитата(=DS= @ Jun 23 2009, 01:17) *
Простите за любопытство, а какой в этом смысл?

Смысла, естественно, нет никакого. Обычное требование оставшееся по скудоумию со времен перфолент и прочих внешних носителей. При этом совершенно естественным даже в те времена считалось, что если враг получит доступ к объекту, от модификации НЕ СПАСЕТ НИЧЕГО и защищать ОПИСАННЫМ ОБРАЗОМ можно и нужно не железо, или те-же самые хотя-бы прошитые загрузчики с перфоленты а именно внешние носители к которым потенциально проще получить доступ. Носители с которых каждый раз осуществляется загрузка исчезли, но тупые исполнители хотят и дальше пребывать при исполнении обязанностей sad.gif.
Dog Pawlowa
Цитата(=DS= @ Jun 23 2009, 17:39) *
Без проблем...

Ну нет, слишком большие упрощения. smile.gif
Принимаем, что аппаратура не изменилась (то есть флэшка с неба не свалилась), а вся память занята программным кодом и простому утаптыванию не поддается.
zltigo
Цитата(Dog Pawlowa @ Jun 23 2009, 19:09) *
Ну нет, слишком большие упрощения. smile.gif

Совершенно обычные реалии, сколько Вы обычно битиков правите для лечения?
А вот Вы далее начинаете совершенные натягивание за уши.
Цитата
Принимаем, что аппаратура не изменилась (то есть флэшка с неба не свалилась),

Тогда не изменилась и прошивка.
Цитата
а вся память занята программным кодом и простому утаптыванию не поддается.

Ну да,совершенно, типа,обычное явление smile.gif smile.gif smile.gif
Dog Pawlowa
Цитата(zltigo @ Jun 23 2009, 19:18) *
Совершенно обычные реалии, сколько Вы обычно битиков правите для лечения?

Хм, допустим один бит. То есть один байт искажен. Старший байт коэффициента выплат :-)
Его нужно подменить - вставить в утилиту передачи инфо пару команд, но которые тоже нужно подменить. Т.е. сделать просто не получится.

Цитата(zltigo @ Jun 23 2009, 19:18) *
А вот Вы далее начинаете совершенные натягивание за уши.

Немножко smile.gif Допустим, инспекция в состоянии отличить доработки в аппаратуре, иначе дискуссия переходит в обсуждение грабежа, а не ловкого мошенничества, и поэтому становится неинтересной.

Цитата(zltigo @ Jun 23 2009, 19:18) *
Ну да,совершенно, типа,обычное явление smile.gif smile.gif smile.gif

Ага, я злобный разработчик исходной программы и забил все дыры данными из любого файла zip/arj.
Ужать дыры невозможно.
Теоретически можно ужать основную программу. Весь вопрос, хватит ли освобожденного места для распаковщика.

Вот тут я цифрами не владею, было бы интересно Вас послушать smile.gif
=DS=
Цитата(Dog Pawlowa @ Jun 23 2009, 23:01) *
Ага, я злобный разработчик исходной программы и забил все дыры данными из любого файла zip/arj.
Ужать дыры невозможно.

По моему, слишком безапелляционное суждение. Имея заранее заданный фиксированный набор данных, скорее всего его можно ужать плотнее, чем это сделает стандартный архиватор, который все-таки представляет собой компромиссное решение для разных типов входных данных. Стоит игра свеч или нет, надо смотреть в каждом конкретном случае.
Цитата(Dog Pawlowa @ Jun 23 2009, 23:01) *
Теоретически можно ужать основную программу. Весь вопрос, хватит ли освобожденного места для распаковщика. Вот тут я цифрами не владею, было бы интересно Вас послушать smile.gif

Хоть спрашивали и не меня, отвечу, поскольку впихивать невпихуемое приходилось очень часто и на самых разных архитектурах. Гарантированного ответа тут нет, но все же вероятнее да, чем нет, причем намного вероятнее. Лазеек можно найти кучу. Если вы дублируете, скажем, для надежности настройки в инфо-области, можно выкинуть дубль и тупо повторить выдачу. Если... Просто мы ввяжемся в бесконечный спор "а если я так... - а я тогда так... - а я тогда... " который никому ничего не докажет. Речь-то шла о том, что пересылка памяти наружу средствами самого контроллера не гарантирует ее подлинности, и если я не найду очередную лазейку, это не говорит о том, что ее не найдет кто-то другой. Сам принцип порочен.
Dog Pawlowa
Цитата(=DS= @ Jun 24 2009, 01:38) *
Сам принцип порочен.

Согласен, но встает вопрос цены такой подмены.

Украсть ядерные секреты, данные о конструкции нового оружия подменой телефонного аппарата - означает сэкономить миллиарды.
Убедиться, что в местном мухосранском казино автоматы не мухлюют - другая цена вопроса.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.