从 CVM 列表中解析 EMV 的 CV 规则
Posted
技术标签:
【中文标题】从 CVM 列表中解析 EMV 的 CV 规则【英文标题】:Parse CV Rule from CVM List for EMV 【发布时间】:2017-10-29 12:18:25 【问题描述】:我已成功从 EMV 卡中检索到 CVM 列表。
0000 0000 0000 0000 4103 4203 1E03 1F02
从 EMV 规范书 3 中,前 4 个字节和后 4 个字节是数量,其余是 CV 规则。使这些成为简历规则4103 4203 1E03 1F02
书中还展示了如何解析CV规则,如下图:
我假设我需要将 CV 规则中的前两个字节转换为二进制并与上表匹配?但是为什么上面的表格有空单元格? 也有人可以用简单的伪代码算法解释一下吗?
【问题讨论】:
获取cvm列表的命令是什么?请帮忙.. 【参考方案1】:您是否在同一本书中提到了10.5.5 CVM 处理逻辑部分?它有详细的信息,甚至可以作为一个流程车。
关于读为 RFU 的空位。
这就是您的样本的解析方式。
41 03 41 => 0100 0001 如果此 CVM 不成功,则应用后续 CV 规则 ICC 执行的明文 PIN 验证 03 如果终端支持云服务器 -------------------------------------------------- - 相似地, 42 03 42 如果此 CVM 不成功,则应用后续 CV 规则 在线验证的加密 PIN 03 如果终端支持云服务器 -------------------------------------------------- -- 1E03 1E 签名(纸质) 03 如果终端支持云服务器 -------------------------------------------------- -- 1F 02 1F 无需 CVM 02 如果不是无人值守现金而不是手动现金而不是购买 有现金返还【讨论】:
是的,我已阅读该部分。我了解流程,现在我需要解析 CV 规则。例如 CV 规则“4103”,我知道“03”=“如果终端支持 CVM”,这在表 40 中明确说明。但是如何从上表中解析“41”? 我已经更新了我原来的答案,现在你应该清楚了【参考方案2】:问:(DO)我需要将 CV 规则中的前两个字节转换为二进制并与上表匹配?
答:在示例标签中你有 0x8E 值:
2个数量,每4个字节长度,共8个字节。 4 个持卡人验证 (CV) 规则组,每个 2 字节,总 CVM 列表长度为 8 字节。在每 2 个字节规则中的位置: 字节 1 是“持卡人验证方法 (CVM) 代码”,它是您请求中的二进制表。示例:HEX 值需要转换为二进制格式。其中 HEX 0x41 == 二进制 b01000001。然后使用 CVM 代码将位与表 39 匹配。 字节 2 是“持卡人验证方法 (CVM) 条件代码”。带有 EMV 规范中描述的表格。问:为什么上面的表格有空单元格?
答:因为在 Tag 值前面有两个 Amounts,每个 4 个字节(8 个 HEX 字符)。然后就是 CVM 规则列表。
问:也有人可以用简单的伪代码算法解释一下吗?
答:见解析CVM List tag 0x8E值的例子。
---
# Cheef's parser.
# Copyright (C) 2008-2017 Alexander Shevelev. https://iso8583.info/
# lib : "/lib/EMV/" - Integrated Circuit Card Specifications for Payment Systems
# tool : "TV"
# stat : 18 nodes, 4 lookup tables, 100.00% passed (4/4)
TV:#"8E0000000000000000410342031E031F02" # EMV, Cardholder Verification Method (CVM) List
- tag: "8E"
- val:#"0000000000000000410342031E031F02" # Cardholder Verification Method (CVM) List.
- AmountX: "00000000" # Amount X
- AmountY: "00000000" # Amount Y
- CVRs:#"34313033343230333145303331463032" # CVM List
- S1:#"4103" # Cardholder Verification Rule
- CVMCode: "41" # Cardholder Verification Method (CVM) Code
# _1______ - Apply succeeding CVR if CVM fails
# __000001 - ICC Plain PIN verification
- CVMCondition: "03" # Cardholder Verification Method (CVM) Condition Code // If terminal supports the CVM
- S2:#"4203" # Cardholder Verification Rule
- CVMCode: "42" # Cardholder Verification Method (CVM) Code
# _1______ - Apply succeeding CVR if CVM fails
# __000010 - Online Enciphered PIN verification
- CVMCondition: "03" # Cardholder Verification Method (CVM) Condition Code // If terminal supports the CVM
- S3:#"1E03" # Cardholder Verification Rule
- CVMCode: "1E" # Cardholder Verification Method (CVM) Code
# _0______ - Fail cardholder verification if CVM is unsuccessful
# __011110 - Signature (paper)
- CVMCondition: "03" # Cardholder Verification Method (CVM) Condition Code // If terminal supports the CVM
- S4:#"1F02" # Cardholder Verification Rule
- CVMCode: "1F" # Cardholder Verification Method (CVM) Code
# _0______ - Fail cardholder verification if CVM is unsuccessful
# __011111 - No CVM required
- CVMCondition: "02" # Cardholder Verification Method (CVM) Condition Code // If not cash or cashback
【讨论】:
以上是关于从 CVM 列表中解析 EMV 的 CV 规则的主要内容,如果未能解决你的问题,请参考以下文章
解析 CVM 列表:在 SFI 中获取 CVM 列表后何时显示引脚焊盘,需要任何命令
Python爬虫编程思想(149):使用Scrapy抓取数据,并通过XPath指定解析规则