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

Read large binary file (>32k) from smartcard using READ BINARY Command APDU

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

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

我知道的唯一退路是将 0x7FFF 指定为起始偏移量,并在卡允许的情况下指定尽可能大的(扩展长度)LE,但这对于大得多的文件可能是不够的。