如何检查智能卡上是否有applet

时间:2013-10-25 13:12:43

标签: java smartcard javacard

我有智能卡,有什么方法可以找出安装在它上面的东西吗?可能上面有applet,但我不能用APDU命令选择它。

1 个答案:

答案 0 :(得分:2)

你在谈论小程序,所以我在这个答案中假设你正在与Java卡交谈。 Java Card本身没有指定任何类型的发现方法。

全局平台规范确实包含检索此类数据的方法。要检索卡上的小程序,您需要发送GET STATUS APDU(免费提供的GP 2.2.1规范的第11.4段)。几乎所有Java Card实现都实现了Global Platform。请注意,您需要先向Global Platform卡管理器进行身份验证,然后才能发出这些命令。为此,显然,您需要一个有效的身份验证密钥集。

找出applet上 selectable 的另一个技巧是向卡发出多个SELECT by NAME命令。您可以将此限制为要测试的一组AID。一个小技巧是只使用AID的前5个字节,称为RID。注册的RID都以A000000000开头,然后按顺序递增。

找到小程序后,您可以通过向(公司特定的)RID添加字节来找出它是常规AID - 只需测试所有256个值。您可能希望自动执行此操作...许多实现在选择后也会返回完整的AID;但这是applet特定的(SELECT by Name是响应是由Applet process方法生成的。)