Перейти к содержанию

STM32F030 защита прошивки от считывания


LiVit

Рекомендуемые сообщения

Добрейшего всем времени суток!

Случилось недавно моему заказчику захотеть защитить прошивку от считывания (да, я знаю, люди эту защиту сковыривают на раз, но это уже не моя беда). А так как делать это вручную, при прошивке каждого проца, довольно геморройно, было решено добавить в код "самозащиту".

Почитав мануал на проц, погуглив, почитав комментарии в stm32F0xx_flash.h, я написал следующий код:

    #include "stm32F0xx_flash.h"
    if (RESET == FLASH_OB_GetRDP())        //checking protection status
    {
        FLASH_OB_Unlock();    //unblock the Option Byte
        if (FLASH_COMPLETE == FLASH_OB_RDPConfig(OB_RDP_Level_1))     FLASH_OB_Launch();
        FLASH_OB_Lock();
    }

Казалось бы, всё сделано так, как рекомендовано. Тем не менее, этот код не работает.

Гугль показал, что данная тема волнует не только меня, но и других камрадов. 

В общем, правильное решение выглядит так:

    #include "stm32F0xx_flash.h"    
    if (RESET == FLASH_OB_GetRDP())        //checking protection status
    {
        FLASH_Unlock();    //unblock the FLASH (!!)
        FLASH_OB_Unlock();    //unblock the Option Byte
        if (FLASH_COMPLETE == FLASH_OB_RDPConfig(OB_RDP_Level_1))     FLASH_OB_Launch();
        FLASH_OB_Lock();
        FLASH_Lock();
    }

Обратите внимание, - перед тем, как разблокировать Option Byte, необходимо разблокировать саму флэшь.

Изменено пользователем LiVit
Ссылка на комментарий
Поделиться на другие сайты

В 20.06.2018 в 13:24, mmc1 сказал:

Эта процедура не дает считать флеш или затирает ее при попытке чтения?

Как следует из кода, включается Read Protection level 1 (OB_RDP_Level_1). Это означает, что считать код нельзя (ну, в STM так думают). 

Однако, чип можно стереть, установив при помощи программатора уровень защиты 0.

 

Если нужна более продвинутая защита, следует установить уровень 2 (OB_RDP_Level_2), это должно привести к полной залочке программы - изменить или стереть её уже невозможно.

 

Если вы хотите, чтобы при попытке прочитать программу она самоликвидировалась, вам следует прописать это в обработчике прерывания MemManage_Handler() или FLASH_IRQHandler() - надо уточнить в мануале.

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

В 16.06.2018 в 16:08, LiVit сказал:

 FLASH_Lock();

Так полагаю что после данной процедуры и ваша внутренняя программа не будет иметь возможности записи и сохранения во флешь!  а это бывает очень часто необходимо, что бы сохранить индивидуальные  настройки. Конечно если сохранения не нужно тогда вопросов нет.

Сергей.

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

4 часа назад, optima сказал:

Так полагаю что после данной процедуры и ваша внутренняя программа не будет иметь возможности записи и сохранения во флешь!  а это бывает очень часто необходимо, что бы сохранить индивидуальные  настройки. Конечно если сохранения не нужно тогда вопросов нет.

Это естественно.

Для разлочивания используйте FLASH_Unlock();

Изменено пользователем LiVit
Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

А ну без денег не прочитают это уже защита отсеивающая практически всех кто бесплатно хочет поиметь прошивку.

Без взлома корпуса еще никто не прочитал. Даже если и считают прошивку, она может быть привязана к ID микроконтроллеру который уникален и используется для защиты. Так что получить доступ к чтению прошивки это еще только начало пути.

За 120000 софт проще написать новый. Я например могу за меньшие деньги софт написать с нуля.

 

Изменено пользователем Oxford
Ссылка на комментарий
Поделиться на другие сайты

4 часа назад, Oxford сказал:

Я например могу за меньшие деньги софт написать с нуля.

Вряд ли! можешь, но только ровно на столько сколько хватит твоих знаний. И проблема тут не только в знании железа и языков программирования. Существует множество железа в котом используются разнообразные не документированные  протоколы обмена!

К примеру, пульт управления промышленным кондиционером по can шине,  вы можете в совершенстве знать как работает can протокол но не можете знать ни используемые ID, ни DATA,  ни что в себе они несут, даже скорость обмена под вопросом. От сюда вопрос как вы будете писать?  Попросите вам предоставить рабочий комплект? И таких примеров множество!

Сергей.

Ссылка на комментарий
Поделиться на другие сайты

Чушь не порите ей больно. А что за пульт такой ценный? И что в нем уникального?

Так вряд ли или можешь.

 

 

Изменено пользователем Oxford
Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Oxford сказал:

Тот сайт что вы нашли на бабки кидает

Это вы нашли, я его не искал!

1 час назад, Oxford сказал:

если есть конкретная работа обращайтесь будем работать.

Нет уж увольте! как ни будь без вас!

1 час назад, Oxford сказал:

