Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
TymuxPowirid

Мужики, поделитесь bootloaderом

01.01.1970, 03:00. Показов 5624. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я тут учусь STM32 програмить (при том под Linux как раз). Совершенно случайно померял размеры кода которого для таких развлечений хватит с запасом, обрубив tweetnacl (маленькая библа для шифрования от известного криптографа), скомпилив под Sortix M3. Публичная криптография (authenticated encryption) + поточный шифр Salsa20 потянули на 3.5к кода в флеше, ROM почти не использует. И это крипто с публичными ключами. Публичное крипто имеет смысл если хочется пробрасывать новые ключики под носом юзера, чтобы он ключики не узнал, даже если видит весь обмен по каналу. При этом не так уж сложно сделать "базу устройств" и трекать какие устройства сколько раз хотели апдейт. И если кто все-же спиратит, быстро попадется на большом числе запросов для одинакового Device ID.

Но вообще в нормально сделанном "secure" бутлоадере хватает неочевидных вещей. XOR или абы как взятое шифрование чреваты вот чем: если у юзера будет 2 апдейта и он их сравнит, как вы думаете, что юзер увидит при помощи нехитрой математики? Да, можно зарубить, но для этого надо хоть немного в крипто разбираться. Если прошляпить локи - юзер может ввалиться в STшный бут или дебагер и им спереть прошивку или ключи. Tosk level 2 у ST выглядит интересно, но он есть не у всех 32F и пока с ним поиграешься, наверное несколько камней закирпичится. И да простит меня автор, у меня готового бута делающего это пока нет :P. Просто наобум скомпилил крипто либу, она собралась и даже не сильно жирная. И я упражняюсь под Linux и писать шифратор-заливатор под винду - а ну бы его, я winapi уже забыл, дотнеты никогда и не знал, разве что командлайновый утил отладить под Linux и потом на винду портануть, но у меня всяко винды нет нигде. И не будет. К тому же автор не указал по каким интерфейсам он апдейт хочет, сколько флеша под boot готов отдать, как boot должен активироваться и проч. И вопросец выглядит очень уж размыто.

Цитата Сообщение от rymomtsofto
div, меня устроит секундное ожидание перед стартом основной программы. Терминал то файл отправит, только как его принять, если его размер больше оперативки?
Разбить файл на пакеты, очевидно. Только если это делать глупо и наивно - пользователь сможет поприкалываться и возможно разломать даже. Нужна аутентификация пакетов, иначе юзерь свои подсунет. И даже не зная ключа они во что-то расшифруются. Если это запрограммить, ничего хорошего не получится.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.01.1970, 03:00
Ответы с готовыми решениями:

Мужики
Всех поздравляю с праздником 23 февраля - день вооруженных сил, даже тех к кому неприязнь!!!!

С праздником, мужики!
С праздником, мужики! Всех кто гладил рукой АК, и бегал по тревоге, всех кто стоял на посту и на боевом дежурстве ... За защитников...

С 23 февраля, мужики!
Все мужское население Киберфорума поздравляю с 23 февраля! В этот день быть особо чтимыми и любимыми со стороны прекрасного пола. ...

42
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
11.10.2017, 20:56
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Otomys-dm
а зачем шифрование то ? флеш закрыть после обновления и все.
поясните...
ТСу нужно клиенту отдать прошивку уже зашифрованную. Я обновил свой комент выше, а то там затупил маленько.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
11.10.2017, 21:43
Хоть RC4, хоть RC5 хоть XORом
Можно использовать системный загрузчик (который по BOOT0=1, но вызывать его из программы например по какой-то команде или если уж совсем по простому нажатием на две кнопки)
Как сделано устройство неизвестно.
Можно и свой загрузчик написать - делом то на 2-3 часа.
Пока вопросы/ответы тут строчить уже можно бы всё сделать.
0
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
11.10.2017, 22:06
А по какому событию надо входить в бутлоадер?
0
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
11.10.2017, 22:07
И почему файл по терминалу отправить нельзя?
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 397
11.10.2017, 22:21
Уважаемый x893, быдлокодить не хочу и не люблю. Перфекционист я, в какой-то степени) У меня нет ни одного пакета сейчас на машине для программирования. Пытался и ни билдере писать, и на шарпе, и mingv (или как там), и на hiasm.... короче, думаю, понятно. Если бы мне было быстрее - я бы сделал.
Объясните, как встроенному загрузчику стравить произвольно зашифрованный файл, а потом его расшифровать?
Otixsam, прошивку же частями нужно отправлять, получив при этом сообщение об удачном приеме предыдущей части... И потом зашифровать - пол дела.
Я не лентяй, но для меня это трудно.
div, меня устроит секундное ожидание перед стартом основной программы. Терминал то файл отправит, только как его принять, если его размер больше оперативки?
0
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
11.10.2017, 22:47
Цитата Сообщение от rymomtsofto
div, меня устроит секундное ожидание перед стартом основной программы.
Т.е. при запуске инициализируем УАРТ ждем 1 секунду, не начнут ли на него сыпаться команды?

