我研究过Mifare和其他卡片仿真,我对编程非常了解(不是Android,而是C / C ++)。我有proxmark,我已经为proxmark制作了多个仿真代码,所以我知道这些卡是如何通信的。
我目前不明白,android是否启用全卡仿真。我已经研究了这个约3天了,结论是没有一个恒定的模式。有人说这是可能的,有人说不是。我查看了android API,基于主机的卡仿真似乎能够做到这一点,但据我所知,这是4.4 Kitkat中的新功能,有没有人有这方面的经验?
为了简单起见,目前我正在调查Mifare Ultralight最简单的基本仿真。这张卡是一个安全噩梦,没有加密,只有大约10个功能。所以我有兴趣用这张卡开始研究,因为它是最容易复制的。
那么有没有人对android上的卡片仿真有任何了解。也许不使用股票操作系统。任何值得了解的事情都将非常感激。
谢谢。
使用Android 4.4中基于主机的卡仿真(HCE),您只能模拟ISO / IEC 14443-4协议。更具体地说,您只能根据ISO / IEC 7816-4模拟应用程序结构(因此需要通过AID选择卡仿真应用程序)。此外,API不会为您提供任何方法来指定是否应使用A类或B类协议进行卡仿真。
所以关于各种MIFARE协议的仿真:
关于CyanogenMod版本9.1到版本10.2中可用的HCE功能的说明:这将模拟任何基于ISO / IEC 14443-4的协议,而不需要根据ISO / IEC 7816-4的应用程序结构。您甚至可以选择是否要模拟A类或B类协议。所以应该可以(虽然我没有测试)模拟三种DESFire协议中的任何一种。但是,即使使用CyanogenMod的HCE功能,也无法模拟MIFARE Ultralight或Classic协议。此外,也不可能影响低级协议参数,例如UID,ATQA,SAK或ATS。
我花了几周时间研究这个主题一年前,基于当前实现的结论是:MIFARE Classic的仿真是可能的,但只有通过嵌入式安全元件,这个元素嵌入在NXP的NFC芯片中(内置的PN65芯片)例如三星I9300)。
我已经能够使用android_external_libnfc-nxp库中的隐藏函数完全模拟Mifare Classic卡。虽然我只能读取该卡并且它有用,但您需要访问安全元素,其中大多数情况下NXP的applet存在,此applet服务器作为管理模拟卡的前端。
继续搜索的一个好方法是通过逆向工程Google的钱包应用程序。
MIFARE Ultralight芯片MF0ICU1(每页16页x 4个字节)确实是一场噩梦,但无法在包括PN53x在内的任何NXP接口上进行模拟,因为它们将第一个UID
字节(UID0
)硬连线到0x08
,因此它意味着标签具有随机性UID
(根据恩智浦标准)。您需要UID0 = 0x04
来模仿MIFARE Ultralight。
存在一个standalone MIFARE Ultralight emulator,它允许UID0
的任何值,具有可重置的OTP,锁定和块锁定位。有关详细信息,请参阅手册。
简短的回答是肯定的。然而,取决于许多因素,如Android版本,手机的NFC芯片等。
要知道您的设备是否支持它,只需下载一些应用程序,如Tapkey的“NFC Check”,它将通知您是否支持MiFare Classic和Mifare Ultralight。还有一个最新的列表,但显然可能存在一些不匹配:https://www.shopnfc.com/en/content/7-nfc-compatibility
现在的问题是“如何”。我还没有找到一个应用程序来使用新的基于主机的卡仿真(HCE)用于此目的(见这里):How well does the Android NFC API support Mifare Desfire?
事实上,MiFare最近建议你应该使用“安全元素”方法:https://www.mifare.net/support/forum/topic/emulate-mifare-classic-1k/
回到你的Ultralight问题,主要的困难是Android API定义为今天在每个点击上发送一个随机UID,正如之前的用户nCypher所建议的那样:https://developer.android.com/guide/topics/connectivity/nfc/hce
作为替代根访问(或自定义cyanogen ROM)可能有助于修改UID,例如在此示例中:http://osgt7405i.bkt.clouddn.com/help/en/index.html?t=1536931682474
然而,最新的Android API直接引用了Ultralight对象:https://developer.android.com/reference/android/nfc/tech/MifareUltralight
我知道一些公司正在通过SIM存储模拟这一点。为了将您的手机用作这些MIFARE类型的RFID卡,MiFare已经制定了一个解决方案,业务可以在与运营商SIM相关联的云https://www.mifare4mobile.org/中加载卡。有一个官方认证的NFC芯片列表,其中大多数是NPX,广泛包含在智能手机中。
但是他们的解决方案是SDK API(即TapLinx)。恩智浦没有任何纯软件产品可用,如任何手机仿真软件或云基础解决方案。
更重要的是,MiFare论坛谈到了这个问题:https://www.mifare.net/support/forum/topic/creating-nfc-android-app-to-act-as-mifare-card-to-interact-with-mifare-readers/