获取处理选项响应

iMa*_*ari 3 apdu smartcard emv

我试图了解如何为智能卡创建CDOL1,并且applet开发人员不太乐于助人.当我向卡发送GET PROCESSING OPTIONS命令时,我收到以下回复:

80 0E 7D 00 40 01 01 00 48 01 03 01 50 01 03 00 90 00
Run Code Online (Sandbox Code Playgroud)

我一直试图了解7D模板是什么以及我应该如何构建CDOL,但迄今为止一无所获.我希望有更多经验的人可以帮助我.

iso*_*ort 11

获得处理选项

根据" EMV Book 3 - 应用程序规范 ",标签0x80格式1GET PROCESSING OPTIONS的回复包含:

  • x82:应用程序交换配置文件(AIP),
  • x94:应用程序文件定位器(AFL).

请记住,Tag 0x80格式对于不同的APDU命令是不同的.

您的APDU数据回复与EMV TLV标签0x80格式1数据包含(2字节)AIPAFL与3记录(每个4字节,总共12字节):

TLVs:  # EMV, Tag + Length + Value (TLV) series
- x80:  # EMV, Template, Response Message Format 1
   tag: "80"
   len: "0E" #   // 14
   val: "7D00400101004801030150010300" # Template, Response Message Format 1.
   - AIP:  # Application Interchange Profile, Tag 0x82
       B01: "7D"
           # _1______ - bit 7, SDA supported
           # __1_____ - bit 6, DDA supported
           # ___1____ - bit 5, Cardholder verification is supported
           # ____1___ - bit 4, Terminal Risk Management is to be performed
           # _____1__ - bit 3, Issuer Authentication is supported
           # _______1 - bit 1, Combined DDA/AC Generation is supported
       B02: "00" # RFU
   - AFL:  # Application File Locator, Tag 0x94
    - S1:  # AFL Record
       B01: "40" # SFI [xxxxx___]  // 8
       B02: "01" # From record  // 1
       B03: "01" # To record  // 1
       B04: "00" # First hashed
    - S2:  # AFL Record
       B01: "48" # SFI [xxxxx___]  // 9
       B02: "01" # From record  // 1
       B03: "03" # To record  // 3
       B04: "01" # First hashed  // 1
    - S3:  # AFL Record
       B01: "50" # SFI [xxxxx___]  // 10
       B02: "01" # From record  // 1
       B03: "03" # To record  // 3
       B04: "00" # First hashed
Run Code Online (Sandbox Code Playgroud)

数据对象列表(DOL)

EMV数据对象列表(DOL)的格式在同一个EMV Book 3中定义.在EMV世界中使用了几个DOL标签.样品:

  • x8C:卡风险管理DOL 1(CDOL1),
  • x8D:卡风险管理DOL 2(CDOL2),
  • x97:交易证书DOL(TDOL),
  • x9F38:处理选项DOL(PDOL),
  • x9F49:动态数据对象列表(DDOL).

所有DOL标签遵循相同的格式规则-标签值包含了系列TAG_ID +长度字节没有价值的部分.

带有CDOL1的示例 - 标记0x8C,长度0x15(21字节)和值解析.

https://iso8583.info/cmd/EMV/TLVs?8C159F02069F03069F1A0295055F2A029A039C019F3704

---
TLVs:#"8C159F02069F03069F1A0295055F2A029A039C019F3704" # EMV, Tag + Length + Value (TLV) series
- x8C:#"8C159F02069F03069F1A0295055F2A029A039C019F3704" # EMV, Card Risk Management DOL 1 (CDOL1)
  - tag: "8C"
  - len: "15" #  // 21
  - val:#"9F02069F03069F1A0295055F2A029A039C019F3704" # Card Risk Management DOL 1 (CDOL1).
    - x9F02:#"9F0206" # EMV, Authorised Amount (Numeric)
      - tag: "9F02"
      - len: "06"
    - x9F03:#"9F0306" # EMV, Amount, Other (Numeric)
      - tag: "9F03"
      - len: "06"
    - x9F1A:#"9F1A02" # EMV, Country Code, Terminal
      - tag: "9F1A"
      - len: "02"
    - x95:#"9505" # EMV, Terminal Verification Results (TVR)
      - tag: "95"
      - len: "05"
    - x5F2A:#"5F2A02" # ISO 7816, Currency Code, Transaction
      - tag: "5F2A"
      - len: "02"
    - x9A:#"9A03" # EMV, Date, Transaction
      - tag: "9A"
      - len: "03"
    - x9C:#"9C01" # EMV, Transaction Type
      - tag: "9C"
      - len: "01"
    - x9F37:#"9F3704" # EMV, Unpredictable Number
      - tag: "9F37"
      - len: "04"
