为什么卡拒绝 GPO 命令?

Why is the card refusing the GPO command?

我正在使用 Visa CDET 非接触式测试卡。我已成功选择应用程序,结果如下:

<= 6f 29 84 07 a0 00 00 00 03 10 10 a5 1e 50 0b 56 49 53 41 20 43 52 45 44 49 54 5f 2d 02 65 6e 9f 38 09 9f 66 04 9f 02 06 9f 37 04

结果包括一个 PDOL,它要求提供以下项目:

Terminal Transaction Qualifiers
Length: 4 bytes

Authorised Amount
Length: 6 bytes

Unpredictable Number
Length: 4 bytes

当涉及到 GPO 命令时,我确实拥有所有需要的元素,如下所示:

=> 80 a8 00 00 10 83 0e f3 20 40 00 00 00 00 00 12 00 bc 4b a2 3f 00

但是当我运行这个命令时,我收到了一个67 00错误:错误的Lc长度。可能是什么问题?请记住,在使用同一套件中的 Visa CDET 接触测试卡时,同一程序可以完美运行。

编辑: 关于同样的问题,我有一个测试 reader 用来确认我的读数。 reader 及其程序可以获得 GPO 选项和 return 其他卡的结果,但是当我在自定义中使用完全相同的卡尝试完全相同的命令时,我的程序没有给我任何结果程序。结果为空白,但状态字为 90 00(它们与 returned 数据分开)。这是为什么?

首先假设卡片是正确的:如果数据对象 83 的长度是 0x0F(而不是 0x0E),如果我计算正确,那么 LC 中提供的总长度必须是 0x11 而不是 0x10 (要添加的标签和长度)。这并不能解释为什么接触版可以,但可能调整后仍然可以。

I received a 67 00 error: Wrong Lc length.

好的,这是因为你在 APDU 中没有 Lc=0x00 只需将 0x00 添加到 APDU