In ziua de astazi, un utilizator trebuie sa retina o multime de parole. Este nevoie de o parola pentru contul de Yahoo, una pentru contul de Gmail, una pentru site-ul de curs, parole pentru diverse aplicatii etc. Din motive de securitate este recomandat sa existe cate o parola diferita pentru fiecare cont.
Acest proiect isi propune implementarea unui sistem de management al parolelor. Toate parolele vor fi stocate in memoria microcontroller-ului (sau pe un card SD) si vor fi protejate de un master password. Dispozitivul se va conecta la calculator prin portul usb, se va introduce parola master pentru deblocarea placutei (folosind tastatura numerica), iar apoi utilizatorul va avea acces la parolele salvate, apasand unul din cele 8 butoane prezente. La apasarea butonului, parola va fi reprodusa automat.
Se va porni de la placa de baza cu microcontroller ATMega16 realizata in prima etapa. La aceasta se va conecta o placa de extensie ce contine tastatura numerica si butoanele corespunzatoare parolelor salvate.
Pentru reproducerea parolelor, se va simula o tastatura HID pe usb. Doar ca nu se va tipari un singur caracter, ci intreaga parola.
Pentru inceput, programul asteapta intr-o bucla infinita ca utilizatorul sa introduca parola master corecta. Aceasta parola este formata din 4 cifre. Apoi, la apasarea unui buton, se va trimite parola corespunzatoare caracter cu caracter. Parolele sunt hard-codate in memoria programului.
Functia pentru detectarea unei taste apasate:
static uchar keyPressed(void) { uchar i, mask, x; x = PINB; mask = 1; for(i=0;i<7;i++){ if((x & mask) == 0) return i + 1; mask <<= 1; } return 0; }
TODO: Trebuie gasita o modalitate de actualizare a parolelor. O solutie ar fi folosirea unui card SD si a unui buton care specifica parola care va fi schimbata.
S-au folosit mediul de dezvoltare AVR Studio si compilatorul avr-gcc.
Biblioteci folosite:
Partea de hardware este terminata. In schimb, la partea de cod am intampinat dificultati inca de la inceput. Simularea input-ului de la tastatura prin usb s-a dovedit a fi destul de complicata.
Nu am reusit sa simulez o tastatura HID functionala. Daca as fi trecut de aceasta etapa, restul proiectului n-ar mai fi fost dificil.