解析CVM列表的EMV应用程序交换配置文件

时间:2017-10-23 20:56:29

标签: smartcard apdu emv

我正在尝试从EMV卡中检索CVM列表。我做了以下事情:

  • 选定的AID
  • 获取处理选项

我收到了以下回复

77 0E 82 02 39 00 94 08 18 01 02 01 20 02 03 00 90 00 

我已经在以下网站解析了这个响应,这是解析的信息:

82 Application Interchange Profile 
3900
94 Application File Locator (AFL)
1801020120020300

https://www.emvlab.org/tlvutils/?data=77+0E+82+02+39+00+94+08+18+01+02+01+20+02+03+00+90+00+

现在,成功检索CVM列表的下一步是什么?

2 个答案:

答案 0 :(得分:1)

应用程序文件定位器告知卡上保存数据记录的位置。了解如何使用您收到的AFL进行READ RECORD。其中一个READ RECORD数据将包含CVM List。

阅读EMV第3册,第10.2节“读取应用程序数据”,然后阅读 6.5.11 READ RECORD命令响应APDU

从EMVCo下载图书1-4 here

完成所有这些操作后,如果您仍然无法使用AFL进行阅读,请回到此处。

答案 1 :(得分:0)

必须深入探索应用程序文件定位器。对于使用EMV TLV解析工具的示例:https://iso8583.info/lib/EMV/TLVs

---
# Cheef's parser.
# Copyright (C) 2008-2017 Alexander Shevelev. https://iso8583.info/
# lib   : "/lib/EMV/" - Integrated Circuit Card Specifications for Payment Systems
# tool  : "TLVs"
# stat  : 25 nodes, 0 lookup tables

TLVs:#"770E8202390094081801020120020300" # EMV, Tag + Length + Value (TLV) series
- x77:#"770E8202390094081801020120020300" # EMV, Template, Response Message Format 2
  - tag: "77"
  - len: "0E" #  // 14
  - val:#"8202390094081801020120020300" # Template, Response Message Format 2.
    - x82:#"82023900" # EMV, Application Interchange Profile (AIP)
      - tag: "82"
      - len: "02" #  // 2
      - val:#"3900" # Application Interchange Profile (AIP).
        - B01: "39"
          # __1_____ - bit 6, DDA supported
          # ___1____ - bit 5, Cardholder verification is supported
          # ____1___ - bit 4, Terminal Risk Management is to be performed
          # _______1 - bit 1, CDA supported
        - B02: "00" # RFU
    - x94:#"94081801020120020300" # EMV, Application File Locator (AFL)
      - tag: "94"
      - len: "08" #  // 8
      - val:#"1801020120020300" # Application File Locator (AFL).
        - S1:#"18010201" # AFL Record
          - B01: "18" # SFI [xxxxx___] // 3
          - B02: "01" # From record // 1
          - B03: "02" # To record // 2
          - B04: "01" # First hashed // 1
        - S2:#"20020300" # AFL Record
          - B01: "20" # SFI [xxxxx___] // 4
          - B02: "02" # From record // 2
          - B03: "03" # To record // 3
          - B04: "00" # First hashed

然后您可以根据AFL记录定义阅读记录。 对于样本ISO 7816-4 APDU命令从SFI 3记录01读取记录:

rq:#"00B2011C00" # ISO 7816-3, Case 2
- CLA: "00" # Class.
- INS: "B2" # Instruction. // ISO 7816-4, Read Record
- P1: "01" # Record number or record identifier
- P2:#"1C" # Parameter 2.
  - SFI: "18" # bits 8 to 4, SFI [xxxxx___] // 3
  - ReadRecordNum: "04" # bits 3 to 1, Read Record number from P1 [_____100] // true
- Le: "00" # Length of Expected Data.

问:现在成功检索CVM列表的下一步是什么?

A:从SFI读取EMV记录并解析TLV数据响应。

EMV标签0x8E持卡人验证方法(CVM)列表可以是记录的一部分。