Данное устройство, выполненное в виде USB флешки, предназначено для
генерирования и ввода символьного пароля в персональный компьютер при
подключении его в разъем USB. Другими словами, это своего рода
электронный ключ, при подключении которого в разъем USB персонального
компьютера, например при входе в Windows, автоматически вводится
сохраненный пароль. Устройство по команде пользователя может
сгенерировать произвольный пароль и сохранить его в энергонезависимой
памяти.
Устройство очень простое и выполнено на микроконтроллере Atmel AVR ATtiny85, который, с помощью программного кода, эмулирует USB HID клавиатуру. Сгенерированный самим микроконтроллером и сохраненный в EEPROM микроконтроллера пароль передается при подключении устройства в USB разъем. Новый пароль генерируется после 4-х кратного нажатия на кнопку Caps Lock на штатной клавиатуре: 4 нажатия для запуска режима генерации и затем, одно нажатие клавишы Caps Lock для генерирования каждого символа пароля (длина пароля по умолчанию 10 символов).
Помимо микроконтроллера в схеме используется несколько пассивных компонентов, которые обязательны при реализации USB коммуникации на микроконтроллере.
Корпус устройства позаимствован от неисправного флеш-накопителя емкостью
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).
Вы можете поддержать сайт напрямую через наши платежные реквизиты
WebMoney Z355095169785 R218396818010 E144063919939 Все средства полученные от пользователей сайта будут использованы исключительно для поддержки и дальнейшего развития сайта.