android - 我是否必须知道卡的 AID 是什么才能使用 Android HCE 进行卡仿真?

标签 android nfc apdu contactless-smartcard hce

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

根据基于主机的卡仿真文档:

If you are emulating cards for an existing NFC reader infrastructure, the AIDs that those readers are looking for are typically well-known and publicly registered (for example, the AIDs of payment networks such as Visa and MasterCard).

那么,有什么意义呢?

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

最佳答案

我必须知道卡的 AID 是什么才能使用 Android HCE 模拟卡吗?

是的,绝对是! AID 是您的应用程序的名称。读卡器将询问卡片(是否仿真)是否包含具有特定名称的应用程序,并且只会与包含读卡器支持的应用程序的卡片通信。

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

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

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

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

不,当然不是。

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

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

关于android - 我是否必须知道卡的 AID 是什么才能使用 Android HCE 进行卡仿真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34196900/

相关文章:

android - 如何安装 NOOK SDK 1.2 Android 附加组件

android - 带有 ItemizedOverlay 和 map 滚动的 MapView

android - 为什么我在注册 Facebook 应用程序时会得到不同的 key 哈希值?

android - HCE 是否支持 ISO/IEC 14443-3 B 类?

smartcard - 获取处理选项响应

java - Android登录界面-内容已被消费

android - 如何将联系人(vcard 格式)写入 NdefMessage?

android - 如何通过 NFC 打开应用程序并在同一操作中传递嵌入数据?

c++ - 在 C++ 中测量 APDU 命令到 Java Card 的时间的最佳方法

apdu - 建议 EMV 卡需要回应吗?