Каталог товаров

Использование RFID и NFC Expansion

NFC и RFID Expansion обеспечивает бесконтактную RFID- и NFC-связь в экосистеме Omega. Он поддерживает чтение и запись по нескольким NFC- и RFID-протоколам на частоте 13,56 МГц. Расширение основано на популярном чипе NFC PN532 и обменивается данными с Omega через UART1.

Поддерживаемые типы карт

RFID/NFC Expansion поставляется с двумя метками Mifare Ultralight, которые вы можете сканировать, читать и писать. Однако вы также можете использовать другие RFID/NFC метки, которые совместимы с Expansion. 

Список других меток:

  • Карты Mifare 1k, 4k, Ultralight и DesFire
  • Карты ISO/IEC 14443-4, такие как CD97BX, CD light, DesFire, P5CN072 (SMX)
  • Карты Innovision Jewel, такие как IRT5001
  • Карты FeliCa, такие как RCS_860 и RCS_854

Мы расскажем, как использовать Mifare Classic и Ultralight, поскольку они являются наиболее часто используемыми метками.

Метки RFID

Монтаж

Чтобы использовать RFID/NFC Expansion, сначала необходимо инициализировать устройство:

opkg update

opkg install nfc-exp

Установится пакет nfc-utils, который содержит несколько программ командной строки на основе библиотеки libnfc для взаимодействия с устройствами NFC. Смотрите описание libnfc в wiki для получения дополнительной информации.

Доступные команды

После установки nfc-exp будут доступны следующие утилиты:

nfc-emulate-forum-tag4

nfc-jewel

nfc-list

nfc-mfclassic

nfc-mfultralight

nfc-read-forum-tag3

nfc-relay-picc

nfc-scan-device

Также существует несколько пакетов, которые посвящены меткам Mifare:

mifare-classic-format

mifare-classic-read-ndef

mifare-classic-write-ndef

mifare-desfire-access

mifare-desfire-create-ndef

mifare-desfire-ev1-configure-ats

mifare-desfire-ev1-configure-default-key

mifare-desfire-ev1-configure-random-uid

mifare-desfire-format

mifare-desfire-info

mifare-desfire-read-ndef

mifare-desfire-write-ndef

mifare-ultralight-info

Эти программы доступны из командной строки и используются для управления RFID/NFC Expansion. Чтобы распечатать информацию об использовании команды, запустите ее с аргументом ‘-h’.

Сканирование RFID/NFC меток

Для сканирования RFID/NFC-метки вы можете использовать утилиту nfc-list. Этот инструмент сканирует все доступные метки и печатает результаты. Если метки не найдены, он просто выйдет.

Поместите метку рядом с антенной RFID/NFC Expansion и выполните команду nfc-list. Например, если вы сканируете метку Mifare Classic, напечатается что-то вроде следующего:

nfc-list uses libnfc reboot-3483-gd1bcad0

NFC device: pn532_uart:/dev/ttyS1 opened

1 ISO14443A passive target(s) found:

ISO/IEC 14443A (106 kbps) target:

    ATQA (SENS_RES): 00  04

       UID (NFCID1): c0  a8  f6  73

      SAK (SEL_RES): 08

ATQA и SAK указывают производителя и тип метки, а UID - уникальный идентификационный номер. Это важно! Поскольку каждая метка имеет уникальный идентификатор, это значение можно использовать для распознавания определенных карт!

Значения ATQA и SAK, а также длину UID можно использовать для определения типа отсканированной карты:

ATQA / SAK

Использование карт Mifare Ultralight

Карты Mifare Ultralight очень полезны для объемных приложений. В них загружено 64 байта памяти EEPROM, включая 4 байта единожды программируемой памяти, в которую можно записывать отдельные биты, но нельзя их стирать, и 48 байтов пользовательских данных. Ultralight карты можно также установить в режим «только для чтения» с помощью Lock-Bytes.

Программа nfc-mfultralight используется для настройки карт Mifare Ultralight. Вы можете считать из метки и записать в нее.

С помощью этой программы можно выполнить несколько операций: сканирование тега и сохранение его в двоичном файле (.mfd - формат); изменение пользовательских данных; запись нового двоичного файла в метку

Чтобы отсканировать метку и сохранить ее в файле, выполните следующую команду:

nfc-mfultralight r mycardUltra.mfd

Карта была прочитана и сохранена в файле mycardUltra.mfd. Бинарный .mfd-файл сохранен в вашей файловой системе. Чтобы просмотреть содержимое файла, используйте утилиту xxd с помощью следующей команды:

xxd mycardUltra.mfd

Вы увидите:

Сканирование метки rfid nfc

Изменение данных

Чтобы записать данные в метку, мы изменим то, что прочитали, а затем запишем результат на карту. Для изменения данных надо:

  1. Преобразовать бинарный файл .mfd в .hex, который легче редактировать
  2. Отредактировать .hex-файл, используя любой редактор кода (например, vim, nano и т. д.)
  3. Преобразовать шестнадцатеричный код обратно в .mfd-файл

Утилита xxd может использоваться для преобразования .mfd в .hex:

