Эмуляция карты с помощью программного обеспечения NFC

Прочитав много вопросов, решил написать этот. Я читал, что стандартная версия Android не поддерживает API для эмуляции карты. Кроме того, мы не можем писать собственные приложения для защиты элементов, встроенных в контроллеры nfc, из-за ключей, управляемых Google/Samsung.

Мне нужно эмулировать карту (mifare или desfire и т.д.). Вариант, который я вижу, делает это с помощью программного обеспечения. У меня есть считыватель ACR122U, и я проверил, что режим NFC P2P отлично работает с моим Nexus-S.

1) Я наткнулся на сайт, где говорилось, что NFC-контроллер nexus s (pn532) может эмулировать карту mifare 4k. Если это правда, могу ли я писать/читать команды apdu на эту эмулируемую карту? (Возможно, если я использую модифицированный ром, такой как cyanogenmod)

2) Могу ли я написать приложение для Android, которое читает команды apdu, отправленные с читалки, и генерирует соответствующие ответы (если не полностью, то только до некоторой степени). Для этого я искал, что нам нужно пропатчить nexus с cynagenmod. Кто-нибудь пробовал эмулировать карту этим методом?

Я вижу, что это возможно, поскольку у нас есть продукты от компаний по контролю доступа, предлагающих мобильные приложения, с помощью которых можно открывать двери, например. http://www.assaabloy.com/en/com/Products/seos-mobile-access/


person user720694    schedule 20.06.2013    source источник


Ответы (3)


Некоторые факты, которые могут помочь в ваших поисках:

  • Контроллер NFC в Nexus S (а также в Galaxy Nexus, Nexus 7 и многих других устройствах Android) — PN544.
  • Эмуляция карты может выполняться либо защитным элементом, подключенным к контроллеру NFC, либо хост-устройством (в данном случае = устройством Android). В Nexus S есть элемент безопасности, который можно использовать для этого (используется в Google Wallet). Эмуляция карты с хост-устройства не является функцией NFC-контроллера PN544, хотя некоторые утверждают, что им удалось заставить ее работать.
  • Вы можете включить эмуляцию карты с помощью безопасного элемента, укоренив свое устройство и следуя инструкциям на странице https://stackoverflow.com/a/10506299/1202968 (не пробовал это с 4.x JB, но я предполагаю, что это все еще работает).
  • Эмуляция карты MIFARE Classic может выполняться защитным элементом Nexus S, но не хост-устройством. Эмуляция карты DESFire не поддерживается защитным элементом в Nexus S.
  • Я исследовал аналогичный дверной замок, в котором использовалась эмуляция карты для связи с мобильным устройством NFC, а для связи с картами контроля доступа использовался режим чтения/записи карт.

ИМО, 2 самых простых варианта: использовать связь P2P (Android Beam) или использовать эмуляцию карты в считывающем устройстве (если оно это поддерживает). Все остальные варианты требуют таких вещей, как рутированные устройства и пользовательские ПЗУ, которые не рассчитаны на будущее и не могут быть преобразованы в реальный продукт.

person NFC guy    schedule 21.06.2013
comment
Спасибо за ответ. Итак, прочитав ответы, которые я получил, P2P — это путь. Итак, могу ли я написать приложение для Android, которое (используя луч Android) одним нажатием на считыватель отправляет соответствующие данные считывателю, чтобы предоставить/запретить доступ к двери? Могу ли я обмениваться несколькими сообщениями NDEF одним касанием? Я хотел узнать объем данных, которые я могу отправить/получить одним нажатием. В настоящее время я использую NPP для режима P2P. Должен ли я переключиться на SNEP, если у меня есть больше данных для обмена? - person user720694; 24.06.2013

Эмуляция карты с помощью программного обеспечения теперь доступна в Android 4.4. http://developer.android.com/guide/topics/connectivity/nfc/hce.html

person uploader33    schedule 01.11.2013
comment
Вы отвечаете слишком расплывчато. Вы не отвечаете конкретно на вопросы ОП. Потратьте еще немного времени на объяснение, а не просто блевать ссылками. Более того, если эта ссылка в будущем порвется, ответ будет усечен. Хотя бы напишите важные вещи из той ссылки, которые подведут итоги и ответят на вопросы. С уважением! - person IIRed-DeathII; 23.12.2016

2) Эмуляция карты с помощью программного обеспечения определенно должна быть возможна, но не доступна в текущих API-интерфейсах Android. Вам придется копнуть глубже в libnfc-nxp (и, возможно, ниже). Хотя это может быть трудным. Эта функция предлагается на чипах Inside Secure, как показано в их эталонной реализации OpenNFC. Вопрос только в том, требует ли она смены прошивки CLF. Если нет, то вы можете взломать его в образ программного обеспечения.

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

Я считаю, что SEOS основан на ISO14443-4, а не на Mifare. Это означает, что вам понадобится безопасный элемент для его запуска.

1) Не слишком уверен в этом, я предполагаю, что он по-прежнему будет аппаратным (например, зависит от встроенного элемента безопасности, такого как SmartMX от NXP.

Другая альтернатива — начать разработку на безопасном элементе. Самый простой способ — получить несколько тестовых SIM-карт с поддержкой SWP/HCI. Существует бесплатный комплект разработчика под названием IzyNFC, который вы можете использовать для javacard, а также технические документы GSMA и AFSCM для приложений Android.

person takumar    schedule 21.06.2013