首页 文章

如何在Android中阅读智能卡ATR?

提问于
浏览
1

我有一个1443 B型卡,我可以通过发送SELECT命令读取ATR,文件ID为0x2F01,然后发送READBINARY命令

00 B0 00 00 00
这是回应:
4301F84703F741E07F6608020205F0020205F09000

但为什么命令 00 B0 81 00 00 不起作用?根据ISO / IEC 7816-4,该命令用于读取具有5位P1xP2的EF作为文件短ID(00001),并且Le = 0x00指定需要读取文件的所有字节 . 我错过了什么吗?如何读取短ID的文件?

关于返回的ATR,它在SC17_N5781_ISO_IEC_FDIS_7816-62_Identification中定义 . 它表明:

标签43 - >卡服务数据
长度01 - > 1个字节
值F8 - >参见ISO / IEC 7816-4 12.1.1.5

标签47 - >卡片功能
长度03 - > 3个字节
值F7 41 E0 - >参见ISO / IEC 7816-4 12.1.1.9

标签7F66 - >扩展长度APDU
长度08 - > 8个字节
值 - >参见ISO / IEC 7816-4 12.7.1
标签02
长度02
Value 05 F0
标签02
长度02
Value 05 F0
但我找不到上面提到的第12节7816-4 . 因此,我无法澄清返回的ATR中值的定义,尽管我现在可以成功读取ATR . 这个标准是否已发布?

1 回答

  • 1

    如果您有ISO / IEC 14443 A型卡,那么ATS将包含以其他方式存储在ATR中的大部分信息 . 在这种情况下,不太可能为卡定义EF.ATR - 此文件的可用性不是强制性的 .

    由于缺少ATS,因此EF / ATR更有可能出现在ISO / IEC 14443 B型卡上 .

    如果存在EF.ATR,则可以使用SELECT by File ID(2F01)选择它 . 当您在问题中尝试使用READ BINARY命令时,此文件可能具有短文件标识符0_0001(5位二进制),但建议尝试使用完整文件ID以确保 . 然后,如果无法读取文件,则只需使用READ BINARY或GET DATA读出文件 .

相关问题