我是否必须知道卡的 AID 是什么才能使用 Android HCE 进行卡仿真?
Do I have to know what the AID of a card is for card emulation with Android 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).
那么,重点是什么?
P.S。我不认为我的卡的AID是众所周知的。就算是,我怎么知道是什么?
在实施 HCE 之前最好先了解一下您的原生卡应用程序。至少读取卡的ATR/ATS了解芯片制造,作为第二步嗅探卡和终端之间的通信流程以供下一步分析。 Google/Search你的卡解。
在 Android 设备上注册您的应用程序 AID 的原因 - 将 Card AID 映射到您的 HCE 应用程序。
"NFC TagInfo by NXP" - Android应用程序,适合快速NFC分析。
来自ATR/ATS的卡片类型描述你可以尝试从ludovic rousseau smartcard list解析。
EFTlab AIDs collection 中列出的一些 AID(主要是支付卡)。
对您的实施来说最重要的是您的交通卡EMV/NFC背后的通信流程和算法。
我是否必须知道卡的 AID 是什么才能使用 Android HCE 进行卡仿真?
是的,绝对是! AID 是您的应用程序的名称。 reader 将询问卡片(模拟或非模拟)是否包含具有特定名称的应用程序,并且只会与包含 reader 支持的应用程序的卡片通信。
如何找到某个卡上的应用程序的AID(或多个AID)?
最明显的方法:询问系统所有者或制造商。如果他们不告诉您,您很可能无论如何都不应该摆弄模拟卡。
当然,还有其他方法可以了解卡片的工作原理。许多卡遵循一些标准。例如,支付卡通常执行 EMV 协议。对于交通卡也有几个标准,例如VDV-KA、ITSO 等。您可以尝试通过指纹识别卡是否使用某些 standard/well-known 应用程序(例如分析卡以找出卡类型、芯片类型、芯片制造商等) .) 并通过暴力扫描(例如尝试 select 知名应用程序 AID,尝试枚举卡上的文件等)您应该能够找到一些可以帮助您的免费工具有了这个。
对 AID 的了解足以模拟(例如使用 HCE)某张卡
不,当然不是。
首先,您还需要了解并实施 reader 与应用程序通信的协议。虽然许多智能卡应用程序使用常见的 command/response 结构(参见 ISO/IEC 7816-4 行业间命令),但每个应用程序通常都以自己的方式使用它们。如果应用程序遵循某些标准,您可以简单地实现该标准。如果应用程序使用某些专有协议,您将返回询问系统 owner/manufacturer 或进行大量的反复试验。
其次,即使是 AID 和协议通常也不足以复制和模拟特定的卡。智能卡通常被设计为存储一些秘密以通常识别和验证卡。这些秘密通常无法从卡中提取。因此,您不能简单地将秘密数据传输到您的 HCE 应用程序中。
Visa、万事达卡和其他知名公司的 AID 已注册。您可以在下面的维基百科中找到 AIDs link
https://en.wikipedia.org/wiki/EMV
以上签证的AIDs link
签证 - A0000000031010、A0000000032010、A0000000032020、A0000000038010
我只想使用 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).
那么,重点是什么?
P.S。我不认为我的卡的AID是众所周知的。就算是,我怎么知道是什么?
在实施 HCE 之前最好先了解一下您的原生卡应用程序。至少读取卡的ATR/ATS了解芯片制造,作为第二步嗅探卡和终端之间的通信流程以供下一步分析。 Google/Search你的卡解。
在 Android 设备上注册您的应用程序 AID 的原因 - 将 Card AID 映射到您的 HCE 应用程序。
"NFC TagInfo by NXP" - Android应用程序,适合快速NFC分析。
来自ATR/ATS的卡片类型描述你可以尝试从ludovic rousseau smartcard list解析。
EFTlab AIDs collection 中列出的一些 AID(主要是支付卡)。
对您的实施来说最重要的是您的交通卡EMV/NFC背后的通信流程和算法。
我是否必须知道卡的 AID 是什么才能使用 Android HCE 进行卡仿真?
是的,绝对是! AID 是您的应用程序的名称。 reader 将询问卡片(模拟或非模拟)是否包含具有特定名称的应用程序,并且只会与包含 reader 支持的应用程序的卡片通信。
如何找到某个卡上的应用程序的AID(或多个AID)?
最明显的方法:询问系统所有者或制造商。如果他们不告诉您,您很可能无论如何都不应该摆弄模拟卡。
当然,还有其他方法可以了解卡片的工作原理。许多卡遵循一些标准。例如,支付卡通常执行 EMV 协议。对于交通卡也有几个标准,例如VDV-KA、ITSO 等。您可以尝试通过指纹识别卡是否使用某些 standard/well-known 应用程序(例如分析卡以找出卡类型、芯片类型、芯片制造商等) .) 并通过暴力扫描(例如尝试 select 知名应用程序 AID,尝试枚举卡上的文件等)您应该能够找到一些可以帮助您的免费工具有了这个。
对 AID 的了解足以模拟(例如使用 HCE)某张卡
不,当然不是。
首先,您还需要了解并实施 reader 与应用程序通信的协议。虽然许多智能卡应用程序使用常见的 command/response 结构(参见 ISO/IEC 7816-4 行业间命令),但每个应用程序通常都以自己的方式使用它们。如果应用程序遵循某些标准,您可以简单地实现该标准。如果应用程序使用某些专有协议,您将返回询问系统 owner/manufacturer 或进行大量的反复试验。
其次,即使是 AID 和协议通常也不足以复制和模拟特定的卡。智能卡通常被设计为存储一些秘密以通常识别和验证卡。这些秘密通常无法从卡中提取。因此,您不能简单地将秘密数据传输到您的 HCE 应用程序中。
Visa、万事达卡和其他知名公司的 AID 已注册。您可以在下面的维基百科中找到 AIDs link
https://en.wikipedia.org/wiki/EMV
以上签证的AIDs link
签证 - A0000000031010、A0000000032010、A0000000032020、A0000000038010