[英]ISO 14443 Type A Card Read/Write using Android
我正在尝试编写一个Android应用程序来读取/写入支持ISO 14443 A类标准的NFC卡。 经过彻底的搜索后,似乎现在唯一的选择是通过发送APDU命令来使用IsoDep类及其收发方法。 我的卡是支持ISO 14443和ISO 7816标准的SmartCafe双接口卡。
然后我说要寻找14443标准的APDU。 我发现这个页面有很好的资源。 但问题是缺少任何示例APDU。
在stackoverflow中有几个问题和答案与APDU(例如这个 ),我试过没有运气。
强力尝试通过选择命令显示以下结果: 6F108408A000000003000000A5049F6501FF9000 ,它看起来像卡的文件控制信息。 但我正在努力解释这些信息。
我也在努力解决使用该卡的问题。 到目前为止,我已经明白:
该卡是新的,可能没有除文件控制信息之外的任何其他文件或信息。 那么哪个PDU可用于在特定位置创建文件,哪个PDU可用于从该文件中读取?
您正在使用的卡(SmartCafe双接口)是一个JavaCard。
您尝试的SELECT命令必须是这样的:
00 A4 04 00 00
要么
00 A4 04 00 08 A000000003000000 00
您在响应SELECT命令时看到的是GlobalPlatform卡管理器的FCI:
6F 10 84 08 A000000003000000 A5 04 9F65 01 FF 9000
对于这种类型的卡,默认情况下文件的概念并不存在(因此只选择一个文件并读取/写入它通常不起作用)。 相反,此卡包含可以使用APDU命令进行交互的基于Java的应用程序。
因此,与应用程序交互的典型流程是:
基于其AID(应用程序标识符)选择应用程序。 就ISO 7816-4而言,可以将AID视为DF名称,并为该特定DF名称发出SELECT命令。
将任意APDU(根据ISO 7816-4,采用行业间或专有编码)发送到所选应用程序。
基于Java(实际上基于JavaCard,JavaCard是Java语言的扩展子集)应用程序接收命令,解码并处理它并生成响应。
卡将应用程序的响应发送回阅读器。
现在有几种可能性:
该卡是针对特定目的进行预先安装的,您没有钥匙可以访问卡管理器。
在这种情况下,您需要知道如何连接卡上的应用程序。 理想情况下,应用程序文档会显示您需要选择的AID以及您可以发送的命令。
该卡是为特定目的预编程的,但您确实有钥匙可以访问卡管理器 - 当然,您不想使用预编程的应用程序但想要使用您自己的应用程序(否则相同)如1.适用)。
在这种情况下,您可以创建自己的JavaCard应用程序(或使用一些适合您目的的现成应用程序)并将其安装到卡上(例如使用像GPShell这样的开放工具)。 然后,您可以使用自己定义的界面访问该卡。
该卡没有预先编程为特定目的和你有访问卡管理的关键。
在这种情况下,您唯一的选择是创建自己的应用程序,如2所示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.