Лайфхакер
Лайфхакер
Лучшее
Новости
Жизнь
Рецепты
Здоровье
Кино
Технологии
Покупки
Лучшее
Новости
Жизнь
Рецепты
Здоровье
Кино
Технологии
Покупки
Реши за меня
Добрые новости
Стыдные вопросы
Есть мнение
Норм или стрём
Личный опыт
Объясняем за минуту
Сервисы
Сделай сам
15 апреля 2014

Хардкорный «сделай сам» — вход в операционную систему по NFC-карте

Фото автора Артём Леднёв
Артём Леднёв

Хардкорный «сделай сам» — вход в операционную систему по NFC-карте

До сих пор пользователи популярных десктопных операционных систем не имели иной возможности входа в ОС, кроме как ввод пароля. Хватит это терпеть! Пора брать в руки паяльник и сделать процедуру аутентификации сравнимой по простоте с поглаживанием своего кота.

👌 В телеграм-канале «Лайфхакер» лучшие статьи о том, как сделать жизнь проще.

Сегодня в рубрике DIY мы поделимся подсмотренным на Instructables способом ввода пароля для входа в ОС с помощью NFC-карты.

Шаг 1: детали

Нам понадобятся:

  • Arduino Leonardo
  • Adafriut NFC Shield
  • NFC карта (идёт в комплекте с Adafriut NFC Shield)
  • небольшой кусочек провода
  • острый нож
  • припой
  • инструмент для обрезки и зачистки проводов
  • компьютер
  • кабель micro-USB

Шаг 2: железо

Процедура создания аппаратного модуля крайне проста.

FXKA67YHTCPY3VV

Единственная модификация, требующаяся для работы устройства, заключается в разрыве цепи между pin IRQ и pin 2. Для этого и пригодится нож.

FSGLGYQHTCPY3VQ

Потом потребуется соединить IRQ и 6 пины с помощью провода.

F28O95WHTCPY3VE

Проверить отсутствие/наличие контакта можно с помощью мультиметра, а для более ясного понимания процедуры сборки Leonardo и NFC-модуля предлагаем вот этот короткий видеоролик. Тут всё показано по шагам и очень наглядно:

Шаг 3: программное обеспечение

Ниже представлен код, который необходимо залить в Arduino. Перед началом загрузки нужно убедиться, что установлена библиотека Adafruit NFC. Подробнее о ней здесь.

#include

#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». Заменяем полученным номером текущий номер карты в строке «cardidentifier == ».

FMO3XEBHTDDVWLM

Теперь меняем участок кода, отвечающий за ввод пароля. Как видим, по умолчанию пароль представляет собой комбинацию «mypassword». Заменяем её на наш текущий пароль входа в операционную систему (количество символов пароля меняется простым добавлением/уменьшением строк с командой «Keyboard.write).

F3MZ8Z1HTDDVWLN

Перезагружаем итоговый код в Arduino, и теперь, стоит лишь нам поднести эту NFC-карту к ридеру, как пароль мгновенно будет введён в поле ввода. Жмём Enter и радуемся.

В комментариях к проекту нашёлся человек, предложивший дополнить череду команд ввода пароля финальной Keyboard.write(KEY_RETURN); для исключения необходимости нажимать Enter, но данное решение не проверялось.

Если нашли ошибку, выделите текст и нажмите Ctrl + Enter
Это интересно
Самокат, СИМ и питбайк: как кататься без травм и штрафов

Самокат, СИМ и питбайк: как кататься без травм и штрафов

Не ругайте себя за срывы: что мешает бросить курить и как с этим справиться

Не ругайте себя за срывы: что мешает бросить курить и как с этим справиться

7 мифов об уколах для похудения

7 мифов об уколах для похудения

Зачем ходить на квизы, если всё можно спросить у ИИ

Зачем ходить на квизы, если всё можно спросить у ИИ

Комментарии
Юрий Кротов
16.04.14 09:45
А можно обойтись без создания велосипеда? Есть готовые варианты?
Дмитрий Васильев
11.05.14 15:14
Где-то читал про USB устройство для ввода пароля. Вроде эмулятора клавиатуры.
Олег Яковлев
03.06.14 09:20
Наглое вранье. У меня уже лет 10 по отпечатку пальца логинится.
Fedor Fedorov
28.05.19 22:06
Давно придуманы рут-токены на usb )) за то первый абзац специально два раза прописали

Новые комментарии

Аватар автора комментария
Артём Козориз2 часа назад

0 / 0

Изображение
Чем электрический кабель отличается от провода и что лучше
Аватар автора комментария
Артём Козориз3 часа назад

0 / 0

Мм, вот оно что! Спасибо, надо будет как-то заценить. Я не так давно впервые прошёл Broken Sword: The Shadow of the Templars (причём на Nintendo DS), получил массу удовольствия. Есть в старых адвенчурах своя крутая атмосфера, а уж если с ними ещё и воспоминания связаны, то вообще win-win.
30+ видеоигр из детства, за которыми мы просиживали сутки напролёт
Аватар автора комментария
Алексей3 часа назад

0 / 0

У нас большая гардеробная, а под шкафами очень узкие щели, куда сложно добраться вручную. Но робот-пылесос Neatsvor тонкий и спокойно туда заезжает, вытаскивая всю накопившуюся пыль.
Новинка от Roborock: робот-пылесос для тщательной уборки со скидкой 53%
Аватар автора комментария
Rr9 часов назад

0 / 0

Подойдет такое обрезанным у которых удалена уздечка?
«Яркий финал всего за пару минут»: почему вакуумный стимулятор для мужчин Arcwave Ion действительно уникален
ТЕСТ: Какой вы путешественник? 

ТЕСТ: Какой вы путешественник? 

Лайфхакер
Информация
О проектеРубрикиРекламаРедакцияВакансииО компании
Подписка
TelegramВКонтактеTwitter (X)PinterestYouTubeИнициалRSS
Правила
Пользовательское соглашениеПолитика обработки персональных данныхПравила применения рекомендательных технологийПравила сообществаСогласие на обработку персональных данныхСогласие для рекламных рассылокСогласие для информационной программы
18+Копирование материалов запрещено.
Издание может получать комиссию от покупки товаров, представленных в публикациях