цифровая электроника
вычислительная техника
встраиваемые системы

 

Разблокировка компьютера с помощью NFC

Автор: Mike(admin) от 5-04-2014, 06:33

Печатать логин и пароль для разблокировки компьютера может быть утомительным занятием, особенно если вводимые данные длинные. Упростить сию задачу можно с помощью Arduino Leonardo и шилда NFC.


Разблокировка компьютера с помощью NFC

В данном случае Arduino считывает уникальный идентификатор карты NFC и после получения верного номера использует эмулятор клавиатуры для ввода пароля.


Шаг 1:что потребуется


* Arduino Leonardo


* шилд NFC от Adafruit


* NFC-метка (должна поставляться с шилдом), при желании можно приобрести несколько меток


* Монтажный провод


В качестве инструментов следует взять:


* Острый нож


* Олово для пайки


* Кусачки для проводов


* Компьютер


* Кабель microUSB


Шаг 2: аппаратная часть


Вам нужно припаять выводы к шилду и поменять джампер для этого проекта. Для удобства пайки можно выводы вставить в разъем Arduino и затем вставить в них шилд. С помощью острого ножа следует перерезать джампер, связывающий вывод IRQ с выводом 2. Нам нужно это сделать, потому что NFC-шилд не связывается с Arduino по выводу 2. Используйте мультиметр, чтобы проверить наличие или отсутствие контакта. Затем отрежьте небольшой кусок провода и запаяйте его между шестым выводом и выводом IRQ.


Разблокировка компьютера с помощью NFC

Разблокировка компьютера с помощью NFC

Разблокировка компьютера с помощью NFC

Разблокировка компьютера с помощью NFC

Шаг 3: Программная часть


Программа, которую нужно загрузить в Arduino, представлена ниже. Следует заметить, что при этом у вас уже должна быть установлена библиотека Adafruit NFC Library.



#include <Wire.h>
#include <Adafruit_NFCShield_I2C.h>


#define IRQ 6 // this trace must be cut and rewired!
#define RESET 8

Adafruit_NFCShield_I2C nfc(IRQ, RESET);

//////////////////////////////////// SETUP

void setup() {
  // set up Serial library at 9600 bps
  Serial.begin(9600);
 
  // find Adafruit RFID/NFC shield
  nfc.begin();

  uint32_t versiondata = nfc.getFirmwareVersion();
  if (! versiondata) {
    Serial.print("Didn't find PN53x board");
    while (1); // halt
  }
  // Got ok data, print it out!
  Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX);
  Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC);
  Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
 
  // configure board to read RFID tags
  nfc.SAMConfig();
Keyboard.begin(); //initiate the Keyboard
}

/////////////////////////////////// LOOP

unsigned digit = 0;

void loop() {
  uint8_t success;
  uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // Buffer to store the returned UID
  uint8_t uidLength; // Length of the UID (4 or 7 bytes depending on ISO14443A card type)

  // wait for RFID card to show up!
  Serial.println("Waiting for an ISO14443A Card ...");

   
  // Wait for an ISO14443A type cards (Mifare, etc.). When one is found
  // 'uid' will be populated with the UID, and uidLength will indicate
  // if the uid is 4 bytes (Mifare Classic) or 7 bytes (Mifare Ultralight)
  success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);

  uint32_t cardidentifier = 0;
 
  if (success) {
    // Found a card!

    Serial.print("Card detected #");
    // turn the four byte UID of a mifare classic into a single variable #
    cardidentifier = uid[3];
    cardidentifier <<= 8; cardidentifier |= uid[2];
    cardidentifier <<= 8; cardidentifier |= uid[1];
    cardidentifier <<= 8; cardidentifier |= uid[0];
    Serial.println(cardidentifier);

 
    if (cardidentifier == 606061173) {
      Keyboard.write('m');
      Keyboard.write('y');
       Keyboard.write('p');
        Keyboard.write('a');
         Keyboard.write('s');
          Keyboard.write('s');
           Keyboard.write('w');
            Keyboard.write('o');
             Keyboard.write('r');
              Keyboard.write('d');
              delay(5000); //makes sure the password isn't repeated
    }
  }
}

После загрузки кода откройте монитор последовательного соединения на скорости 9600 бод. Поместите на секунду NFC-метку на шилд, а затем уберите ее. Монитор должен показать «Card detected #card number.». Здесь вам нужно скопировать номер карты (#card number) в выражение cardidentifier == 606061173 (вставить свой код). Затем измените строчки с keyboard.write на те, которые определят ваш собственный код. После этого перезалейте код.


Разблокировка компьютера с помощью NFC

Шаг 4: корпус


При желании для такого девайса на 3D принтере можно распечатать корпус, благодаря которому устройство можно смонтировать на внутренней стороне крышки стола.


Разблокировка компьютера с помощью NFC

STL-файл корпуса


Видео работы:





Перевод © digitrode.ru


<Источник>


Теги: Arduino




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий
Цитата
  • Группа: Гости
  • ICQ:
  • Регистрация: --
  • Статус:
  • Комментариев: 0
  • Публикаций: 0
^
Вот прикол...... а я такую же шляпу на курсовой в этом году писал) Но только работает у меня в ubuntu и log c помощью телефона(nokia n9)
Цитата
  • Группа: Гости
  • ICQ:
  • Регистрация: --
  • Статус:
  • Комментариев: 0
  • Публикаций: 0
^
QUOTE
При желании для такого девайса на 3D принтере можно распечатать корпус,
----
спасибо, улыбнуло! (-: у моей бабушки в деревне как раз воляются без дела два таких принтера! (-: аффтор, понт не засчитан!