Пуск ПасТильды на Плате Olimex-H407

Существует одна очень замечательная учебно-треннировочная электронная плата 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-STM32-H407 в натуре

Olimex-STM32-H407 в натуре

Изделие можно купить в интернет магазине Olimex буквально за 2144 RUR.

836fd798d833902241a3d48f4c2075b9.JPG

Вот так выглядит блок-схема этой твердотельной электронной платы Olimex-STM32-H407.

02090df1b7c1c61659bf6cb4e1cdf7c8.png

В этой электронной плате есть вся необходимая аппаратная начинка для того, чтобы запустить приложение реализующее Пастильду: USB host, USB device, SD micro и LED.

5571522b0b4f0d9ed2dca560cfe5c01f.png

Чтобы случайно не отцарапать электролитические конденсаторы при перевозке платы в рюкзаке я даже примонтировал вот такой прозрачный экран из плексигласа.

44b81e8d8ef1ee61327b6d127a7d4f92.png

Программная часть

Как и в любой 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 памяти уже задействованы для NVRAM. Вначале Flash памяти просто отсутствует непрерывный диапазон нужного размера. А в конце ROM присутствует огромный сектор 128kByte прям для BootLoader (а). Поэтому так и появились два загрузчика. А приложение находится между ними.

Название файла

Пояснение

стартовый адрес

Size, kByte

Sector

1

olimex_stm32_h407_mbr_gcc_m

MBR

0×08000000

32

0

2

Тут прошивка хранит параметры

NVRAM

0×08008000

32

2

3

olimex_h407_bootloader_gcc_m

BootLoader

0×080E0000

128

11

4

olimex_h407_freertos_pastilda

Generic Application

0×08010000

768

4

--

--

--

Итого:

960kByte

--

Итоги

Удалось портировать прошивку аппаратного менеджера паролей Пастильду на широко распространённую болгарскую учебно-тренировочную твердотельную электронную плата 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

Ссылки

© Habrahabr.ru