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

 

Разблокировка компьютера с помощью 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



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


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

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

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

  • 5 января 2019 16:00
  • Группа: Гости
  • ICQ:
  • Регистрация: --
  • Статус:
  • Комментариев: 0
  • Публикаций: 0
^
А если у меня на ноуте есть nfc? И тел тоже с nfc? Мне как быть?