在请求EMV卡的GPO命令时出现Parser错误

Sar*_* Cd 2 apdu emv nfc smartcard-reader contactless-smartcard

我对VISA卡的GET PROCESSING OPTIONS(GPO)命令有一些问题.

以下是我对VISA应用程序的SELECT命令的响应:

6F408407A0000000031010A535500A564953412044454249549F380C9F66049F02069F37049F1A025F2D02656EBF0C1242034761735F550255539F5A0511084008409000
Run Code Online (Sandbox Code Playgroud)

我从中提取了以下PDOL: 9F66049F02069F37049F1A02

我不确定标签9F66.

我的GPO命令如下所示:

80a800000100000001000000001000823DDE7A12400
Run Code Online (Sandbox Code Playgroud)

但我得到一个解析器错误作为响应:

6A80
Run Code Online (Sandbox Code Playgroud)

Mic*_*and 10

您的GPO命令似乎有很多问题:

80 A8 0000 01       00000001 000000001000 823DDE7A 1240 0
           ^^ ^^^^^ ^^^^^^^^                       ^^^^ ^^
           4. 1.      2.                             3.   5.
Run Code Online (Sandbox Code Playgroud)
  1. 首先,您的GPO命令发送几个没有上下文的数据字节.您需要将数据项包装到PDOL相关的数据对象中:

    83 10 wwwwwwww xxxxxxxxxxxx yyyyyyyy zzzz
    
    Run Code Online (Sandbox Code Playgroud)
  2. 您的终端事务限定符(9F66)已设置RFU位.有效TTQ看起来是这样的:B620C000

    • B6:
      • 支持Mag-stripe模式@bit 8
      • EMV模式支持@bit 6
      • 支持EMV接触芯片@bit 5
      • 在线模式支持@bit 4
      • @bit 3支持在线PIN码
      • 签名支持@bit 2
      • 其他位= RFU
    • 20:
      • 不需要在线密码@bit 8
      • 没有CMV要求@bit 7
      • (联系芯片)离线PIN支持@bit 6
      • 其他位= RFU
    • C0:
      • 发行人更新处理支持@Bit 8
      • 消费者设备CVM支持@Bit 7
      • 其他位= RFU
    • 00:RFU
  3. 您的终端国家/地区代码无效.终端国家代码必须是BCD编码为两个字节的3位数字值.假设您想使用"124"(Cananda),正确的国家代码将是0124(奥地利:0040,英国:0826,美国:) 0840.

  4. Lc字节(设置为01=一个数据字节)不反映实际数据长度.在您的情况下,实际数据长度将是16个字节,因此Lc应设置为10.考虑到您还需要包含PDOL相关数据对象的标记和长度,您的Lc字节应设置为12(18字节).

  5. 您作为GPO命令显示的十六进制字符串未与字节对齐,因此您缺少Le字段的一个半字节.你乐场应该设置为Le.

所以你的GPO命令看起来像这样:

80 A8 0000 12 83 10 B620C000 000000001000 823DDE7A 0124 00
Run Code Online (Sandbox Code Playgroud)