xxd mycardUltra.mfd > mycardUltra.hex

Вы можете изменить любой блок данных пользователя (2-й, 3-й и 4-й блоки сектора). Измените байты, которые вы хотите отредактировать, и сохраните их. Например, вы можете сделать следующее:

Block 1: 4920 616d 2075 7369 6e67 2072 6669 642f

Block 2: 6e66 6320 6578 7061 6e73 696f 6e0a 0a0a

Сохраните измененный файл и преобразуйте его в двоичный формат .mfd, используя следующую команду:

xxd -r mycardUltra.hex mycardUltra.mfd

Запись в метку

Теперь вы можете записать обновленные данные на карту. Выполните следующую команду

yes N | nfc-mfultralight w mycardUltra.mfd

Первая часть этой команды автоматически ответит «Нет» на все вопросы, заданные утилитой:

Write OTP bytes ? [yN] Write Lock bytes ? [yN] Write UID bytes (only for special writeable UID cards) ? [yN]

И вы увидите:

NFC device: Omega NFC Expansion opened

1 ISO14443A passive target(s) found:

        53e55e3e000f80

Using MIFARE Ultralight card with UID: 53e55e3e000f80

Tag is EVI - PASSWORD may be required

EVI storage size: unknown!

Write OTP bytes ? [yN] Write Lock bytes ? [yN] Write UID bytes (only for special writeable UID cards) ? [yN]

Если вы снова прочитаете карту, вы увидите, что она теперь содержит только что записанные данные:

0000000: 53e5 5e60 3e00 0f80 b148 0000 e110 1200  S.^`>....H......

0000010: 4920 616d 2075 7369 6e67 2072 6669 642f  I am using rfid/

0000020: 6e66 6320 6578 7061 6e73 696f 6e0a 0a0a  nfc expansion...

0000030: 6572 65fe 616e 7cfe 003e 1026 0001 0110  ere.an|..>.&....

Использование карт Mifare Classic

Карты Mifare Classic очень удобны, они хранят до 4 КБ данных и обычно бывают двух форм-факторов: карты, оснащенные либо 1 КБ, либо 4 КБ памятью EEPROM.

Каждая карта имеет свой собственный UID, символ проверки блока (BCC), доступ с двумя ключами (A и B) и блоки пользовательских данных, которые можно настроить с различными условиями доступа.

Ниже представлена таблица с характеристиками карт:

Типы карт RFID NFC

Каждый блок составляет 16 байт. Сектор содержит 4 блока, итого 64 байт. Один блок в каждом секторе содержит два ключа (A и B), а также параметры управления доступом, которые определяют привилегии (чтение, запись, ни то ни другое, оба) для каждого ключа для этого сектора.

Самый первый сектор метки начинается с блока данных идентификации карты, который не может быть перезаписан, затем идут 2 программируемых блока и блок ключей. Все остальные секторы состоят из 3 программируемых блоков и блока ключей.

Блоки RFID NFC

Мы будем использовать программу nfc-mfclassic для взаимодействия с картами Mifare Classic. Вы можете читать/записывать в метку, стирать карту и изменять ключи.

С помощью этой команды можно выполнить несколько операций: сканировать метки и сохранять содержимое в бинарном файле (.mfd-формат); изменять пользовательские данные и/или ключи; записывать новый бинарный файл в метку.

Считывание метки Mifare Classic

Чтобы сканировать метку и сохранить ее в файле с помощью ключа A, выполните следующую команду:

nfc-mfclassic r a mycard.mfd

Карта была прочитана и сохранена в файле mycard.mfd с использованием ключа A. Бинарный .mfd-файл сохранен в вашей файловой системе. Этот файл заполнен двоичным содержимым, которое трудно понять, поэтому можно использовать утилиту xxd, чтобы преобразовать ее в более читаемый шестнадцатеричный формат.

С помощью утилиты можно просматривать содержимое данных метки:

xxd mycard.mfd

Будет показано следующее:

00000000: 70e2 f773 1688 0400 0000 0000 0000 0000  p..s............

00000010: 0000 0000 0000 0000 0000 0000 0000 0000  ................

00000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................

00000030: ffff ffff ffff ff07 8069 0000 0000 0000  .........i......

00000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................

00000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................

00000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................

00000070: ffff ffff ffff ff07 8069 0000 0000 0000  .........i......

00000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................

00000090: 0000 0000 0000 0000 0000 0000 0000 0000  ................

000000a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................

000000b0: ffff ffff ffff ff07 8069 0000 0000 0000  .........i......

...

Первые 4 строки представляют первый сектор. Самый первый блок этого Сектора содержит идентификационные данные карты, включая UID, BCC и другие данные производителя. В этом случае UID этой карты - 70e2f773, BCC - 16, ATQA - 8804, а остальное - данные производителя. Каждый сектор имеет свои собственные ключи и точки доступа, хранящиеся в последнем блоке каждого сектора.

Изменение данных

Чтобы записать данные в метку, надо изменить то, что считано, и записать на карту. Чтобы изменить данные необходимо:

  1. Преобразовать бинарный .mfd-файл в .hex, который легче редактировать
  2. Отредактировать .hex-файл, используя любой редактор кода (например, vim, nano и т. д.)
  3. Преобразовать .hex обратно в .mfd-файл

Утилиту xxd можно использовать для преобразования .mfd в .hex:

xxd mycard.mfd > mycard.hex

Вы можете изменить любой блок данных пользователя (2-й и 3-й блоки первого сектора и 1-й, 2-й или 3-й блок всех других секторов). Измените байты, которые вы хотите отредактировать, и сохраните их. Например, можно сделать следующее:

Block 1: 0001 0203 0405 0607 0809 0a0b 0c0d 0e0f

Сохраните измененный файл и конвертируйте его обратно в бинарный .mfd с помощью команды:

xxd -r mycard.hex mycard.mfd

Запись в метку

Вы можете записать обновленные данные обратно на карту, используя ключ A:

# nfc-mfclassic w a newdata.mfd

NFC reader: pn532_uart:/dev/ttyS1 opened

Found MIFARE Classic card:

ISO/IEC 14443A (106 kbps) target:

    ATQA (SENS_RES): 00  04

       UID (NFCID1): 70  e2  f7  73

      SAK (SEL_RES): 08

Guessing size: seems to be a 1024-byte card

Writing 64 blocks |...............................................................|

Done, 63 of 64 blocks written.

Теперь карта содержит обновленные данные!

Чтение данных NDEF

Mifare-classic-read-ndef - это утилита для чтения карты и сохранения ее в NDEF-формате. NDEF - сокращение NFS Data Exchange Format. Этот формат используется для хранения и обмена данными в текстовом формате (например, текстовыми сообщениями, URL-адресами сайтов, паролями и т.д.).

Выполните следующую команду:

mifare-classic-read-ndef -y -o readdata.txt

В этой команде не подтверждается чтение (с помощью ‘-y’) и извлечение NDEF-сообщения (‘-o’). Если метка не имеет ранее записанных NDEF-данных, вам будет представлен следующий результат:

Found Mifare Classic 1k with UID 10ebf773.

No MAD detected.

MAD обозначает Mifare Application Directory и указывает сектор, содержащий запись NDEF. Если NDEF-данные еще не записаны, считывать нечего. Запишем что-нибудь на карту.

Запись NDEF-данных на метку

Для записи сообщения на карту будет использоваться утилита mifare-classic-write-ndef. Процедура записи:

  • Создайте файл (например, file.txt) и заполните его сообщением (например, Hello World!)
  • Запишите этот файл в метку
  • Проверьте, были ли данные успешно записаны

Предполагая, что вы создали текстовый файл, используется следующую команда для записи содержимого этого файла на карту:

mifare-classic-write-ndef -y -i file.txt

Если файл был успешно записан, вы должны увидеть похожий вывод:

NDEF file is 13 bytes long.

Found Mifare Classic 1k with UID 10ebf773.

Наконец, чтобы проверить, есть ли сообщение на карте, считаем ее в новый файл и проверим данные:

mifare-classic-read-ndef -y -o readfile.txt

Теперь вы можете увидеть содержимое файла readfile.txt и сравнить его с файлом file.txt.

Форматирование NDEF-данных метки

Чтобы отформатировать данные карты (удалить все пользовательские данные), используется команда mifare-classic-format. Обязательно создайте резервную копию всех данных, хранящихся на карте, если это необходимо, поскольку операцию нельзя отменить.

Доступность RFID/NFC Expansion

Nfc-scan-device - это утилита для проверки доступности RFID/NFC - устройства. Когда RFID/NFC Expansion подключен к док-станции, вы можете отсканировать его и убедиться, что оно распознается системой:

# nfc-scan-device

nfc-scan-device uses libnfc reboot-3483-gd1bcad0

1 NFC device(s) found:

- pn532_uart:/dev/ttyS1:

    pn532_uart:/dev/ttyS1

Можно увидеть, что Expansion запущен и работает в /dev/ttyS1.

Советы по устранению неполадок

Иногда команда nfc не может завершить свой процесс, и если вы прервете ее с помощью Ctrl + C, она будет работать в фоновом режиме. Если вы попытаетесь выполнить другие операции, связанные с NFC, вы можете столкнуться со следующей ошибкой:

error   libnfc.driver.pn532_uart        Serial port already claimed: /dev/ttyS1

nfc-mfultralight: ERROR: Error opening NFC device

Это означает, что RFID/NFC Expansion все еще занят обработкой предыдущей команды. Утилиту screen можно использовать, чтобы остановить его. Выполните следующие команды, чтобы установить ее и остановить фоновый процесс:

opkg update

opkg install screen

screen /dev/ttyS1

Вы увидите пустой черный экран. Чтобы остановить процесс, нажмите Ctrl + a + k и в следующем окне Really kill this window [y/n] нажмите y. Это остановит процесс и позволит вам продолжить.

Контакты

г. Москва, Пятницкое ш. д. 18, пав. 566

zakaz@compacttool.ru

8-495-752-55-22

Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !

© Все права защищены 2021г https://compacttool.ru