Сегодня соберем устройство для хранения и автоматического ввода паролей одним нажатием кнопки. Оно подключается к USB компьютера и эмитирует работу клавиатуры. Пример кода для ардуино и подробное описание процесса сборки ниже.
Собирать будем на базе Arduino Pro
У любого уважающего себя гика всегда чешутся руки собрать свой DIY проект чего-нибудь нужного в быту. Похоже, что это ваш день, комрады. Мне по долгу службы постоянно приходится набивать несколько жутко секьюрных паролей и идея пришла сама собой.
Готовое устройство получилось компактным и ну ооочень красивым:
Для отображения текущей информации будет использоваться дисплей OLED 128X32.
Управлять будет Arduino Pro Micro. Хотел взять микроконтроллер проще, но в Attiny не влезла прошивка из-за дополнительных библиотек и по тому Pro плюс к тому на ней уже есть USB - Profit! половина схемы уже спаяна!
Основная идея в том, что устройство делает вид буд-то оно USB клавиатура. Для подключения хватает стандартных драйверов.
Быстро собираем все на "скрутке", заливаем простой скетч и неприглядный девайс готов.
Нужно облагородить внешний вид. В программе Sketchup чертим корпус, режем его в слайсере и заливаем G-код в принтер.
Пока печатается принтере можно немного порелаксировать.
После печати, конечно, ничего не влезает. Правим чертеж, снова печатаем и так всегда.
Ставим кнопки и плату Pro.
Пропихиваем толкающие болванки кнопок.
После сборки у нас годное компактное устройство, которое легким движением руки подключаются к компьютеру. В него можно залить много логинов/паролей и освободить голову и руки для других вещей.
Количество сохраняемых данных ограничено внутренней памятью Arduino (1024 байта).
Дисплей позволяет выбирать по комментарию нужную пару логин/пароль, а так же редактировать данные записи. Для редактировать пароли можно напрямую с кнопок устройства, но это не самый удобный сопосб и лучше не мучать себя. Подключть к компу и внести изменения с помощью программы для PC (программа есть в архиве см в конце статьи).
Общая идея устройства такая: Есть 1024 байта EEPROM. В этой области хранятся записи с данными — их число ограничено местом. Каждая запись состоит из отображаемого на дисплее комментария и 8 полей. Каждое поле может содержать в себе символы и коды нажатия спец кнопок (Ctrl,Shift,Del итд). Две записи условно названы Login и Password. По нажатию кнопки токен отправляет поочередно все поля записи в USB как будто они введены с клавиатуры. В полях вы можете разместить не только логин и пароль но и команды на запуск каких-либо программ.
Но основной режим — это все-таки имя и пароль.
Тк в плате у нас хранятся пароли надо хоть чуть-чуть позаботится о их безопасности.
Забота о безопасности поможет усложнить проект и придаст ему серьезности.
Для этого был добавлен пароль на разблокировку токена. Он представляет собой
задаваемую пользователем последовательность одиночных и двойных нажатий на кнопки.
Теоретически, можно еще зашифровать данные в EEPROM с помощью какого-либо криптоалгоритма — место под код еще есть. Но снаружи эти потуги незаметны и поэтому с криптографией я заморачиваться не стал.
Токен в обычном состоянии недоступен с компьютера. Для перевода его в режим редактирования необходимо физически выбрать соответствующий пункт в меню кнопками. Точно так же для отправки пароля требуется физически нажать кнопку. Так что злой хакер до ваших паролей в токене не доберется!
Он перехватит их c USB порта, когда вы будете их посылать как с USB клавиатуры ;)
В результате получилась штуковина, в которой я храню пароли для входа на сайты банков и форумы.
Специально для коллеги все оставшиеся выводы платы запрограммировал для подключения кнопок быстрого доступа.При нажатии на такую кнопку происходит переход к логину с соответствующим номером (если он есть). И для отправки его на комп остается только нажать кнопку подтверждения. Или подержать кнопку быстрого доступа подольше.
Завершив этот проект я предлагаю всем желающим повторить это замечательное устройство,
которое позволит вам потерять все ваши пароли совершенно новым способом!
Потерять бумажку может каждый, а сделать для этого специальное устройство и потерять его или пароль к нему — это внушает уважение!
Перед выходом на публику PwKeeper прошел тщательный выходной контроль:
Главинспектор был только что разбужен, но он все равно недоумЯвает — почему аудитории предлагается явно недоделанное устройство. Мои слова о том, что надо проверить правильность и качество монтажа (а при закрытой крышке это затруднительно) его не убедили.
Тем не менее (после шантажа сосиской) удалось убедить его выдать мне сертификат соответствия:
https://github.com/Den-W/PwKeeper