CyberChef 解析 TLV(Parse TLV)

更新:2025 年 10 月 分类:数据格式
TLV Parse CyberChef 数据格式 JSON

什么是 TLV?

TLV 即 Type-Length-Value(类型-长度-值),是一种广泛见于电信、智能卡与网络协议中的二进制编码方式。它把数据拆成三块:类型标识、长度、以及实际载荷,结构简单但扩展性好。

Type
Tag
标识数据类型
Length
Size
Value 的字节数
Value
Data
实际内容
核心优势:遇到未知或可选字段时,只要读 Length 即可跳过,不必理解其 Type,利于前后兼容。

为何重要

TLV 常见于芯片卡交易(EMV)、网络报文、配置与物联网通信等。掌握 TLV 有助于分析与排障。

典型场景
EMV
结构段数
3
编码形态
Binary

TLV 各段含义

Type(标签 / Tag)

标识后续数据的语义,常见为 1~2 字节。例如 EMV 中 9F02 常表示「授权金额(Amount, Authorized)」。

Length

指明 Value 的字节数。简单场景用 1 字节表示 0~255;更长载荷可能采用多字节长度编码。解析器据此跳到下一 TLV。

Value

实际数据,可为文本、数值、裸二进制,或嵌套的 TLV。具体含义由 Type 与协议规范决定。

示例:银行卡数据(示意)

9F02 06 000000001000

  • Type: 9F02 = 授权金额
  • Length: 06 = 6 字节
  • Value: 000000001000 = 10.00(货币单位依规范)

在 CyberChef 中使用 Parse TLV

CyberChef 的 Parse TLV 可把 TLV 二进制(常以 hex 表示)解析为可读的 JSON,便于分析报文、卡片数据等。

操作步骤:

  1. 打开 CyberChef,添加 Parse TLV Operation
  2. 输入 TLV 数据(多为十六进制字符串)
  3. 按需配合 From Hex 等 Operation 统一输入格式
  4. 在 Output 查看结构化的 Type-Length-Value 列表
输入注意:TLV 常以连续十六进制表示,请先去掉非法字符或按 CyberChef 要求预处理。
交互式 TLV 解析(简化演示)

在下方输入十六进制 TLV(本页脚本使用单字节 Tag + 单字节 Length 的简化模型,与完整 BER-TLV/EMV 规则可能不同,仅供直观练习):

点击「解析 TLV」查看结果
输入字节数
0
TLV 条数
0
状态
就绪

TLV 结构可视化

理解编码过程有助于手工核对数据。下面可用文本/十六进制生成一条简化 TLV:

组装一条 TLV

指定 Type 与 Value,查看对应的 Length 与完整 hex(演示用):

常见 TLV 标签参考(EMV 示例)

不同体系有不同标签集合。下表为 EMV 支付场景中部分常见标签:

Tag(Hex) 说明 典型长度
9F02 授权金额(Amount, Authorized) 6 字节
9F03 其它金额(Amount, Other) 6 字节
5F2A 交易货币代码 2 字节
82 应用交互特征(AIP) 2 字节
9F26 应用密文(AC) 8 字节
9F37 不可预测数 4 字节
标签标准:EMV 标签由 EMVCo 等规范定义;SNMP、LDAP 等协议另有各自的标签/OID 体系。

实践建议

在 CyberChef 中处理 TLV 时可参考:

常见场景

常见问题

非法十六进制

解析失败时,请确认仅含 0-9、A-F(及允许的空格)。去掉冒号、换行等,除非所用解析器明确支持。

Length 异常

若输出错位,可能是 Length 编码错误或数据被截断,导致 Value 读取长度不对。

输出不完整

输入缺字节时只能得到部分 TLV;应保证每条 TLV 的 Value 长度与 Length 一致且数据完整。

嵌套未展开

部分实现中 Value 整体是嵌套 TLV,需在 CyberChef 中对子串再执行 Parse TLV 或手工分层解析。

小结

Parse TLV 是把结构化二进制转为 JSON 的实用工具,适用于支付、网络与智能卡等场景。请始终校验输入格式、对照标签文档,并将解析结果与业务预期交叉验证。本页内置解析器为教学用简化模型,分析真实 EMV/BER-TLV 请以规范与 CyberChef 正式 Operation 行为为准。

← 返回操作指南