我只想使用HCE模拟带有Android应用程序的公交卡。我对卡的AID感到困惑。我是否必须知道该卡的AID是什么?
根据基于主机的卡片仿真文件:
如果您要为现有的NFC阅读器基础设施模拟卡片, 那些读者正在寻找的AID通常是众所周知的 并公开注册(例如,支付网络的AID) 例如Visa和MasterCard。)
那么,有什么意义呢?
P.S。我不认为我的卡的AID是众所周知的。即使是这样,我怎么知道它是什么?
答案 0 :(得分:2)
是的,绝对是! AID是您的应用程序的名称。如果卡片包含具有特定名称的应用程序,并且只与包含该阅读器支持的应用程序的卡片进行通信,读卡器将询问(模拟或不模拟)卡片。
最明显的方式:询问系统所有者或制造商。如果他们没有告诉你,你很可能不应该在模仿卡片时摆弄。
当然,还有其他方法可以了解卡的工作原理。许多卡片遵循一些标准。例如,支付卡通常实施EMV协议。对于运输卡,还有几个标准,例如VDV-KA,ITSO等。您可以尝试通过一些指纹来查明该卡是否使用某些标准/众所周知的应用程序(例如,分析卡片以找出卡片类型,芯片类型,芯片制造商等。)并通过执行暴力扫描(例如尝试选择众所周知的应用程序AID,尝试枚举卡上的文件等)。您应该能够找到一些可以帮助您解决此问题的免费工具。 / p>
不,当然不是。
首先,您还需要了解并实现读者与应用程序对话的协议。虽然许多智能卡应用程序使用通用命令/响应结构(参见ISO / IEC 7816-4行业间命令),但每个应用程序通常以稍微自己的方式使用它们。如果应用程序遵循某些标准,则可以简单地实现该标准。如果应用程序使用某些专有协议,那么您将重新询问系统所有者/制造商或者是否经过严重的反复试验。
其次,即使AID和协议通常也不足以复制和模拟特定的卡。智能卡通常设计用于存储一些秘密,以便巧妙地识别和验证卡。通常无法从卡中提取这些秘密。因此,您不能简单地将该秘密数据传输到您的HCE应用程序中。
答案 1 :(得分:1)
在实施HCE之前,最好先了解您的本地卡应用程序。至少读取卡的ATR / ATS以了解芯片制造,并且第二步嗅探卡和终端之间的通信流以进行下一次分析。 Google /搜索您的卡解决方案。
在Android设备上注册您的应用程序AID的原因 - 将Card AID映射到您的HCE应用程序。
"恩智浦的NFC TagInfo" - Android应用程序,适用于快速NFC分析。
ATR / ATS的卡片类型说明,您可以尝试从ludovic rousseau smartcard list解决。
EFTlab AIDs集合中列出了一些AID(主要是支付卡)。
对您的实施而言,最重要的是您的公交卡EMV / NFC通信流程和算法背后。
答案 2 :(得分:0)
AID。您可以在下面的维基百科链接中找到AID
https://en.wikipedia.org/wiki/EMV
上面链接中的签证帮助
签证-A0000000031010,A0000000032010,A0000000032020,A0000000038010