Где хранить свои суперсекьюрные и регулярно обновляемые пароли от многочисленных интернет-ресурсов? В голове? Скорее всего, не поместятся. На бумажке? Не по-хакерски. Доверять облачному сервису, который спалит пароли если не сегодня, то завтра обязательно? Понадеяться на опенсорсный менеджер паролей? Вяло, товарищи! Скучно! Сегодня мы рассмотрим настоящий тру-хакерский, тру-гиковский, удобный и безопасный способ хранить пароли, создав свой аппаратный менеджер паролей! Он будет хранить в себе данные разных аккаунтов, логины и зашифрованные пароли, ключ от которых должен держаться отдельно и вводиться непосредственно перед использованием, и при этом устройство будет эмулировать USB-клавиатуру для вывода логина и пароля.
Идея родилась не на пустом месте. Незадолго до ее появления я решил заняться программированием микроконтроллеров. Но так как свободного времени, чтобы серьезно и глубоко посвятить себя этому, было недостаточно для полноценного освоения ни железного С++, ни железобетонного ассемблера, то, чуть не споткнувшись о продолжающую набирать популярность вселенную Arduino, я прямиком угодил в объятия загадочного мира «JavaScript для микроконтроллеров». «Теперь гаджеты программируют на JavaScript» — этот броский заголовок поймал меня на крючок! Разглядывая на сайте «Амперки» изображения красивой отладочной платы, похожей на Arduino Leonardo, но белой и именуемой Iskra JS (не путать с Iskra Neo, которая тоже Iskra, тоже белая, но по сути улучшенная Leonardo), я попал под гипноз описания ее возможностей (и, если что, нахожусь под ним до сих пор).
Сердце платы Iskra JS — прекрасный дуэт микроконтроллера серии STM32F4 и прячущейся в его недрах могучей open source прошивки Espruino, выполняющей функцию интерпретатора языка JavaScript с торчащей наружу консолью а-ля REPL. Те, кто знаком с Node.js, почувствуют ярко выраженное дежавю и смогут вести себя более уверенно в диалоге с Espruino. При всем при этом для Iskra JS подходит весь спектр аксессуаров от Arduino UNO R3. Да и дополнительные библиотеки, представляющие собой JS-модули, имелись в достаточном количестве как от создателей проекта Espruino, так и от разработчиков Iskra JS.
## «Зачем все это», или не купить ли нам коммерческий токен Можно посмотреть и в сторону коммерческих токенов. Но тут скрывается пласт нюансов с дополнительным ПО и универсальностью. Да и за действительно интересные устройства придется выложить немаленькую сумму.
Итак, недолго раздумывая и сразу обзаведясь целым набором «Йодо», где, помимо платы Iskra JS и буклета, были шилды, модули с сенсорами и прочими кнопочками, а также детали необычного конструктора для макетирования корпусов, именуемого структором, я всецело погряз в творчестве. ???? И вот тогда, наткнувшись в буклете на один из проектов с примером использования эмуляции клавиатуры, я и загорелся идеей сделать «ленивку», набирающую за меня пароли.
Идея зрела долго, ее каждый раз подрезали всякие умные роботы и дома, GSM-сигнализации и прочие радости творчества. Ведь программирование для Iskra JS приносило массу удовольствия, так как не было обременено посредническими процессами — ни предварительным компилированием, ни обязательной прошивкой платы.
Процесс прошивки в Espruino-based платах требует некоторых разъяснений. Прошивка в микроконтроллере одна — и это Espruino. Она прошивается единожды и занимает часть флеш-памяти микроконтроллера. В дальнейшем для сохранения вашего JavaScript-кода используется оставшееся место во флеш-памяти. И вот очистку части флеш-памяти от старого кода и запись нового нередко также называют прошивкой, хотя правильнее все же называть это сохранением кода.
День, когда лень набивать длинные пароли руками победила в первенстве приоритетов, все-таки настал. И тогда пришло время сформировать представление о том, каким я вижу свое будущее устройство, а заодно и составить список требований и деталей.
Далее необходимо было определиться, на чем хранить ключ AES-256 и на чем показывать меню.
Определившись со списком, можно было приступать к сборке прототипа и программированию.
Изначально за основу была взята отладочная плата Iskra JS с дополнительной платой расширения. Прототип на ней получился громоздким, чудным и по-своему симпатичным.
Позже появилась мини-версия старшей платы — Iskra JS mini c STM32F411CEU6 на борту, и это позволило существенно сократить размеры устройства и сделать его мобильным.
Вот на ее основе мы и соберем наше устройство.
Для начала необходимо установить среду разработки, и если ты собираешься работать с платой из-под винды, то понадобятся драйверы. Подробно об установке среды разработки можно почитать на вики проекта Iskra JS.
Если же не пользуешься браузером Google Chrome, то можно установить нативные приложения для Windows с сайта проекта Espruino либо самостоятельно клонировать текущую версию среды разработки с GitHub и запустить ее локально с помощью фреймворка NW.js, просто скопировав все файлы среды в папку с фреймворком и запустив исполняемый файл nw.
Главное — не забудь поменять в Espruino Web IDE настройки для работы с платами и дополнительными библиотеками от «Амперки»:
В разделе SETTINGS → COMMUNICATIONS:
http://js.amperka.ru/modules
.min.js|.js
Direct to Flash
В разделе SETTINGS → BOARD:
http://js.amperka.ru/json
Окно среды разработки состоит из двух частей: справа — редактор кода, слева — консоль интерпретатора Espruino, доступная при соединении с отладочной платой.
Подключим физически все наши модули, разместив на беспаечной макетной плате. Что она собой представляет и как с ней работать, можно почитать здесь.
Выведем питание с пина 3V3 отладочной платы Iskra JS mini на дорожку + макетной платы, а «землю» — с пина GND на –.
OLED-экран с подключением по шине I2C имеет четыре контакта: GND, VDD (VCC), SCK (SCL), SDA. Подключим их к соответствующим пинам на плате:
Материалы из последних выпусков можно покупать отдельно только через два месяца после публикации. Чтобы продолжить чтение, необходимо купить подписку.
Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке
1 год6890 р. Экономия 1400 рублей! |
1 месяц720 р. 25-30 статей в месяц |
Уже подписан?
Читайте также
Последние новости