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

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

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

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

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

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

Шаг 1: детали

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

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

Шаг 2: железо

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

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

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

Проверить отсутствие/наличие контакта можно с помощью мультиметра, а для более ясного понимания процедуры сборки 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 == ».

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

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

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

Если нашли ошибку, выделите текст и нажмите Ctrl + Enter
Избранное

Лучшие предложения

Селфи на миллион сердечек: 5 лайфхаков для классных кадров на складной смартфон TECNO

Селфи на миллион сердечек: 5 лайфхаков для классных кадров на складной смартфон TECNO

Трикотажное платье Zarina

Цена дня: трикотажное платье Zarina за 2 079 рублей

Лучшие предложения недели: скидки от AliExpress, ECCO, Sela и других магазинов

Лучшие предложения недели: скидки от AliExpress, ECCO, Sela и других магазинов

Blackview Tab 16

Надо брать: планшет Blackview Tab 16 за 12 719 рублей

17 украшений, чтобы нарядить ёлку от основания до макушки

17 украшений, чтобы нарядить ёлку от основания до макушки

Утеплённые мужские кеды Li-Ning

Выгодно: мужские кеды Li-Ning со скидкой 30%

Nahodki AliExpress: samye interesnye i poleznye tovary

Находки AliExpress: штора для ванной, подушка-черепашка и домик для кота

15 интересных товаров дешевле 500 рублей

Аккумуляторные батарейки, коврик для теста, ёлочные игрушки и другие интересные товары дешевле 500 рублей

Это интересно
Семью заводить можно? А детей? Тест о жизни с ВИЧ

Семью заводить можно? А детей? Тест о жизни с ВИЧ

Социальная реклама
Взять от распродаж всё: 6 советов для сезона скидок

Взять от распродаж всё: 6 советов для сезона скидок

Реклама
Стоит ли платить за воздух: что такое бризер и чем он может быть полезен

Стоит ли платить за воздух: что такое бризер и чем он может быть полезен

Реклама
5 популярных заблуждений, которые мешают делать выгодные покупки на распродажах

5 популярных заблуждений, которые мешают делать выгодные покупки на распродажах

Реклама
Комментарии
Юрий Кротов
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

Можно подарить что-нибудь для рыбалки что-нибудь на там какие-нибудь пивные кружки Ну не знаю может там для каких-то напитков
Что подарить папе на Новый год
Аватар автора комментария
Alessia Marin
9 минут назад

0 / 0

Для жарки! 😉
Пышные оладьи на молоке с дрожжами
Аватар автора комментария
Тарас Атавин
11 минут назад

0 / 0

Это ПРИНЦЕССА. Её с детства УЧАТ ПРАВИТЬ. Как? Правильно, ЗАСТАВЛЯЮТ ПРИНИМАТЬ РЕШЕНИЯ. Так от чего она сбежала с первым попавшимся музыкантом?
Пользователи Сети разбираются в отношениях короля и его дочери из «Бременских музыкантов»

Комментарий дня

Аватар автора комментария
Anton Halin
16 часов назад

+2 / -1

Не нравится - не смотри / не пользуйся. Зае… надоели в общем
10-летний британец просит Apple изменить эмодзи с очками — сейчас он «оскорбительный»
6 необычных приборов и установок, которыми пользуются в научных лабораториях России

6 необычных приборов и установок, которыми пользуются в научных лабораториях России

Социальная реклама
Новости

Когда работу сделали для галочки: 15 фото от пользователей Сети

Вчера

Китайский ровер обнаружил под поверхностью Марса странные многоугольники

Вчера

Google назвала 11 новых функций для Android, WearOS и Google TV

Вчера

10-летний британец просит Apple изменить эмодзи с очками — сейчас он «оскорбительный»

Вчера

В России установлен рекорд по продажам смартфонов. В топе три китайских бренда

Вчера

«Госуслуги» смогут заменить бумажный паспорт уже в 2024 году

Вчера

Журнал TIME выбрал 10 лучших игр 2023 года

Вчера

«Яндекс Музыка» провела ребрендинг и обновила систему рекомендаций «Моей волны»

Вчера

«Киберзверь» выходит на охоту: стартовали поставки Tesla Cybertruck

Вчера

Вышел первый трейлер «Фуриосы» — спин-оффа «Безумного Макса»

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