我试图了解如何为智能卡创建 CDOL1,而 applet 开发人员并没有提供什么帮助。当我向卡发送 GET PROCESSING OPTIONS 命令时,我收到以下响应:
80 0E 7D 00 40 01 01 00 48 01 03 01 50 01 03 00 90 00
我一直试图了解那个 7D 模板是什么以及我应该如何构建 CDOL,但到目前为止一无所获。我希望有更多经验的人可以帮助我。
根据“ EMV Book 3 - Application Specification ”,GET PROCESSING OPTIONS的Tag 0x80 格式 1回复包含:
请记住,不同的 APDU 命令的标记 0x80 格式是不同的。
您使用 EMV TLV 标签 0x80 格式 1 回复的 APDU 数据包含(2 个字节)与AIP和AFL以及 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
在同一 EMV Book 3 中定义的EMV 数据对象列表 ( DOL ) 的格式。在 EMV 世界中使用了几个DOL标签。样品:
所有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"
CDOL1标记描述了标记列表及其长度,实际值需要包含在第一个生成应用程序加密 (AC) APDU 请求数据中。
第一次生成 AC 命令的智能卡 APDU 请求数据包含CDOL1中提到的一系列值。CDOL2用于第二次生成交流电。
这是响应中 Generate AC APDU Command 和 Tag 0x80 Format 1 模板的示例(与 Generate AC Command 相关)。
> 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)
有关EMV 规范中的程序和流程的更多详细信息,可在EMVCo网站免费获得。
解析样本是使用在线EMV 和 APDU 数据解析器完成的。