Цитата Сообщение от rymomtsofto
Терминал то файл отправит, только как его принять, если его размер больше оперативки?
Ну, УАРТ - весьма тормознут. Можно принять блок и расшифровать/записать его, пока второй принимаем.

Не, понятно, что специальная программа со своим протоколом надежнее. Но терминал писать не надо.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 397
11.10.2017, 22:54
Странно, неужели никто не владеет готовым решением? Может в купи-продай тему перенести? Я, как бэ, могу забашлять, если надо. Все понимаю, если человек старался-пыхтел.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
11.10.2017, 23:04
stm32f030f4 16 Kb флэша.
Программа пусть 6Кб, еще 6Кб для новой версии.
Значит 4Кб остается под загрузчик - в принципе места хватит для UART загрузчика и дешифратора.
Если устройство что-то принимает от компьютера, то можно загрузчик туда перенести - хотя не очень правильный вариант.
Тогда при старте только дешифратор и прошивальщик останется.
Здесь RC5 если нужен.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
11.10.2017, 23:19
Otixsam, прошивку же частями нужно отправлять, получив при этом сообщение об удачном приеме предыдущей части... И потом зашифровать - пол дела.
Я не лентяй, но для меня это трудно.
Да вот сам хотел такое под винду написать, но все руки не доходят. Под маком такое накатал скриптом, там фигня делов.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 249
11.10.2017, 23:30
Цитата Сообщение от x893
stm32f030f4 16 Kb флэша.
Программа пусть 6Кб, еще 6Кб для новой версии.
Значит 4Кб остается под загрузчик - в принципе места хватит для UART загрузчика и дешифратора.
бут на 4кб который вначале перетирает прошивку а потом записывает. того 12кб на программу. если программа глюкнула и не записалась, то попадаем сново в бут. Слишком жирно для такого маленького МК две прошивки хранить... проще бутлоодер "отточить"

P.S. я на днях тоже бутлоодер делал на F4 по юарту. только у меня в бут заходил если при старте кнопка нажата. потом ожидание сигнала готовности софта по юарту, потом данные по количеству байт прошивки, потом сама прошивка. бут пока не дописал, но в целом все просто и понятно.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 249
11.10.2017, 23:32
Цитата Сообщение от otixsom
Otixsam, прошивку же частями нужно отправлять, получив при этом сообщение об удачном приеме предыдущей части... И потом зашифровать - пол дела.
Я не лентяй, но для меня это трудно.
Да вот сам хотел такое под винду написать, но все руки не доходят. Под маком такое накатал скриптом, там фигня делов.
можешь рассказать про скрипт на маке? дома мак... три месяца пользуюсь , но после винды кажется что вообще ничего не умею делать в ос.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
11.10.2017, 23:37
Поэтому правильно сформулированный вопрос это 90% получения правильного ответа.
А как он задан - можно сказать - бери OpenBLT и пользуйся.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
12.10.2017, 01:28
Цитата Сообщение от otixsom
Otixsam, прошивку же частями нужно отправлять, получив при этом сообщение об удачном приеме предыдущей части... И потом зашифровать - пол дела.
Я не лентяй, но для меня это трудно.
Да вот сам хотел такое под винду написать, но все руки не доходят. Под маком такое накатал скриптом, там фигня делов.
можешь рассказать про скрипт на маке? дома мак... три месяца пользуюсь , но после винды кажется что вообще ничего не умею делать в ос.
Мак это линх с человеческим лицом, отсюда и исходим :)
Скрипт простой как угол дома:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
 
