3 回答
TA贡献2016条经验 获得超9个赞
使用Android 4.4中基于主机的卡仿真(HCE),您只能仿真ISO / IEC 14443-4协议。更具体地说,您只能根据ISO / IEC 7816-4模拟应用程序结构(因此,需要通过AID选择卡模拟应用程序)。而且,API没有提供任何手段来指定是否应使用A型或B型协议进行卡仿真。
因此,关于各种MIFARE协议的仿真:
MIFARE Ultralight(及其派生)协议在ISO / IEC 14443-3之上运行。无法使用Android HCE使用此类低层协议模拟卡。
MIFARE Classic协议部分在ISO / IEC 14443-3(具有某些不同的框架)上运行。因此,也无法使用Android HCE模拟MIFARE Classic。
MIFARE DESFire协议在ISO / IEC 14443-4之上运行。DESFire协议有三种变体:
一些阅读器可能在较低的协议层中需要某些参数值(例如特定的UID级联级别,特定的ATQA值,特定的SAK值或特定的ATS)。Android HCE没有任何方法来设置这些值。请参阅在Android中编辑主机卡仿真的功能,以了解在某些已植根设备上修改这些值的可能方法,以及我对使用固定卡ID的基于主机的卡仿真的答案,以了解在自定义ROM中以编程方式更改这些值的策略。
本机协议:由于此协议未根据ISO / IEC 7816-4使用APDU,因此无法使用Android HCE对其进行仿真。
包装的本机协议:此协议使用符合ISO / IEC 7816-4的APDU,但是,在以包装的本机命令模式开始与卡进行通信时,读取器通常不会使用DESFire AID发出SELECT命令。(注意:较新的阅读器实现更可能发出与Android HCE兼容的SELECT命令,因为某些带有DESFire协议仿真的NXP较新的智能卡产品也需要此命令。)
ISO协议:该协议基于ISO / IEC 7816-4,并通过AID使用应用程序选择。因此,有可能使用Android HCE模拟此协议。
关于从9.1版到10.2版的 CyanogenMod中可用的HCE功能的注释:它将模仿任何基于ISO / IEC 14443-4的协议,而无需根据ISO / IEC 7816-4的应用程序结构。您甚至可以选择是否要模拟A型或B型协议。因此,应该有可能(尽管我尚未测试过)模拟这三种DESFire协议中的任何一种。但是,即使具有CyanogenMod的HCE功能,也无法仿真MIFARE Ultralight或Classic协议。此外,也不可能影响低级协议参数,例如UID,ATQA,SAK或ATS。
TA贡献2039条经验 获得超7个赞
一年前,我花了数周时间研究此主题,根据当前的实现,我的结论是:可以对MIFARE Classic进行仿真,但是只有通过Embedded Secure Element,此元素才能嵌入NXP的NFC芯片(内置PN65芯片)中。例如三星I9300)。
我已经能够使用android_external_libnfc-nxp库中的隐藏函数完全模拟Mifare Classic卡。尽管我只能读取卡,并且要使它有用,但在大多数情况下,您需要访问安全元素,该位置存在NXP的applet,但此applet服务器用作管理仿真卡的前端。
继续进行搜索的一个好方法是对Google的钱包应用程序进行反向工程。
- 3 回答
- 0 关注
- 907 浏览
添加回答
举报