Altinkaya: турецкие корпуса для РЭА

USB генератор пароля в виде флешки

Данное устройство, выполненное в виде USB флешки, предназначено для генерирования и ввода символьного пароля в персональный компьютер при подключении его в разъем USB. Другими словами, это своего рода электронный ключ, при подключении которого в разъем USB персонального компьютера, например при входе в Windows, автоматически вводится сохраненный пароль. Устройство по команде пользователя может сгенерировать произвольный пароль и сохранить его в энергонезависимой памяти.

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

USB генератор пароля в корпусе флешки

Устройство очень простое и выполнено на микроконтроллере Atmel AVR ATtiny85, который, с помощью программного кода, эмулирует USB HID клавиатуру. Сгенерированный самим микроконтроллером и сохраненный в EEPROM микроконтроллера пароль передается при подключении устройства в USB разъем. Новый пароль генерируется после 4-х кратного нажатия на кнопку Caps Lock на штатной клавиатуре: 4 нажатия для запуска режима генерации и затем, одно нажатие клавишы Caps Lock для генерирования каждого символа пароля (длина пароля по умолчанию 10 символов).

Помимо микроконтроллера в схеме используется несколько пассивных компонентов, которые обязательны при реализации USB коммуникации на микроконтроллере.

Схема: USB генератор пароля в корпусе флешки на микроконтроллере AVR


Корпус устройства позаимствован от неисправного флеш-накопителя емкостью 512 МБайт. Коннектор USB был взят от обычного USB кабеля, он и остальные компоненты монтируются на макетную плату соответствующего размера.

Программа микроконтроллера

Программное обеспечение для микроконтроллера написано с использованием библиотеки V-USB для AVR микроконтроллеров.

Устройство определяется компьютером как USB HID клавиатура. Для обеспечения коммуникации с устройством оно выполнено в виде Boot-совместимой клавиатуры, которая может получать статус светодиодов (в частности, для нашего случая Caps Lock) изменяемого компьютером. Описание HID позаимствовано с проекта карточки USB Business card (Frank Zhao). Также благодаря этому проекту был изучен и применен код для отправки статуса светодиодов в USB HID устройство (коротко, компьютер посылает 1 байтное сообщение – битовую маску состояния светодиодов).

Основные параметры, определяющие функционирование устройства, которые вы найдете в тексте исходного кода программы микроконтроллера (файл usbsconfig.h и HID-дискриптор):

  • PASS_LENGTH – длина генерируемого пароля, определяется в начале программы;
  • SEND_ENTER – значение может быть 1 или 0, определяет будет ли отправлена нашим устройством команда Enter после ввода сохраненного пароля;
  • measuring_message и finish_message – содержат сообщения, которые будут отображаться при генерации/сохранении нового пароля;
  • buildReport() – функция, вызываемая в основном цикле программы, для отправки символов пароля на ПК один за одним – функция преобразует символы в буфере messageBuffer в USB команды «на лету»;
  • usbFunctionWrite() – функция осуществляет прием байта состояния светодиодов от ПК, она вызывает функцию caps_toggle() каждый раз при изменении статуса светодиода;
  • generate_character() – функция используетсядля генерирования произвольного символа, и на данный момент используются буквы, дефис и символ подчеркивания;
  • caps_toggle() – функция ведет подсчет нажатий кнопки Caps Lock (по изменению состояния светодиода Caps Lock) и осуществляет генерацию/сохранение пароля.

В разделе загрузок для пользователей доступен исходный код с подробными комментариями, принципиальная схема и make-файл для компиляции. Следует учитывать, что необходимо произвести настройку Fuse-битов микроконтроллера: CKSEL=0001, SUT=10 (младший байт E1) и установить BOD на уровень 2.7 В (старший байт DD).

Работа с генератором пароля наглядно продемонстрирована на видео:

Загрузки

Исходные коды, схема, make-файл – скачать

codeandlife.com

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: USB password generator

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • Занятная вещь. С одной стороны не так много применений этому девайсу, с другой тут показано как программно состыковать МК с ПК без разных переходников. По RS232 каждый сможет сделать... Хорошо, что не нужно драйверов допролнительных
  • Не согласен. Почти уже всё решается в онлайне и почти везде требуется регистрация, то-бишь ввод пароля, а параметры этого пароля в разных местах разные. В одних - это Заглавная первая буква плюс обязательное наличие цифр, в других ограничение по длине пароля, без ограничения его содержимого, где-то может понадобится сверхсекретность т.е. пароль защищённый от взлома в стиле брут-форс. У меня таких пароле по-крайней мере три и я один-хрен их иногда забываю. Так-что лично я о подобном девайсе давно уже думаю, только руки пока не дошли.
  • shindax данное устройство предназначен для получения доступа к компьютеру, а не к сайтам....
  • Опять 25. 10 лет назад можно было посмотреть в фильмах - загрузка 5 рисунков, в результате цифровой код. Сегодня куча прог требуют пароля подобным образам - допустим на СД для предпринимателей. В домашнем компе, кому необходима секретность - вводят пароль вручную - без запоминания. Новшевство в чем? Винду сейчас с флешки заводят. Что пароль и на флешку записать можно?
  • Можно под кожу вшить...
  • А есть разница куда именно нужно войти? HID, он и в Африке HID, к чему подключен, туда и введётся. И я разве сказал "такое-же"? Я сказал "подобное". Лично мне подобный девайс нужен для доступа именно к платёжным системам, где жёсткие требования к паролям.
  • ТО, что я написал - разницы нет. В некоторых прогах есть. Лет 5 назад какой то умный придумал прогу для предпринимателей. Для регистрации 2 паролей в налоговой требовали 2 диска сидюковских - записать на каждом по 16 бит инфы. Когда спрашивали "какой дебил это придумал?", само собой отвечали, а мы здесь при чем.
  • Я г-ну lllll отвечал. :)
Полный вариант обсуждения »