8E 是卡片定的策略,9F34 是实际发生的事。3 个字节:执行了哪种验证、匹配的哪条条件、结果如何。粘贴十六进制,三个一起看。
9F34 固定 3 个字节,每个字节回答一件事。字节 1 是实际执行的验证方式,编码和 CVM List 规则里的方法字节完全一样——b6–b1 是方式,b7 还是那个「失败了要不要接着试下一条」的标志。字节 2 是这条规则当时适用的条件。字节 3 是结果:00 未知、01 失败、02 成功。
正因为前两个字节是从命中的那条规则原样抄过来的,9F34 实际上告诉你终端最后落在了 CVM List 的哪一条。这就是两个标签必须一起读的原因:8E 是策略,9F34 是被执行的那一行。
拿 9F34 的前两个字节,去 tag 8E 里找那条一样的 2 字节规则。如果落在第三条,说明前两条被跳过了——要么条件不满足,要么终端不支持那种方式。「为什么让签名不让输 PIN」的答案就在这里,可以用 CVM List 解析逐条走一遍。
同一件事的概要会落在 TVR 字节 3,用 TVR 解析看。TVR 说验证环节出过问题,9F34 说是哪种方式、什么结果。TVR 的持卡人验证位置了位、9F34 结果却是 02,值得多看一眼:说明走到最终那条之前,中间有过失败。
410302——卡片校验明文 PIN,终端支持该方式,成功。那个 40 位表示:PIN 万一没过,这条规则允许继续试下一种方式。
020001——联机密文 PIN,总是适用,失败。如果这笔交易最后还是批了,那就是发卡行在 PIN 失败的情况下仍然批准——按你自己的规则该不该,值得查。
1F0002——无需验证,总是适用,成功:小额免密路径。没让持卡人做任何事,这是预期结果,不是漏洞。
3F0000——未执行任何验证,结果未知。非接和还没走到验证就被拒的交易里很常见。