Наша команда вам поможет.

Нет у вас ни какой команды!

1 час назад, Oxford сказал:

не надо фантазировать

 

Изменено пользователем optima

Сергей.

Ссылка на комментарий
Поделиться на другие сайты

Лучше бы на вопрос ответили что за пульт было бы полезнее чем сопли ваши читать. Займитесь делом лучше.

Ломатель прошивок.

Изменено пользователем Oxford
Ссылка на комментарий
Поделиться на другие сайты

Я вам привел простой пример а вы и распустили сопли! так что по соплям это к вам, вот и займитесь лучше делом, нежели отвечать вопросом на вопрос! 

Сергей.

Ссылка на комментарий
Поделиться на другие сайты

Угомонитесь, горячие финские пааарни. Вопрос был про залочивание семейства 030. Вопрос успешно решен.

По поводу readout protection и его вскрытия -  инфа в инете, желающие - найдут. По крайней мере, когда я искал решение проблемы с залочкой, первым делом выскакивали статьи по преодолению этой защиты )))

https://www.usenix.org/conference/woot17/workshop-program/presentation/obermaier - как пример.

Не исключаю, что производитель пофиксил эту проблему. Но скорее всего -нет.

Ссылка на комментарий
Поделиться на другие сайты

17 часов назад, optima сказал:

вы можете в совершенстве знать как работает can протокол но не можете знать ни используемые ID, ни DATA,  ни что в себе они несут, даже скорость обмена под вопросом.

Разбираем пульт, подключаем логический анализатор, сливаем обмен данными вместе со скоростью, ID и т.п. Пишем свое ПО. В чем сложность то? Эка невидаль, протокол обмена слить. Сложности появятся лишь в том случае, когда на протокол наложено шифрование. Но для того, чтобы кто-то стал заморачиваться с шифрованием ПРОВОДНОГО протокола, он как минимум должен управлять ядерными каким-то вооружением. Так что не наводите панику.

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, BARS_ сказал:

Так что не наводите панику.

А кто ее наводит?

2 часа назад, BARS_ сказал:

Эка невидаль, протокол обмена слить.

Вы на одном континенте а заказчик на другом, с пальца будете протокол сливать?

Как минимум

21 час назад, optima сказал:

Попросите вам предоставить рабочий комплект? И таких примеров множество!

 

Сергей.

Ссылка на комментарий
Поделиться на другие сайты

57 минут назад, optima сказал:

Вы на одном континенте а заказчик на другом,

Либо заказчик сам сливает протокол (подключить 3 провода кто угодно сможет), либо я еду и делаю это. В чем проблема? Конечная отладка в любом случае будет на железе.

Ссылка на комментарий
Поделиться на другие сайты

Либо, либо, все это болтовня!  за частую у заказчика нет рабочего комплекта!

В рабочем случае, снимите вы или заказчик трассу с CAN шины приблизительно такого вида