Run Code Online (Sandbox Code Playgroud)

CDOL1标签描述了标签及其长度的列表,其中实际需要包含在第一代应用CRYPTOGRAM(AC) APDU请求数据中.

生成应用程序CRYPTOGRAM(AC)

第一代AC命令的SmartCard APDU请求数据包含CDOL1中提到的一系列.CDOL2用于第二代AC.

以下是响应中生成AC APDU命令和标记0x80格式1模板的示例(与生成AC命令相关).

> 80 AE 80 00 1D 000000001000 000000000000 0442 0000000000 0978 150310 00 11223344
< 80 12 80 0001 0102030405060708 06010A03A40000 9000

AE: # EMV, Generate AC
- rq:  # ISO 7816-3, Case 4
   CLA: "80" # Class byte
   INS: "AE" # Instruction
 - P1P2:  # Parameters 1 and 2
  - P1: "80" # Parameter 1
       # 10______ - bits 8-7, Authorisation Request Cryptogram (ARQC)
    P2: "00" # Parameter 2
 - LcData: 
    len: "1D" # // 29
  - val: "0000000010000000000000000372000000000009781112120000000000"
     x9F02: "000000001000" # EMV, Authorised Amount (Numeric) // 100
     x9F03: "000000000000" # EMV, Amount, Other (Numeric) // 0
     x9F1A: "0442" # EMV, Country Code, Terminal // 442 - Luxembourg
     x95: "0000000000" # EMV, Terminal Verification Results (TVR)
     x5F2A: "0978" # ISO 7816, Currency Code, Transaction // 978 - euro
     x9A: "150310" # EMV, Date, Transaction.  // 2015.03.10
     x9C: "00" # EMV, Transaction Type.  // Purchase / Sale
     x9F37: "11223344" # EMV, Unpredictable Number
- rs:  # Response
 - SW1SW2:  # Status byte 1 and 2
    SW1: "90" # Status byte 1  // Normal processing
    SW2: "00" # Status byte 2
 - DATA:
  - x80: 
     tag: "80"
     len: "12" #   // 18
   - val:  # Template, Response Message Format 1.
    - x9F27:  # EMV, Cryptogram Information Data (CID)
       val: "80" # Cryptogram Information Data (CID).
       # 10______ - bits 8-7, ARQC
       # _____000 - bits 3-1 (Reason/Advice/Referral Code), No information given
     + x9F36: "0001" # EMV, Application Transaction Counter (ATC)
     + x9F26: "0102030405060708" # EMV, Cryptogram, Application
     + x9F10: "06010A03A40000" # EMV, Issuer Application Data (IAD)
Run Code Online (Sandbox Code Playgroud)

有关EMVCo 规范中免费提供的EMV规范的程序和流程的更多详细信息.

使用在线EMV和APDU数据解析器完成解析样本.

  • 标签0x80格式1包含固定结构顺序和固定子字段长度,除了结构列表中的最后一个.对于获取处理选项,固定2个字节,AIP和AFL,长度可变,取决于AFL记录的数量 - 如答案的第1部分所定义.标签0x80的结构根据使用的APDU命令而不同. (3认同)
  • 好答案(+1)。也许您可以通过描述如何从已解析的AFL中读取记录以获取卡数据(尤其是CDOL1标记为“ 8C”)的说明对其进行扩展。 (2认同)