我是否必须知道卡的 AID 才能使用 Android HCE 进行卡模拟?

2 android apdu nfc contactless-smartcard hce

我只想使用 HCE 通过 Android 应用程序模拟交通卡。我对卡的AID感到困惑。我必须知道卡的 AID 是什么吗?

根据基于主机的卡模拟文档:

如果您正在模拟现有 NFC 读卡器基础设施的卡,这些读卡器正在寻找的 AID 通常是众所周知的且公开注册的(例如,Visa 和 MasterCard 等支付网络的 AID)。

那么,有什么意义呢?

PS 我不认为我的卡的 AID 是众所周知的。即使是,我怎么知道它是什么?

Mic*_*and 5

我是否必须知道卡的 AID 才能使用 Android HCE 进行卡模拟?

当然是!AID 是您的应用程序的名称。读卡器将询问卡(模拟或非模拟)是否包含具有特定名称的应用程序,并且仅与包含读卡器支持的应用程序的卡进行通信。

如何查找某张卡上应用程序的 AID(或多个 AID)?

最明显的方法:询问系统所有者或制造商。如果他们没有告诉您,您很可能无论如何都不应该摆弄模拟该卡。

当然,还有其他方法可以了解该卡的工作原理。许多卡都遵循一些标准。例如,支付卡通常实施 EMV 协议。对于交通卡,还有多种标准,例如 VDV-KA、ITSO 等。您可以尝试通过指纹识别来查明该卡是否使用某些标准/众所周知的应用程序(例如分析该卡以找出卡类型、芯片类型、芯片制造商等)并通过暴力扫描(例如,尝试选择众所周知的应用程序 AID、尝试枚举卡上的文件等),您应该能够找到一些免费工具可以帮助您解决此问题。

了解 AID 是否足以模拟(例如使用 HCE)某张卡

不,当然不是。

首先,您还需要了解并实现读者与应用程序对话的协议。虽然许多智能卡应用程序使用通用命令/响应结构(参见 ISO/IEC 7816-4 行业间命令),但每个应用程序通常以自己的方式使用它们。如果应用程序遵循某个标准,您可以简单地实现该标准。如果应用程序使用某些专有协议,您将不得不询问系统所有者/制造商或进行大量的试错。

其次,即使是 AID 和协议通常也不足以复制和模拟特定的卡。智能卡通常被设计为存储一些秘密以通常识别和验证卡。这些秘密通常无法从卡中提取。因此,您不能简单地将秘密数据传输到您的 HCE 应用程序中。