Цей пристрій, виконане у вигляді 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).
Робота з генератором пароля наочно продемонстрована на відео:
завантаження
Тексти програм, схема, make-файл - завантажити
codeandlife.com