【问题标题】:How to find AID number of my local transportation card?如何查找我当地交通卡的 AID 号码?
【发布时间】: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终端读取卡数据。

标签: nfc apdu hce emv


【解决方案1】:

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

但是,由于您正在阅读 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 节)。然后您可以在字节84 之后找到DF name。例如,一张卡片响应

    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 3184后面的字节0D表示DF name的长度为0x0D。您可以将其用作 AID。

【讨论】:

  • 感谢您的回复。我试过你的解决方案。我编写了一种枚举方法。它正在工作。但是,我有三个 Select APDU 命令。他们都在工作 (SW=9000) Result[2]: 00A4000002000200 - Succeed Result[16128]: 00A40000023F0000 - Succeed Result[16130]: 00A40000023F0200 - Succeed 我不得不说 Result[2] 是第一次工作(SW=9000)。第一次之后,它给了我 6a82。现在,我有一个问题。我无法使用此命令获得任何数据响应。我想我需要添加参数 1 (0x04)。但添加参数后,它又给了我 6a82。我现在该怎么办?
  • 注意这个选择命令只选择当前DF下的文件。卡复位时,默认选择MF,其标识符为3F00。因此,在您的情况下,文件0002 位于MF 下。当您选择3F02时,您将无法再选择0002
  • 好的,但技术上的下一步是什么?
  • 我只想用安卓应用模拟交通卡。我对卡片的帮助感到困惑。我必须知道卡的帮助是什么?根据基于主机的卡仿真文档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). 但是,我很困惑。有什么意义?
  • @Hilal 据我所知,Mifare Classic 交通卡通常不会被第三方读取,因为密钥通常被认为是机密的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多