使用Android 4.4模拟Mifare卡

我已经研究过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协议的仿真:

> 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协议有三种变体:

>本机协议:由于该协议不使用符合ISO / IEC 7816-4标准的APDU,因此不可能使用Android HCE来模拟它。
>包裹本地协议:该协议使用根据ISO / IEC 7816-4的APDU,但是当开始以包裹的本地命令模式与卡进行通信时,读者通常不会使用DESFire AID发出SELECT命令。 (注意:较新的读卡器实现更有可能发布与Android HCE兼容的SELECT命令,因为某些恩智浦新一代智能卡产品(DESFire协议仿真)也需要这样做)。
> ISO协议:该协议基于ISO / IEC 7816-4,并通过AID进行应用选择。因此,可以使用Android HCE来模拟此协议。

一些读者可能需要较低协议层中的某些参数值(例如特定的UID级联级别,某个ATQA值,某个SAK值或某一ATS)。 Android HCE没有办法设置这些值。有关修改某些有根设备上的值的方法,请参见Editing Functionality of Host Card Emulation in Android,以及my answer to Host-based Card Emulation with Fixed Card ID,以便在自定义ROM中以编程方式更改这些值。

关于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之类的低级协议参数。

翻译自:https://stackoverflow.com/questions/20055497/emulate-mifare-card-with-android-4-4

转载注明原文:使用Android 4.4模拟Mifare卡