【发布时间】:2015-12-08 00:08:08
【问题描述】:
我有一张城市交通的交通卡。我需要知道卡的辅助(应用程序标识符)号码是什么。根据 EMV Book 1,我必须使用 AID 列表方法(第 141 页)。但是怎么做呢?
我还有一个 ACR122U 读卡器。我可以向卡发送 APDU 命令。我需要的只是卡的 AID。此外,我总是得到 SW=6A82 错误。这意味着“未找到文件”。我想,我需要知道真实的 AID 号码才能解决这个问题。我想看到 SW=9000(成功)响应...
编辑:创建选择 apdu 命令的代码
private static final byte[] CLA_INS_P1_P2 = { 0x00, (byte)0xA4, 0x04, 0x00 };
private static final byte[] AID_ANDROID = { (byte)0xF0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 };
private byte[] createSelectAidApdu(byte[] aid) {
byte[] result = new byte[6 + aid.length];
System.arraycopy(CLA_INS_P1_P2, 0, result, 0, CLA_INS_P1_P2.length);
result[4] = (byte)aid.length;
System.arraycopy(aid, 0, result, 5, aid.length);
result[result.length - 1] = 0;
return result;
}
谢谢..
【问题讨论】:
-
@caylan 由于这是专有卡,卡的结构可以是任何东西,取决于结构的定义方式。 EMV 是一个很好用的标准,这就是为什么在 EMV 书籍中定义和编写结构的原因。要读取/访问您的卡,您应该尝试获取您正在使用的卡的规格。希望你在那里得到你的文件结构。
-
@Arjun 如何获取我正在使用的卡的规格?顺便说一下,卡类型是 ISODEP。我可以从 Android 应用程序(NFC 阅读器)读取卡数据。我想从ACR122U终端读取卡数据。