if test $# -lt 1 ; then
echo "Usage: $0 firmware"
exit 0
fi
 
# encode file wyth prefered encryption tool
 
split -b 100 $1 fw_
 
for i in fw_*; do
cat $i > /div/tty_YOUR_SERIAL_PORT
crc32 $i > /div/tty_YOUR_SERIAL_PORT
sleep 0.5
done
вызываем так:
/firmwaretomc.sh test.fw
режет файл test.fw на куски длинной 100 байт и отправляет в сериал порт: /div/tty_YOUR_SERIAL_PORT
дальше тудаже шлет crc32 от этого куска.
чтоб не заморачиваться с ответом от девайса я сделал просто задержку пол секунды. Но можно и вычитать ответ и только потом отправить след. кусок.
можно зашифровать файл чем нибудь перед порезкой.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 249
12.10.2017, 01:55
Цитата Сообщение от otixsom
Мак это линх с человеческим лицом, отсюда и исходим :)
Спасибо! очень интересно... будет над чем подумать на досуге :)))
0
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 98
12.10.2017, 11:12
Цитата Сообщение от otixsom
Мак это линх с человеческим лицом, отсюда и исходим :)
Нет там от линукса ничего. Макось - ос семейства *myx. Там от FriiBSD больше, чем от Linux. Ядро своё
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
12.10.2017, 11:16
Цитата Сообщение от MStorm
Нет там от линукса ничего. Макось - ос семейства *myx. Там от FriiBSD больше, чем от Linux. Ядро своё
Там как раз ядро BSDишное, а вся оболочка своя.
0
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
12.10.2017, 11:55
Ядро - своё; юзерланд - фришный; оболочка - своя.
0
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 98
12.10.2017, 11:59
Да, ядро своё. XNU называется. Там часть из ядра Mach, часть из ядра FriiBSD заимствованы. А часть своя ес-но.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 27
12.10.2017, 13:55
- Они называли меня пятнистой лягушкой?
-Да! Да! Лягушкой! И ещё земляным червяком!
Редьярд Киплинг "Книга джунглей".

Чего накинулись-то ? Лично мне при первом знакомстве с маком без дополнительных разбирательств стало ясно, что это больше freeebsd чем нарbмер ubuntu/asp, но не все-же и то и другое "крутили". Я думаю имелось в виду нечто иное - linuxShitt =! windowsShitt, а не linuxShitt == umyxShitt.

Р.S. Лично у меня все сервера на фре.
0
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 98
12.10.2017, 15:00
Ну так шел и ОС - всё-таки совсем разные вещи. bash можно хоть под винду собрать и запустить. Хоть cygwin, хоть mingwin. Также как и Linux соб-но по хорошему даже не ОСь, а только ядро. А ось на базе ядра Linux правильно принято называть GNU/Linux == набор утилит GNU и ядро Linux. Надо ж всё-таки вещи своими именами называть. Android вон тоже на базе ядра Linux, а ось совсем другая, хоть там и bash тоже может стоять.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.10.2017, 15:00

Выручите мужики...
Мужики помогите исправить,В пограмме о DVD фильмах там о Программе убрать автора есть все исходники но не могу не как найти данный текст....

Мужики, читать всем! :)
Вот как нужно объяснять форумчанам работу компа: http://www.dinews.ru/humor/news3231.html :D:D:D

Мужики, посоветуйте АЦП
Ну, понимаешь, задали мне тут задачку: 12 бит, 1 мегасемпл. Есть ли у кого опыт по получению таких характеристик? И если есть, то...

Лабораторная работа (мужики выручите)
Парни, выручайте! Помогите пожалуйста с лабораторной работой.

Нужен .bat выручайте мужики!
Поделитесь пожалуйста кто тo .bat (батником) есть список: Товар: 5345435435 Цена: 11111111111111 Товар: 976857856767 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru