NFC и RFID Expansion обеспечивает бесконтактную RFID- и NFC-связь в экосистеме Omega. Он поддерживает чтение и запись по нескольким NFC- и RFID-протоколам на частоте 13,56 МГц. Расширение основано на популярном чипе NFC PN532 и обменивается данными с Omega через UART1.
RFID/NFC Expansion поставляется с двумя метками Mifare Ultralight, которые вы можете сканировать, читать и писать. Однако вы также можете использовать другие RFID/NFC метки, которые совместимы с Expansion.
Список других меток:
Мы расскажем, как использовать Mifare Classic и Ultralight, поскольку они являются наиболее часто используемыми метками.
Чтобы использовать 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-метки вы можете использовать утилиту 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 можно использовать для определения типа отсканированной карты:
Карты 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
Вы увидите:
Чтобы записать данные в метку, мы изменим то, что прочитали, а затем запишем результат на карту. Для изменения данных надо:
Утилита 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 очень удобны, они хранят до 4 КБ данных и обычно бывают двух форм-факторов: карты, оснащенные либо 1 КБ, либо 4 КБ памятью EEPROM.
Каждая карта имеет свой собственный UID, символ проверки блока (BCC), доступ с двумя ключами (A и B) и блоки пользовательских данных, которые можно настроить с различными условиями доступа.
Ниже представлена таблица с характеристиками карт:
Каждый блок составляет 16 байт. Сектор содержит 4 блока, итого 64 байт. Один блок в каждом секторе содержит два ключа (A и B), а также параметры управления доступом, которые определяют привилегии (чтение, запись, ни то ни другое, оба) для каждого ключа для этого сектора.
Самый первый сектор метки начинается с блока данных идентификации карты, который не может быть перезаписан, затем идут 2 программируемых блока и блок ключей. Все остальные секторы состоят из 3 программируемых блоков и блока ключей.
Мы будем использовать программу nfc-mfclassic для взаимодействия с картами Mifare Classic. Вы можете читать/записывать в метку, стирать карту и изменять ключи.
С помощью этой команды можно выполнить несколько операций: сканировать метки и сохранять содержимое в бинарном файле (.mfd-формат); изменять пользовательские данные и/или ключи; записывать новый бинарный файл в метку.
Чтобы сканировать метку и сохранить ее в файле с помощью ключа 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, а остальное - данные производителя. Каждый сектор имеет свои собственные ключи и точки доступа, хранящиеся в последнем блоке каждого сектора.
Чтобы записать данные в метку, надо изменить то, что считано, и записать на карту. Чтобы изменить данные необходимо:
Утилиту 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.
Теперь карта содержит обновленные данные!
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-данные еще не записаны, считывать нечего. Запишем что-нибудь на карту.
Для записи сообщения на карту будет использоваться утилита mifare-classic-write-ndef. Процедура записи:
Предполагая, что вы создали текстовый файл, используется следующую команда для записи содержимого этого файла на карту:
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.
Чтобы отформатировать данные карты (удалить все пользовательские данные), используется команда mifare-classic-format. Обязательно создайте резервную копию всех данных, хранящихся на карте, если это необходимо, поскольку операцию нельзя отменить.
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
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2024г https://compacttool.ru