joi, 26 aprilie 2012

Autentificare cu utilizator si parola folosind Arduino Leonardo

English abstract: unsecured authentication method, using email and password, in just two pushes of a button, with the Olimex AVR-T32U4 (Arduino Leonardo like) board

Dupa mii de autentificari cu acelasi cont (utilizator si parola), de mai multe ori pe zi, pe diverse dispozitive, 7 zile din 7, am inceput sa ma cam plictisesc ;)

Cum tot aveam la indemana noua placa AVR-T32U4 de la Olimex, compatibila cu Arduino Leonardo, m-am hotarat sa o utilizez pentru autentificare cu contul meu de Facebook... cu doar doua apasari de buton...

Pentru asta este suficienta placa si un cablu USB de conectare. Breadboardul pe care il vedeti in poza de mai jos e pus doar pentru ca imi place cum arata :D




/*
  Autentificare cu user si parola.
  Total nesigur... oricine are acces, fara nici o verificare ;)
  
  @2012 by http://ro-duino.blogspot.com/
  This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
  
  Bazat pe exemplul de la Olimex
  http://olimex.com/dev/avr-t32u4.html
*/

#define BUTTONINIT  DDRE  &= ~(1<<2)
#define BUTTONSTATE ((PINE & B00000100) != 0)

int previousButtonState = HIGH;   // for checking the state of a pushButton
int counter = 0;                  // button push counter

void setup() {
  BUTTONINIT;
}

void loop() {
  int buttonState = BUTTONSTATE;
  
  if ((buttonState != previousButtonState) && (buttonState == HIGH)) {
    switch (counter) {
    case 0:
      Keyboard.print("iardsoft@yahoo.com\t"); // TAB-ul de dupa email ne trece la campul de parola
      counter = 1;
      break;
    case 1:
      Keyboard.println("Aici-Pun-Parola"); // ENTER-ul de la println realizeaza autentificarea
      counter = 0;
      break;
    }    
  }
  
  previousButtonState = buttonState; 
}


Functionarea este extrem de simpla. Deschidem in browser pagina pe care dorim sa ne autentificam si verificam sa fie cursorul in campul unde trebuie introdusa adresa de email:



Apasam butonul marcat "BUT" de pe placa. Adresa de email este acum completata si am trecut pe campul urmator, cel de parola.



Apasam din nou butonul "BUT" si gata, ne-am autentificat ;)

AVERTISMENT: solutia nu este sigura absolut de loc! Oricine are acces la placa are acces si la cont! Posibile imbunatatiri: adaugarea unei tastaturi numerice si utilizarea unui cod PIN; criptarea datelor; stergerea informatiilor de autentificare dupa 3 incercari nereusite de introducere a PNI-ului, ecran LCD, mai multe conturi etc.

Edit: daca cele doua campuri (utilizator si parola) sunt in ordine, adica daca ne putem deplasa intre utilizator si parola cu tasta TAB, codul merge modificat pentru a se realiza autentificarea cu o singura apasare de buton.

void loop() {
  int buttonState = BUTTONSTATE;
  
  if ((buttonState != previousButtonState) && (buttonState == HIGH)) {
      Keyboard.print("iardsoft@yahoo.com\t"); // TAB-ul de dupa email ne trece la campul de parola
      Keyboard.println("Aici-Pun-Parola"); // ENTER-ul de la println realizeaza autentificarea
  }
  
  previousButtonState = buttonState; 
}


luni, 9 aprilie 2012

Arduino tradus in limba romana

Am fost informat despre o initiativa interesanta a celor de la roroid: traducerea mediului de dezvoltare Arduino in limba romana!

Puteti sa incercati ultima versiune de pe pagina de mai jos, sau va puteti aduce contributia la traducere :)

Traducere Arduino IDE in Romana [finalizat]
Edit (26 iunie 2012): am actualizat link-ul de mai sus
Succes!