Данный обзор я хочу посвятить конструкции PasswordKeeper на модуле Aruino Pro Micro (ATmega32U4). Проект предназначен для хранения, выбора и ввода в комп одного из множества паролей.
Про саму плату сложно что-то необычное сказать. Пришла быстро, упакована хорошо, монтаж аккуратный, работает без замечаний.
Основная проблема с микроконтроллерами для энтузиаста — это придумать, для чего их применить :)
Я давно хотел собрать что-нибудь мелкое и относительно полезное в хозяйстве. А тут коллега по работе подкинул интересную идею — ему лень было каждый день вводить пароль для входа в свой компьютер и он собрал на плате DigiSpark (ATTiny85) приспособу, которая отправляет имя и пароль в комп при нажатии на кнопку.
Получилось у него вот что:
Upd: Коллега выложил свой проект
сюда.
Отличная идея — подумал я. Почему бы ее не позаимствовать и творчески переработать. Пересобирать и перезагружать проект Arduino каждый раз при смене пароля — это неспортивно.
Кроме того, один пароль — это мало. Ведь можно сделать все гораздо сложнее и запутаннее! Игрушка должна показывать, как она работает. Но трех штатных светодиодов для этого явно мало, пусть их будет 4099! Так в проект добавился маленький дисплей
OLED 128X32.
Я все никак не мог придумать, куда его можно приспособить. А тут он идеально подошел по размеру и назначению. Еще потребуется пара кнопок — для управления.
Ресурсов ATTiny85 явно не хватало для проекта — добавление дисплея потянуло за собой графическую библиотеку+шрифты и все это в DigiSpark не влезало. Но поиск обнаружил подходящую платформу: Arduino Pro Micro.
Смысл проекта в том, что Aruino Pro Micro по умолчанию прикидывается USB клавиатурой и USB COM портом. Драйверы для этих устройств уже присутствуют в операционной системе — и ничего дополнительно устанавливать не надо. Конечно существуют всякие программы, которые где-то хранят в себе пароли, но они не могут их передать на экран логина тк пользователь еще не вошел в систему. Предлагаемое вашему вниманию
чиндогу PasswordKeeper имитирует нажатия кнопок клавиатуры и может передать логин и пароль в любом режиме компа. Даже Ctrl-Alt-Del послать может нажатием 1 кнопки вместо 3!
Формфактор выбранных модулей оказался очень удобным и компактным.
Можно с минимальными усилиями собрать маленькое и относительно полезное устройство.
Схема получается — проще некуда.
Быстро рукожопим макет и отлаживаем на нем скетч.
Но в таком виде пользоваться им неудобно, поэтому в Sketchup проектируем маленький корпус.
И печатаем его
на таком на 3D принтере
Как водится, поспешность нужна при ловле блох. В первый вариант корпуса плата не лезет!
Промахнулся с размерами и выбрал слишком маленькие зазоры. Исправляем чертеж, перепечатываем и получаем второй вариант. Уже лучше — плата входит тик-в-тик.
Нажимаем на контроллер и с характерным хрустом он встает на место.
Примеряем кнопочки — входят без проблем.
Далее вставляем толкатели, припаиваем кнопочки и дисплей.
Кстати, я долго искал удобный монтажный провод для макетирования. Наш МГТФ конечно хорош, но не всегда удобен.В результате сейчас я пользуюсь присутствующем на предыдуших фото проводом
30AWG от все тех же китайцев.
Цветными проводами удобно выделять цепи по смыслу. Провод тонкий, изоляция хорошо держит температуру паяльника.
Не так как МГТФ конечно, но вполне прилично. Обычная ПВХ изоляция расползается при пайке сразу, а эта размягчается, но держит форму и выдерживает случайные прикосновения паяльником без проплавления до жилы. Единственный недостаток — многоцветная катушка сильно дороже при меньшем количестве провода.
Собираем все вместе и получаем маленький токен, который подключается к компу и позволяет управлять и пользоваться достаточно большим количеством логинов и паролей.
Число логинов ограничено размером памяти EEPROM (1024 байта) и длиной паролей.
Дисплей позволяет выбирать по комментарию нужную пару логин/пароль, а так же редактировать данные в токене. Редактировать пароли можно двумя кнопками. Редактор я к токену прикрутил, но пользоваться им — сущий мазохизм. Поэтому для редактирования данных пришлось написать программу для PC (если вдруг будете пользоваться — не забудьте перевести токен в режим работы с USB в его меню).
Общая идея устройства такая: Есть 1024 байта EEPROM. В этой области хранятся записи с данными — их число ограничено местом. Каждая запись состоит из отображаемого на дисплее комментария и 8 полей. Каждое поле может содержать в себе символы и коды нажатия спец кнопок (Ctrl,Shift,Del итд). Две записи условно названы Login и Password. По нажатию кнопки токен отправляет поочередно все поля записи в USB как будто они введены с клавиатуры. В полях вы можете разместить не только логин и пароль но и команды на запуск каких-либо программ.
Но основной режим — это все-таки имя и пароль.
Тк в плате у нас хранятся пароли надо хоть чуть-чуть позаботится о их безопасности.
Забота о безопасности поможет усложнить проект и придаст ему серьезности.
Для этого был добавлен пароль на разблокировку токена. Он представляет собой
задаваемую пользователем последовательность одиночных и двойных нажатий на кнопки.
Теоретически, можно еще зашифровать данные в EEPROM с помощью какого-либо криптоалгоритма — место под код еще есть. Но снаружи эти потуги незаметны и поэтому с криптографией я заморачиваться не стал.
Токен в обычном состоянии недоступен с компьютера. Для перевода его в режим редактирования необходимо физически выбрать соответствующий пункт в меню кнопками. Точно так же для отправки пароля требуется физически нажать кнопку. Так что злой хакер до ваших паролей в токене не доберется!
Он перехватит их c USB порта, когда вы будете их посылать как с USB клавиатуры ;)
В результате получилась штуковина, в которой я храню пароли для входа на сайты банков и форумы.
Специально для коллеги все оставшиеся выводы платы запрограммировал для подключения кнопок быстрого доступа.При нажатии на такую кнопку происходит переход к логину с соответствующим номером (если он есть). И для отправки его на комп остается только нажать кнопку подтверждения. Или подержать кнопку быстрого доступа подольше.
Завершив этот проект я предлагаю всем желающим повторить это замечательное устройство,
которое позволит вам потерять все ваши пароли совершенно новым способом!
Потерять бумажку может каждый, а сделать для этого специальное устройство и потерять его или пароль к нему — это внушает уважение!
Перед выходом на публику PwKeeper прошел тщательный выходной контроль:
Главинспектор был только что разбужен, но он все равно недоумЯвает — почему аудитории предлагается явно недоделанное устройство. Мои слова о том, что надо проверить правильность и качество монтажа (а при закрытой крышке это затруднительно) его не убедили.
Тем не менее (после шантажа сосиской) удалось убедить его выдать мне сертификат соответствия:
Одобренные исполняемые и загрузочные файлы выложил
сюда.
Посмотрите в Бетховене, Ашане.
Флюс ФТС водосмываемый, жидкий
Канифоль гель, лютая хрень, доолго отмывать
И так далее, вам поможет любой безкислотный флюс, жидкий или гель, в котором есть намек на активные компоненты. Советую пользоваться ФТС или ЛТИ, после пайки плату промывать в спирте или бензине «калоша», ацетоном травиться не стоит.
Паяльную кислоту не используйте, при плохой отмывке окисляет все что только можно. Через год-два окисленные контакты превращаются в труху.
Кстати, тот же ЛТИ-120 может и поудобней канифоли, но с последнюю тоже со счетов списывать не стоит: она вполне актуальна, особенно для любительской деятельности. Для профессионалов уже полно других флюсов и по другим ценам, но тем объяснять не стоит.
Но я сомневаюсь, что это золото. Наверняка сплав какой-то.
А так идея шикарная, очень понравилась. Особенно если не помнишь и нужно перебрать с десяток.
Подправил.
Респект!
Особенно кот!
У меня леонардо в обычном формфакторе.
Можно его приспособить?
На работе есть проблема с логином в систему.
Блочится комп корпоративной политикой.
Есть программный обход, но это не наш метод, да? ;-)
Конечно можно.
Загрузите прошивку, подсоедините кнопки и все будет работать.
Можете еще 12 кнопок для доступа к первым 12 паролям подсоединить — еще одна клавиатура будет :)
Доп кнопки должны на землю замыкать контакты.
Зачем просто, когда можно сложно? Задача-то руки приложить а не блокировку обойти.
А так почти живая мышь получается.
Я понимаю, что на mysku у вас точно есть сертификат, но как же с остальными сайтами, банками, почтой, играми и прочим?
Если запрет на установку программ?
Если…
Я думаю этот девайс все же может занять свою нишу.
Вводить свои пароли на чужом компе противопоказано, если вы ими хотя бы немного дорожите.
С одной стороны — да.
С другой — это же чиндогу!
Ну и вдруг кому еще пригодится…
Я сам пользуюсь :)
Так в тексте на OLED ткните — это и есть ссылка.
Она же синяя.
Эти дисплеи еще вот такие бывают. Я их часто в конструкциях использую.
Бывают SPI и I2C — не промахнитесь! Мне I2C больше нравятся — проводов меньше.
Ваш просто понравился, т.к. маленький. Раньше не попадался или не обращал внимание.
Так в тексте ссылка есть: чиндогу
www.netlore.ru/chindogu-ili-durackie-izobreteniya
В данной конструкции — нет.
Корпус же жесткий и дисплей не двигается.
А вообще против физики не попрешь — Этот провод одножильный. Для макетных плат и не слишком подвижных соединений. Зато очень тонкий.
Провод одножильный.
Для монтажа цифровой техники очень удобный. Тонкий, изоляция достаточно тугоплавкая. Легко чистится.
Надо будет его в отдельный обзор вынести.
24-26awg это уже серьезно — для моторчиков.
С многожильным в макетировании одна мука. Отслоится жила на соседний контакт -упаришься искать сбой.
Но и 100500 ампер на него подавать не надо :)
Но он не такой уж и тонкий — то что надо для монтажа слаботочки.
Сечение AWG30 сравнимо с размером ноги ATmega32U4.
Не ставить же на кнопку, подключенную к выводу микропроцессора провод сечением 1mm2 :)
25AWG — это примерно диаметр провода в витой паре. Те 24 — это еще толще ~0.5mm.
Монтировать таким проводом сигнальные цепи мне неудобно.
Соответствие калибров AWG диаметру провода
а если нужен многожильный, тогда уж ide хорошо подходит, у многих его залежи
Пока залудится — изоляция в хлам.
И очень любят распушится и залезть на соседний контакт.
Посмотрите мой топик по проводу — вот там уже нафлудили :)
там те же толщины, в кабеле гарантировано пять разных цветов провода, причём белого больше всех — разумно использовать для земли )
Я не настолько крут. Не говоря уже о том что изоляция витой пары на это не рассчитана — посмотрите фото в моем топике по проводам.
Отдельный плюсик за котейку. )))
Как раз в тему устройство.
Исправил. Благодарю за уточнение.
aliexpress.com/item/Free-shipping-CJMCU-Digispark-kickstarter-miniature-for-Arduino-usb-development-board/2040316744.html
Или всё-таки HID делали на тини? Я как-то не решился, мне проще купить платку с 32u4.
В общем сбацал на LUFA доп клаву которая возбуждается на соответствующие лампочки и автоматом выдаёт нажатия отключающие их появление. Стало гораздо удобнее.
Там все продумано :)
Требуется DoubleClick или LongClick — случайно не нажмешь :)
Держите один из моих основных пассов: $6mcb02dg4d!@m
сильно помогло? ;)
Напомнили старый анекдот:
Мне сказали, что использовать имя моей кошки в качестве пароля к «root» — плохой тон. Не буду менять! Я так привык к qZ!813_gg1…
А, и да, на тему паролей конечно же есть xkcd.
Cable Length(Approx.): 656Ft
против
Wrap 1000Ft
Наезд исправил.
Как вы думаете, можно ли передавать клавиши-модификаторы и функциональные клавиши?
Хочется сделать матрицу, например, из 8х8 клавиш для шорткатов в адобовских продуктах…
Скачайте файлы по ссылке внизу — там есть файл в котором определены поддерживаемые модификаторы. Можно отдельно передавать нажатие и освобождение кнопки.
F1-F10 поддерживается. F11-F12 можно добавить.
А вообще вам надо посмотреть в сторону проектов самодельных клав на Arduino.
К сожалению не могу найти точной ссылки. Но помню, что недавно натыкался на довольно раскрученный проект на базе которого делают разные полнофункциональные клавы.
Мою штуковину можно использовать как расширитель на 12 кнопок с программируемыми последовательностями. Подключите ко всем свободным входам по кнопке на землю — и при их нажатии будет выбираться один из 12 первых паролей.
Если вам нужно фиксированные шорткаты передавать — то там вообще все просто как мычание будет. Прямо в коде один раз последовательности заведете и все.
Вам же не надо их часто менять. А при редких изменениях вполне можно пересборкой обойтиcь.
пойду изучать…
Шорткаты действительно фиксированные.
Вашу конструкцию обязательно повторю.
Скачайте файлы — там есть примеры.
Смысл конструкции таков: Есть EEPROM размером 1024 байт. В ней хранятся записи — пока места хватит. Каждая запись содержит отображаемый комментарий и к нему 8 полей. А в поле можете писать все что захотите. Нажатие и отпускание спец кнопок, символы. Данные из всех полей по очереди передаются как будто введенные с клавиатуры.
2 поля условно называются имя и пароль — для облегчения управления.
Кнопки еще вот такие любопытные есть. Я сначала хотел их использовать — но что-то пакет долго идет. Поэтому прикрутил обычные.
Иначе сделать и не получится — это ведь клавиатура. Она ничего другого не умеет.
У меня точно так же реализовано.
Посылаем код Win далее имя программы и Enter.
Теоретически можно и мышь посылать — но для записи много места надо. А EEPROM всего 1К.
Его можно расширить — но это уже усложнение, а мне хотелось сделать легко повторяемую вещь.
Я хотел сделать легкое в повторении устройство.
Потом не забывайте — приложив еще чуть-чуть усилий вы можете запретить запись скетчей в процессор. И тогда достать содержимое EEPROM будет нетривиальной задачей. Тут поможет только терморектальный криптоанализ.
Считать же внешнее хранилище гораздо проще.
Корпус грубоват — это да. Можно еще с режимами печати повозится.
Для красивого вида народ советует сделать дополнительный шаг — обработка парами ацетона.
Но мне возится-вонять пока лень.
Жаль только раскраска помоечная.
Вот например.
К PwKeeperPc подсоединили?
Есть ли предложения\замечания по функциям?
вашу схемку однозначно буду повторять и рекламировать. заказал плату и дисплей.
еще раз блг!!!
Как попали в список паролей жмите долго нижнюю кнопку
потом пункт USB
и на PwKeeperPc считать-записать
Но это пока не сделано — проект еще в режиме отладки. Если будет интерес — допишу инструкцию.
Если это сделать — вытащить EEPROM будет оч тяжело. Тут поможет только терморектальный криптоанализ.
Стойкость определяется паролем на вход. А его вы фиг обойдете.
При первой загрузке основной пароль не установлен. А как установите — его будут спрашивать.
Ну и потом — я же написал, что это новый способ потерять пароли по сравнению с листом бумаги :)
Кого можно удивить потерей листка бумаги? А тут — ого-го!
По хорошему надо еще загрузчик подправить — чтобы комп не пытался искать драйвера Leonardo а работал только с клавиатурой и СОМ.
Если народ проявит интерес — сделаю.
Нужно чтобы при подключении сразу как клавиатура определялась без драйвера Arduino?
Посмотрю, но в ближайшее время не обещаю.
Много работ на даче да еще 2 проекта закончить надо.
проект\идея понравились
Если на компе сидит троян, то скорее всего он будет перехватывать ввод с клавиатуры.
Вот круто будет, если сделать устройство, куда заливается код от google authenticator. И потом оно через клавиатуру кидает one time password в поля ввода в браузере. Такой вариант реализации 2-х факторной авторизации будет очень полезен!
Посмотрю.
Может и сделаю.
Надо проверить сколько код занимает — контроллер мелкий. В него может и не влезть алгоритм google.
Возможно надо будет что-то выкидывать.
Сперва очередной crazy проект доделаю и выложу — программируемая гирлянда на WS2812 с управлением через Web.
И еще заметил, что после ввода пароля по кнопкам я те же самые в проге ввожу (вниз вверх вниз вверх, 4 нажатия на кнопки) но синхронизироваться не могу, пишет пароль не подходит.
1) На github есть 2 версии дока — русская и английская
2) По поводу пароля — проверьте повнимательнее плз.
Там вводятся одинарные и двойные клики верхней и нижней кнопки. Они отображаются тонкой и толстой чертой около цифры. Может с кликами что-то неточно ввели в PwKeeperPc? Если ошибка подтвердится — плз сообщите — исправлю.
Для виндовой программы нужны .Net 4.0 если не ошибаюсь
Что при запуске пишет?
По ТТУ надо зайти в настройки токена и оттуда активировать TTY
После этого можно обращаться к токену по виртуальному COM порту (Ctrl-Shift-M из Ардуино).
До выбора пункта TTY токен не виден по ком порту.
Можно еще разные скорости в консоли попробовать.
Кстати, чтобы программа на PC увидела токен нужно в настройках USB выбрать.