2016-12-20 5 views
2

Я начал изучать, используя NFC в Android. Я могу легко читать и писать в формате NDEF.Конфигурируйте MIFARE DESFire EV1 как NFC Forum Type 4 Tag для NDEF

Моя проблема с MIFARE DESFire EV1, у меня есть некоторые фабричные карты, и я понимаю, что они не соответствуют типу NFC Forum 4 Tag спецификации и, следовательно, не принимают быть считаны или записаны в Формат NDEF (при их заводской настройке).

Я могу получить доступ к тегу через android.nfc.tech.NfcA или android.nfc.tech.IsoDep.

До сих пор я понимаю, что мне нужно использовать метод IsoDep.transceive() для передачи команд, которые позволяют мне создавать тэг NFC Forum Type 4.

Но у меня много проблем. Я использую TagWriter, и он отлично работает. Каждый раз, когда я использую набор данных NDEF, он автоматически выполняет процедуру, которая делает карту тегом типа NFC Forum 4 и, следовательно, тег NDEF.

Однако я не мог найти простой пример, чтобы выполнить эту процедуру самостоятельно. Даже после чтения спецификационного документа NFCForum-TS-Type-4-Tag_2.0, я все еще очень потерян.

Есть ли какой-либо практический пример для выполнения процесса, который выполняет приложение TagWriter?

  • Признать NfcA/IsoDep (ок здесь)
  • Сделать карты соответствуют NFC Forum Type спецификации 4 Tag
  • Start распознавания метки как android.nfc.tech.Ndef
  • Включить чтение и запись из ЦНК

ответ

4

Процедура подготовки MIFARE DESFire EV1 в качестве тега типа NFC Forum 4 (V2.0) не является частью независимой платформы NFC. Вместо этого эта процедура определяется производителем чипа (NXP) в примечании к применению AN11004: MIFARE DESFire as Type 4 Tag. Процедура примерно следующее:

  1. Если Android уже обнаруживает технологию Ndef тегов, вы сделали. Поскольку Android пытается обнаружить приложение тега NDEF и сообщение NDEF, содержащееся в файле данных NDEF, поиск технологии тегов Ndef означает, что тег уже подготовлен для NDEF (т. Е. Он уже настроен как тег типа NFC Forum 4).

  2. Кроме того, вы должны проверить, действительно ли тег является тегом DESFire EV1. Вы можете сделать это на основе процедуры идентификации типа, описанной в AN10833: MIFARE Type Identification Procedure, и на основе информации о версии, полученной из тега DESFire.

  3. Как только вы узнаете, что тег является тегом DESFire EV1 (и у вас есть достаточный доступ к главному приложению, чтобы применить необходимые изменения к тегу, который может потребоваться и шаг аутентификации), вы должны сначала создать приложение тегов NDEF. Это приложение DESFire, которое имеет имя ISO 7816-4 DF (= AID), установленное на D2760000850101 во время создания. Значения, которые вы выбрали для DESFire AID, Идентификатор файла ISO, не важны для правильной работы T4T (обратите внимание, что это отличается от пред-EV1 поколения DESFire). Параметры ключа зависят от вашего сценария использования.Единственным важным параметром, который необходимо установить при создании приложения, является разрешение идентификаторов файлов ISO 7816-4 для файлов в приложении (бит 5 в байтах настроек ключа 2 установлен в «1»).

  4. Выберите новое созданное приложение.

  5. Создайте новый стандартный файл данных, файл контейнера возможностей, размером 15 байт. Вам необходимо установить идентификатор файла ISO 7816-4: E103. Убедитесь, что вы используете обычную связь, настроив Com.Set. байт до 0x00. Установите поле «Права доступа», чтобы впоследствии можно было изменять содержимое файла во время инициализации.

  6. Создайте еще один новый стандартный файл данных, файл данных NDEF. Если вы используете только тег как тег NDEF, вы обычно используете все оставшееся свободное пространство. Задайте идентификатор файла ISO 7816-4: E104. Убедитесь, что вы используете обычную связь, настроив Com.Set. байт до 0x00. Установите для поля «Права доступа» значение 0xE000 для тега, доступного только для чтения, или 0xEEE0 для тега, который должен разрешить доступ к чтению и записи через технологию тегов Ndef.

  7. Выберите файл возможностей контейнера и записи данных способность контейнера к нему:

     
    000F 20 003A 0034 04 06 E104 xxxx 00 yy 
    

    где xxxx является размер файла данных ЦНК и yy является 0x00, если файл свободно доступен для записи или 0xFF, если файл доступен только для чтения.

  8. Выберите файл сообщения NDEF и напишите первые 2 байта как 0x0000 (чтобы указать, что файл пуст).

Обратите внимание, что создание структуры тегов приложений ЦНКА на DESFire (EV1) карте требуется использовать либо родные или завернутый родную команду набор MIFARE DESFire. Поскольку некоторые версии Android вызывают известные проблемы с собственными командами, вам лучше использовать обернутые собственные команды. Подробные сведения о наборе команд DESFire содержатся в технических описаниях продуктов DESFire (доступно только в NDA от NXP).

+0

Можете ли вы прокомментировать байтовый заказ? Согласно документу AN11004, «согласно спецификациям NDEF данные представлены в Network Byte-Order» (big-endian), но команды APDU используют первую нотацию LSB. Не следует ли выдавать данные выше (пункт 7) в обратном порядке при отправке команды APDU ?. Я довольно уверен, что смог правильно настроить приложение, так как приложение NXP (Android) распознает «Type 4 Tag version 1» под заголовком Desfire Applications, но если я перейду на вкладку NDEF, «Нет хранилища данных NDEF», отображается. Поэтому я не знаю, является ли моя проблема CC или файлом NDEF. Благодарю. – Paul

+0

@Paul Можете ли вы быть более конкретным о том, какие поля вам интересны? Какие команды APDU? Вы имеете в виду команды MIFARE DESFire? Они используют первую нотацию LSB (но это касается только целочисленных полей, а не двоичных данных). Поля в CC находятся в правильном порядке (поскольку они должны быть записаны в файл CC в моем ответе выше). –

Смежные вопросы