TLV 即 Type-Length-Value(类型-长度-值),是一种广泛见于电信、智能卡与网络协议中的二进制编码方式。它把数据拆成三块:类型标识、长度、以及实际载荷,结构简单但扩展性好。
TLV 常见于芯片卡交易(EMV)、网络报文、配置与物联网通信等。掌握 TLV 有助于分析与排障。
标识后续数据的语义,常见为 1~2 字节。例如 EMV 中 9F02 常表示「授权金额(Amount, Authorized)」。
指明 Value 的字节数。简单场景用 1 字节表示 0~255;更长载荷可能采用多字节长度编码。解析器据此跳到下一 TLV。
实际数据,可为文本、数值、裸二进制,或嵌套的 TLV。具体含义由 Type 与协议规范决定。
9F02 06 000000001000
9F02 = 授权金额06 = 6 字节000000001000 = 10.00(货币单位依规范)CyberChef 的 Parse TLV 可把 TLV 二进制(常以 hex 表示)解析为可读的 JSON,便于分析报文、卡片数据等。
理解编码过程有助于手工核对数据。下面可用文本/十六进制生成一条简化 TLV:
不同体系有不同标签集合。下表为 EMV 支付场景中部分常见标签:
| Tag(Hex) | 说明 | 典型长度 |
|---|---|---|
9F02 |
授权金额(Amount, Authorized) | 6 字节 |
9F03 |
其它金额(Amount, Other) | 6 字节 |
5F2A |
交易货币代码 | 2 字节 |
82 |
应用交互特征(AIP) | 2 字节 |
9F26 |
应用密文(AC) | 8 字节 |
9F37 |
不可预测数 | 4 字节 |
在 CyberChef 中处理 TLV 时可参考:
解析失败时,请确认仅含 0-9、A-F(及允许的空格)。去掉冒号、换行等,除非所用解析器明确支持。
若输出错位,可能是 Length 编码错误或数据被截断,导致 Value 读取长度不对。
输入缺字节时只能得到部分 TLV;应保证每条 TLV 的 Value 长度与 Length 一致且数据完整。
部分实现中 Value 整体是嵌套 TLV,需在 CyberChef 中对子串再执行 Parse TLV 或手工分层解析。
Parse TLV 是把结构化二进制转为 JSON 的实用工具,适用于支付、网络与智能卡等场景。请始终校验输入格式、对照标签文档,并将解析结果与业务预期交叉验证。本页内置解析器为教学用简化模型,分析真实 EMV/BER-TLV 请以规范与 CyberChef 正式 Operation 行为为准。