TymuxPowirid
|
|
1 | |
Мужики, поделитесь bootloaderом01.01.1970, 03:00. Показов 4856. Ответов 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
|
01.01.1970, 03:00 | |
Ответы с готовыми решениями:
42
Мужики С праздником, мужики! С 23 февраля, мужики! Выручите мужики... Мужики, читать всем! :) |
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
|
|
11.10.2017, 20:56 | 21 |
Сообщение от Otomys-dm
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
|
|
11.10.2017, 21:43 | 22 |
Хоть RC4, хоть RC5 хоть XORом
Можно использовать системный загрузчик (который по BOOT0=1, но вызывать его из программы например по какой-то команде или если уж совсем по простому нажатием на две кнопки) Как сделано устройство неизвестно. Можно и свой загрузчик написать - делом то на 2-3 часа. Пока вопросы/ответы тут строчить уже можно бы всё сделать.
0
|
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
|
|
11.10.2017, 22:06 | 23 |
А по какому событию надо входить в бутлоадер?
0
|
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
|
|
11.10.2017, 22:07 | 24 |
И почему файл по терминалу отправить нельзя?
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 397
|
|
11.10.2017, 22:21 | 25 |
Уважаемый x893, быдлокодить не хочу и не люблю. Перфекционист я, в какой-то степени) У меня нет ни одного пакета сейчас на машине для программирования. Пытался и ни билдере писать, и на шарпе, и mingv (или как там), и на hiasm.... короче, думаю, понятно. Если бы мне было быстрее - я бы сделал.
Объясните, как встроенному загрузчику стравить произвольно зашифрованный файл, а потом его расшифровать? Otixsam, прошивку же частями нужно отправлять, получив при этом сообщение об удачном приеме предыдущей части... И потом зашифровать - пол дела. Я не лентяй, но для меня это трудно. div, меня устроит секундное ожидание перед стартом основной программы. Терминал то файл отправит, только как его принять, если его размер больше оперативки?
0
|
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
|
|
11.10.2017, 22:47 | 26 |
Сообщение от rymomtsofto
Сообщение от rymomtsofto
Не, понятно, что специальная программа со своим протоколом надежнее. Но терминал писать не надо.
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 397
|
|
11.10.2017, 22:54 | 27 |
Странно, неужели никто не владеет готовым решением? Может в купи-продай тему перенести? Я, как бэ, могу забашлять, если надо. Все понимаю, если человек старался-пыхтел.
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
|
|
11.10.2017, 23:04 | 28 |
stm32f030f4 16 Kb флэша.
Программа пусть 6Кб, еще 6Кб для новой версии. Значит 4Кб остается под загрузчик - в принципе места хватит для UART загрузчика и дешифратора. Если устройство что-то принимает от компьютера, то можно загрузчик туда перенести - хотя не очень правильный вариант. Тогда при старте только дешифратор и прошивальщик останется. Здесь RC5 если нужен.
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
|
|
11.10.2017, 23:19 | 29 |
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 249
|
|
11.10.2017, 23:30 | 30 |
Сообщение от x893
P.S. я на днях тоже бутлоодер делал на F4 по юарту. только у меня в бут заходил если при старте кнопка нажата. потом ожидание сигнала готовности софта по юарту, потом данные по количеству байт прошивки, потом сама прошивка. бут пока не дописал, но в целом все просто и понятно.
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 249
|
|
11.10.2017, 23:32 | 31 |
[QUOTE="otixsom"][QUOTE="Цитата:[/QUOTE]
можешь рассказать про скрипт на маке? дома мак... три месяца пользуюсь , но после винды кажется что вообще ничего не умею делать в ос.
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
|
|
11.10.2017, 23:37 | 32 |
Поэтому правильно сформулированный вопрос это 90% получения правильного ответа.
А как он задан - можно сказать - бери OpenBLT и пользуйся.
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
|
|
12.10.2017, 01:28 | 33 |
[QUOTE="Otomys-dm"][QUOTE="otixsom"]
можешь рассказать про скрипт на маке? дома мак... три месяца пользуюсь , но после винды кажется что вообще ничего не умею делать в ос. Мак это линх с человеческим лицом, отсюда и исходим :) Скрипт простой как угол дома: Код
#!/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 | 34 |
Сообщение от otixsom
0
|
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 98
|
|
12.10.2017, 11:12 | 35 |
Сообщение от otixsom
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
|
|
12.10.2017, 11:16 | 36 |
Сообщение от MStorm
0
|
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
|
|
12.10.2017, 11:55 | 37 |
Ядро - своё; юзерланд - фришный; оболочка - своя.
0
|
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 98
|
|
12.10.2017, 11:59 | 38 |
Да, ядро своё. XNU называется. Там часть из ядра Mach, часть из ядра FriiBSD заимствованы. А часть своя ес-но.
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 27
|
|
12.10.2017, 13:55 | 39 |
- Они называли меня пятнистой лягушкой?
-Да! Да! Лягушкой! И ещё земляным червяком! Редьярд Киплинг "Книга джунглей". Чего накинулись-то ? Лично мне при первом знакомстве с маком без дополнительных разбирательств стало ясно, что это больше freeebsd чем нарbмер ubuntu/asp, но не все-же и то и другое "крутили". Я думаю имелось в виду нечто иное - linuxShitt =! windowsShitt, а не linuxShitt == umyxShitt. Р.S. Лично у меня все сервера на фре.
0
|
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 98
|
|
12.10.2017, 15:00 | 40 |
Ну так шел и ОС - всё-таки совсем разные вещи. bash можно хоть под винду собрать и запустить. Хоть cygwin, хоть mingwin. Также как и Linux соб-но по хорошему даже не ОСь, а только ядро. А ось на базе ядра Linux правильно принято называть GNU/Linux == набор утилит GNU и ядро Linux. Надо ж всё-таки вещи своими именами называть. Android вон тоже на базе ядра Linux, а ось совсем другая, хоть там и bash тоже может стоять.
0
|
12.10.2017, 15:00 | |
12.10.2017, 15:00 | |
Помогаю со студенческими работами здесь
40
Мужики, посоветуйте АЦП Лабораторная работа (мужики выручите) Нужен .bat выручайте мужики! Мужики и мужички, хотели бы Вы родить ребёнка?! Мужики! выручайте ,пожалуйста!(Блок - схема) Мужики, запрашиваю аналогии на паровозиках и станциях Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |