繁体   English   中英

EMV智能卡TLV格式错误?

[英]EMV Smart Card TLV Format Error?

我正在开发一种用于阅读EMV卡的智能卡读卡器。 我正在制作万事达卡,我正在尝试阅读特定记录。 结果显示读数很好,但是当我解析结果时,它们似乎不遵循TLV标准,其中结果以标签/模板 - 长度 - 值格式出现。 返回的结果示例如下:

70 - 读取记录响应标记
81 - 应指明长度
e0 - 应该是标签/模板......?
8f-应表明prev的长度。 标签...?
01 05 9f 32 ... 90 00

我的问题是前几个字节。 第一个字节表示它是READ RECORD模板,但第二个字节应表示长度,第三个字节应该是值,这是下一个标记的开头。 但是没有标记为E0的EMV标签,所以我是错误地翻译结果还是缺少某些东西。 我使用相同的命令读取了以前的记录,结果很好:
70 - 标签
27
61 - 另一个标签/模板指示器等
25 4f 07 ... 90 00
我能做错什么? 或者这些结果如何翻译?

这里的长度以BER格式编码。 这意味着81表示后面有一个长度字节(只有7F的长度可以直接在一个字节中编码),所以E0是长度,8F是标签。 有关详细信息,请参阅 ISO 7816-4(在2005版本中,它是章节5.2.2.2 BER-TLV长度字段)。 最后的90 00是SW1 / SW2表示当然读取成功。

就像guidot所说,TLV中的长度分量并不总是单个字节。 标签也一样。 您可以尝试将您的回复粘贴到http://tvr-decoder.appspot.com/中 在第一个下拉列表中选择TLV数据。

EMV Book 3有一节专门介绍BER-TLV。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM