如何查找我当地交通卡的AID号码?

时间:2015-12-08 00:08:09

标签: nfc apdu hce emv

我有一张城市交通卡。我需要知道卡的辅助(应用程序标识符)号是多少。根据EMV第1册,我必须使用AID列表方法(第141页)。但是如何?

我还有一个ACR122U读卡器。我可以向卡发送APDU命令。我只需要卡的AID。另外,我总是得到SW = 6A82错误。这意味着" File Not Found"。我想,我需要知道真正的AID号才能解决这个问题。我想看SW = 9000(成功)回复...

编辑:用于创建select 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;
}

谢谢..

1 个答案:

答案 0 :(得分:3)

通常,您应查找卡片文档,该文档应描述文件的组织方式。

但是,由于您正在阅读ISO-DEP卡,因此您可以参考ISO/IEC CD 7816-4。该卡应该执行本标准中的部分说明。根据5.2节,可以使用其标识符选择文件,这意味着您可以枚举MF中的所有文件。

所以可能的解决方案是:

  1. 按标识符指令发送选择文件为

    00 A4 00 00 02 id 00

    id的范围从0000FFFF

  2. 收到SW=9000后,响应应包含文件控制信息(FCI,请参阅第5.6节)。然后,您可以在字节DF name之后找到84。例如,卡片响应

    6F 15 84 0D 4E 43 2E 65 43 61 72 64 2E 44 46 30 31 A5 04 9F 08 01 02 90 00

    DF name4E 43 2E 65 43 61 72 64 2E 44 46 30 310D后的字节84表示DF name的长度为0x0D。您可以将其用作AID。