Существует одна очень замечательная учебно-треннировочная электронная плата Olimex-STM32-H407. В этом тексте я покажу как на ней можно запустить прошивку культового российского продукта Пастильда (Pas~).
Что такое Пастильда (Pas~)?
Пастильда - это универсальный аппаратный хранитель паролей для всяческих сайтов. Это устройство посредник между USB клавиатурой и персональным компьютером PC, которое по команде с клавиатуры вставляет нужный логин+TAB+пароль (или просто пароль) для конкретного сайта. Пользователи пастальды запоминают только один пароль в жизни - это пароль для доступа к пастильде (он же пароль к KeePass файлу) . Далее устройсово извлекает нужный сложный уникальный для каждого сайта пароль из KeePass файла и автоматически набирает его в PC.
При этом персональный компьютер (PC) на полном серьезе думает, что пароль так быстро набрали вручную. Но мы, то знаем, что это набрала Пастильда автоматически.
Таким образом, можно набирать пароли, где угодно. Все пароли будут разные и запредельно сложные. На сайте интернет магазина, в электронную почту и даже для входа в операционную систему. Понимаете ?..
В чём проблема?
Проблема в том, что оригинальная Пастильда стоит дорого: 5k RUR. В нашей развивающейся стране (в России) далеко не все могут себе позволить покупку электроники стоимостью в 5k RUR.
Потом, количество изготовленных и проданных Пастильд было весьма и весьма ограниченно. Буквально несколько сотен штучек за весь жизненный цикл этого замечательного российского продукта. При этом почти все собранные экземпляры скупили американцы.
Поэтому надобно придумать способ пользоваться Пастильдой на более доступном и дешевом железе.
А какую возможность, любезнейшим образом, предоставляет болгарская электронная плата Olimex-STM32-H407. Вот с ней и пришлось работать...
Итак, танцуем от печки...
Аппаратная часть
Что надо из аппаратуры?
Для того чтобы подготовить плату Olimex-STM32-H407 к работе c прошивкой Пастильда надо следующий перечень аппаратуры. Всё это легко приобретается на рынке
# |
Оборудование |
Комментарий |
1 |
ST-LINK/V2 ISOL |
Программатор |
2 |
JTAG шлейф 20пин для программатора |
Для соединения программатора и PCB Olimex |
3 |
Кабель USB-А-USB(mini) |
Кабель для соединения LapTop(а) и программатора |
4 |
Кабель USB-А-USB(mini) |
Кабель для соединения LapTop(а) и PCB Olimex |
5 |
USB Клавиатура |
Для подключения её к Пастильде |
6 |
Персональный компьютер (Например LapTop) |
Для запуска утилиты обновления прошивки и насыщения KeePass файла паролями |
7* |
Переходник USB-UART |
Для просмотра лога загрузки прошивки и для подключение а UART-CLI |
8 |
Электронная плата Olimex-STM32-H407 |
Целевое устройство, которое и будет вертеть прошивку с приложением Пастильда |
9 |
Micro SD карта |
Съёмное хранилище зашифрованных паролей, которое хранит KeePass файл с расширением *.kdbx |
Электронная плата Olimex-STM32-H407
Вы узнаете нужную Вам электронную плату вот по этой фотографии.
Изделие можно купить в интернет магазине Olimex буквально за 2144 RUR. Это настоящая электронная парта для изучения микроконтроллеров.
Вот так выглядит блок-схема этой твердотельной электронной платы Olimex-STM32-H407.
В этой электронной плате есть вся необходимая аппаратная начинка для того, чтобы запустить приложение реализующее Пастильду: USB host, USB device, SD micro и LED.
Чтобы случайно не отцарапать электролитические конденсаторы при транспортировке платы в рюкзаке я даже примонтировал вот такой прозрачный экран из плексигласа, который мне вырезал лазерным лучом отличный мастер c profi.ru.
Программная часть
Как и в любой Hi-Tech разработке помимо железа есть и софт.
Что надо из сотфвера?
№ |
Программа или бинарный файл |
Пояснение |
1 |
Программа KeePass.exe |
Клиентская программа для работы с базами данных паролей формата KeePass (*.kdbx файлы) |
2 |
ST-LINK_CLI.exe |
Утилита перепрошивки STM32 микроконтроллеров от вендора. (CLI версия ) |
3 |
OS Windows |
Для запуска утилит производителя чипа ST |
4 |
STM32 ST-Link Utility.exe |
Утилита перепрошивки STM32 микроконтроллеров от вендора (GUI версия ) |
5 |
olimex_stm32_h407_mbr_gcc_m.hex |
Первичный загрузчик платы Olimex |
6 |
olimex_h407_bootloader_gcc_m.hex |
CLI загрузчик для платы Olimex |
7 |
olimex_h407_freertos_pastilda.hex |
Generic прошивка Пастильды для платы Olimex-STM32-H407 |
Подготовка *.kdbx файла с базой данных
Чтобы работать с устройством предварительно надо на SD карту закинуть *.kdbx файл с зашифрованной базой данной с паролями.
Файл создается и заполняется как и в любой другой GUI утилите на Windows. Однако есть один момент.
Данная прошивка работает не со всяким *.kdbx файлом keepass. Перед сохранением файла надо удалить из него служебную информацию (метаданные). Для этого надо зайти в Tools->Database Maintenance. И нажать на кнопки Entry history Delete и Delete object information. И сохранить файл. Таким образом, в финальном keepass файле *.kdbx будет только необходимая информация.
Загрузка прошивки
Перед тем как залить прошивку Пастильды надо накатить загрузчик. Ввиду специфики разметки секторов микроконтроллеров семейства STM32F4x тут получилось целых два загрузчика. Первичный загрузчик (MBR) и вторичный загрузчик (BootLoader).
Задача первичного загрузчика - это только лишь вызвать вторичный загрузчик. Задача вторичного загрузчика - вызвать generic приложение и позволить обновлять Generic через UART3.
Вы спросите: "а почему бы первичному загрузчику не вызвать приложение?"
Ответ прост. Вызвать, то он вызовет, а вот обновить по UART не сможет. В этом случае первичный загрузчик бы не поместился в 16kByte-32kByte Flash памяти.
Дело в том что обновление прошивки происходит через CLI. А это работа с текстовыми протоколами. Задача загрузчика принять приложение через UART-CLI и прописать его в боевую ROM память. А этот функционал практически нереально поместить в 16kByte.
В довесок к этому, первые сектора Flash памяти все маленькие и поэтому уже задействованы для on-chip NVRAM. Вначале Flash памяти просто отсутствует непрерывный диапазон нужного размера.
А в конце ROM присутствует огромный сектор 128kByte прям как будто специально заложен для полноценного BootLoader(а). Поэтому вот так и появились два загрузчика. А приложение находится между ними. На выходе получилось три сборки для одного устройства. Вот такие вот порожки с капустой. Понимаете?..
№ |
Название файла |
Пояснение |
стартовый адрес |
Size, kByte |
Sector |
1 |
olimex_stm32_h407_mbr_gcc_m |
MBR |
0x08000000 |
32 |
0 |
2 |
Тут прошивка хранит параметры |
NVRAM |
0x08008000 |
32 |
2 |
3 |
olimex_h407_bootloader_gcc_m |
BootLoader |
0x080E0000 |
128 |
11 |
4 |
olimex_h407_freertos_pastilda |
Generic Application |
0x08010000 |
768 |
4 |
-- |
-- |
-- |
Итого: |
960kByte |
-- |
Про то, с какими титаническими трудностями мне пришлось столкнуться, разрабатывая эту прошивку можно почитать тут. Колупаться пришлось порядком. Серьёзная работа проделана, не простая.
А как, собственно, залить *.hex прошивку в STM32 микроконтроллер указанными утилитами можно почитать методички от производителя микроконтроллера ST или от производителя электронной платы Olimex.
Итоги
В сухом остатке, удалось портировать прошивку аппаратного менеджера паролей (Пастильду) на широко распространённую болгарскую учебно-тренировочную твердотельную электронную плату Olimex-STM32-H407.
Это паллиативное решение позволяет сэкономить Вам 3000 рублей на покупке оригинальной Пастильды, которая, к слову, стоит 5000 RUR. Таким образом монополия Третьего Пина в какой-то степени ликвидируется.
Бинари прошивки можно скачать по ссылке [1] на github.com. Если у Вас появятся пожелания к улучшению функционала прошивки, то пишите в комментариях. Я с энтузиазмом внесу улучшения и выкачу новый вариант бинарей.
Надеюсь моя прошивка поможет кому-нибудь тоже начать пользоваться аппаратными менеджерами паролей. Это позволит вам высвободить несколько часов в месяце на ускорении поиска и набора всяческих разных паролей на разных сайтах.
Использование аппаратных менеджеров паролей окупится сторицей
Словарь
Акроним |
Расшифровка |
NVRAM |
Non-volatile random-access memory |
MBR |
Master Boot Record |
SD |
Secure Digital |
PC |
personal computer |
CLI |
Command-line interface |
USB |
Universal Serial Bus |
LED |
Light-emitting diode |
RUR |
Russian ruble |
Ссылки
Автор: aabzel