Time            ID        DLC    Data                    Comment
02,020   00018002   5    07 88 00 01 00          ASCII:     
02,296   0600BC02   6   5B 10 00 08 34 26       ASCII:[   4&
02,300   0600BC02   7   5B 00 00 E0 07 04 09    ASCII:[      
02,402   02014004    8   01 04 0F 00 00 00 00 00 ASCII:        
02,406   02FF4004   8    00 00 D8 01 01 01 02 01 ASCII:        
02,412   02FF4004   8    FF 7F D8 01 01 02 02 01 ASCII:        
02,592   03014004   8    01 00 00 00 00 01 00 00 ASCII:        
02,854   06014004   8    00 00 00 00 00 00 00 00 ASCII:        
02,858   0500BC02   3    0D 30 00                ASCII:m0 
02,864   0000BC02   3    6D 30 00                ASCII:m0 
02,868   05FF4004   8    FF FF 0F 00 B0 13 0B 17 ASCII:        
02,959   05FF4004   8    FF FF 0F 00 B0 13 0B 17 ASCII:        
03,187   05FF4004   8    FF FF 0F 00 B0 13 0B 17 ASCII:        
03,369   05FF4004   8    FF FF 0F 00 B0 13 0B 17 ASCII:        
03,371   05014400   8    10 15 71 12 07 20 00 00 ASCII:  q     
03,373   02014004   8    01 04 0F 00 00 00 00 00 ASCII:        
03,379   02FF4004   8    00 00 D8 01 01 01 02 01 ASCII:        
03,383   02FF4004   8    FF 7F D8 01 01 02 02 01 ASCII:      

Дальше что? без рабочего комплекта под рукой, который заказчик не может предоставить! Это просто куча не нужных данных.

А отладку на железе сделать никто не даст,  комплект единственный и в работе!

Вы за 120к готовы сколько раз слетать к заказчику к примеру во Владик?

А Oxford по ходу может, только не слетать а языком почесать!

В 07.08.2018 в 17:25, Oxford сказал:

За 120000 софт проще написать новый. Я например могу за меньшие деньги софт написать с нуля.

Поэтому не надо говорить гоп, пока не перепрыгнул.

Сергей.

Ссылка на комментарий
Поделиться на другие сайты

5 минут назад, optima сказал:

Дальше что? без рабочего комплекта под рукой, который заказчик не может предоставить! Это просто куча не нужных данных.

Ну не надо сказок. Это будут сообщения на строго определенные действия. ненужные они только пока не привязаны к чему-то осязаемому. Когда есть комплект, который еще и в работе, CAN протокол сливается очень просто. 

 

6 минут назад, optima сказал:

Вы за 120к готовы сколько раз слетать к заказчику к примеру во Владик?

Можно даже не летать. Делается тестовый снифер с прошивкой по ЛАН или USB, заказчик его подключает и тыкает в ПК с удаленным рабочим столом. ВСЕ, дальше хоть заработайся. А ведь это не единственный вариант. Можно и слетать, если заказчик в этом заинтересован.

Ссылка на комментарий
Поделиться на другие сайты

27 минут назад, BARS_ сказал:

Ну не надо сказок. Это будут сообщения на строго определенные действия

Вот именно не надо сказок! это кусок из рабочей кан шины снятый канхакером,  конкретно это управление блоком питания flatpack2,  и какие то ваши действия приведут только к изменению каких то байтов в массе этих данных! Но определенные действия в виде изменения сетевого адреса блока в шине, не изменят в данных ровно ничего!  

41 минуту назад, BARS_ сказал:

CAN протокол сливается очень просто.

Да сливается просто не спорю, но попробуйте определить в данных сколько устройств в сети и в каком направлении идут данные.

Вот полный кусок трассы, можете потренироваться, откроется любым текстовым редактором. 

CAN ON.trc

Сергей.

Ссылка на комментарий
Поделиться на другие сайты

46 минут назад, optima сказал:

это кусок из рабочей кан шины снятый канхакером,  конкретно это управление блоком питания flatpack2

Я уже выше писал, что без привязки к конкретному девайсу этот текст ничего не стоит.

 

53 минуты назад, optima сказал:

но попробуйте определить в данных сколько устройств в сети и в каком направлении идут данные.

А сколько платите за работу?

 

Ссылка на комментарий
Поделиться на другие сайты

7 минут назад, BARS_ сказал:

А сколько платите за работу?

Ни сколько! эта работа проделана лично мной, что там и как мне предельно ясно,  и я точно знаю что только снятым протоколом обмена там ни чего не разобрать!

Изменено пользователем optima

Сергей.

Ссылка на комментарий
Поделиться на другие сайты

Поддержу @optima . Лично достаточно много работал с шиной CAN (только в автомобиле). Когда передачи не зашифрованы - отлавливаются легко и быстро, даже нет необходимости физически находиться рядом. Но когда часть потока зашифрована, а зашифрована она надёжно - никакие танцы с бубном не помогут. И (по секрету) 120к - это стоимость двух готовых устройств, так что обратиться в такую фирму и считать прошивку - вполне себе выход)

Правда, мы пошли другим путём, и написали свой софт с нуля. Но нам неоткуда было считывать готовую прошивку)

А привязка к определённому ID камня убирается дизасмом

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...
В 16.06.2018 в 16:08, LiVit сказал:

    #include "stm32F0xx_flash.h"    
    if (RESET == FLASH_OB_GetRDP())        //checking protection status
    {
        FLASH_Unlock();    //unblock the FLASH (!!)
        FLASH_OB_Unlock();    //unblock the Option Byte
        if (FLASH_COMPLETE == FLASH_OB_RDPConfig(OB_RDP_Level_1))     FLASH_OB_Launch();
        FLASH_OB_Lock();
        FLASH_Lock();
    }

Обратите внимание, - перед тем, как разблокировать Option Byte, необходимо разблокировать саму флэшь.

А какая необходимость в  FLASH_OB_Lock();    FLASH_Lock();  ?

После  FLASH_OB_Launch() будет системный сброс и соответственно эти две функции уже выполнятся не будут.

 * @note   The function @ref HAL_FLASH_Unlock() should be called before to unlock the FLASH interface
  *         The function @ref HAL_FLASH_OB_Unlock() should be called before to unlock the options bytes
  *         The function @ref HAL_FLASH_OB_Launch() should be called after to force the reload of the options bytes
  *         (system reset will occur)

Функцию  FLASH_OB_Launch(), можно не использовать, тогда   FLASH_OB_Lock();    FLASH_Lock();  будут уже нужны,  Но защита будет включаться после самостоятельной перезагрузки системы.

Изменено пользователем optima

Сергей.

Ссылка на комментарий
Поделиться на другие сайты

20 часов назад, optima сказал:

А какая необходимость в  FLASH_OB_Lock();    FLASH_Lock();  ?

После  FLASH_OB_Launch() будет системный сброс и соответственно эти две функции уже выполнятся не будут.

Правильно!

Вот, теперь видно человека, который читает и анализирует код ))

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...