使用 READ BINARY 命令 APDU 从智能卡读取大型二进制文件 (>32k)

Posted

技术标签:

【中文标题】使用 READ BINARY 命令 APDU 从智能卡读取大型二进制文件 (>32k)【英文标题】:Read large binary file (>32k) from smartcard using READ BINARY Command APDU 【发布时间】:2017-02-03 10:28:34 【问题描述】:

我想从大于 32k 的智能卡中读取文件。 我知道 READ BINARY 命令 APDU 在 P1 和 P2 中的偏移量最大为 32767。但是如果我的文件更大怎么办?有什么办法可以读取完整的文件吗? 谢谢!

【问题讨论】:

【参考方案1】:

较新的 ISO 7816 第 4 部分提供了一个奇怪的指令变体(即 INS=0xB1),其中必须在命令数据字段中提供偏移量 DO(标记 0x54)。幸运的是,这个 DO 的长度是可变的,因此可以指定非常大的偏移量。然而,奇怪的指令命令仍然具有异国情调,没有严格的规范要求它们,但支持大文件的卡肯定也可能支持这种指令变体。

我知道的唯一后备方法是将 0x7FFF 指定为起始偏移量,并在卡允许的范围内指定尽可能大的(扩展长度)LE,但这对于大得多的文件可能是不够的。

【讨论】:

非常感谢!这对我有帮助。我想我从 2005 年开始的 ISO 修订版不包括 Odd Ins 字节。我想我必须得到2013年的版本。谢谢! @tzippy 欢迎您(就像接受这个答案一样)。实际上,即使没有特别强调,2005 版本已经包含了任何需要的内容,参见。表 42(Read Binary)以及 General 部分 7.2.2。当然,拥有当前版本标准的副本总是一个好主意。

以上是关于使用 READ BINARY 命令 APDU 从智能卡读取大型二进制文件 (>32k)的主要内容,如果未能解决你的问题,请参考以下文章

APDU 命令读取 SLE4432/42 卡

使用 APDU 命令以线性固定结构写入记录

使用 APDU 命令获取卡的一些信息

使用 WINSCRD 传递 APDU 命令

对理解 C-APDU 和 R-APDU 命令的疑问

APDU 命令异步调用