Автоматизация ввода пароля без клавиатуры

Публикация 10.11.2016

Сегодня соберем устройство для хранения и автоматического ввода паролей одним нажатием кнопки. Оно подключается к 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
Автоматизация ввода пароля без клавиатуры
* комментарии публикуются после модерации
Нет комментариев