切换深色模式
LoRaWAN 数据包解析
入口:首页 → 工具箱 → LoRaWAN 数据包解析。输入框为 PHY Payload (HEX),需要完整无线帧;平台已解密的应用载荷应改用设备 Payload 解析。
先确认数据所在层次
| 拿到的数据 | 是否直接填入 PHY Payload |
|---|---|
| 完整无线帧 HEX | 可以,先确认完整性 |
| 网关日志中的完整帧 Base64 | 优先从平台导出同一帧的原始字节 HEX;二进制转换要保留每一个字节 |
| 已解密应用 Payload | 不可以,它缺少无线帧头等内容 |
| 带时间戳的日志整行 | 先只提取真正的帧字节 |
转换编码不会自动解密。Base64 转 HEX 与使用会话密钥解密是两种操作。编码与校验的 Base64 解码输出 UTF-8 文本,不能拿它与 HEX 文本编码串联处理任意二进制帧。
1. 不填密钥,先看结构
- 粘贴完整 HEX。
- 暂不填写密钥,执行解析。
- 查看消息类型、地址/标识、计数器、端口、长度等可用字段。
- 观察提示是“未校验”“未解密”,还是帧结构错误。
- 确认输入层次正确后,再处理密钥和会话上下文。

可复核的公开示例
输入完整 23 字节:
text
00 08 07 06 05 04 03 02 01 88 77 66 55 44 33 22 11 01 00 C2 19 0A E8先不填 AppKey 解析,应显示 未校验。然后填写 16 字节演示 AppKey 00000000000000000000000000000000 再解析,应得到:
| 字段 | 示例结果 |
|---|---|
| JoinEUI | 0102030405060708 |
| DevEUI | 1122334455667788 |
| DevNonce | 0001 |
| 报文/计算 MIC | C2190AE8 |
| 校验结果 | 校验通过 |
身份和密钥都是公开测试值,不能用于现场设备。该帧在线路中的 EUI 字节序与结果的可读展示顺序不同;配置字段仍按平台展示值填写,不自行倒序。
若页面显示未翻译的标签,记录版本与截图反馈;不能据此判断终端故障,也不要猜测密钥字段用途。
2. 根据需要填写密钥
当前工具提供以下上下文,用于它支持的报文处理路径:
| 字段 | 用途 |
|---|---|
| AppKey | Join Request 的 MIC 校验 |
| NwkSKey | 数据帧 MIC 校验,以及 FPort=0 时的相关数据处理 |
| AppSKey | FPort>0 的应用载荷解密 |
| FCnt MSB | 帧计数器高 16 位,与当前会话匹配 |
密钥按 HEX 填写,必须属于同一设备、同一次会话和相应方向。OTAA 入网后的会话密钥与根 AppKey 不同;重新入网后不要随意沿用旧会话值。
这张表描述当前工具字段,不能推断其覆盖所有 LoRaWAN 版本与所有报文类型。遇到不支持的结构或协议版本时,应使用相应规范/平台工具交叉检查。
3. 正确理解校验和解密状态
| 结果 | 说明 | 不能据此认定 |
|---|---|---|
| 未校验 | 没有执行/无法完成所需 MIC 校验 | 不能等同 MIC 失败 |
| MIC 失败 | 在当前输入和上下文下未通过 | 不一定单独由密钥造成,帧/计数器/方向也需核对 |
| 未解密 | 缺所需密钥或当前路径未解密 | 不代表载荷本身损坏 |
| 解出字节 | 得到了当前上下文的输出 | 不单独证明业务数据有效或校验已通过 |
| 结构解析成功 | 当前输入可拆分 | 不证明网关、服务器或终端已完成业务 |
4. 帧计数器为什么重要
无线数据帧携带的计数器低位不一定足以还原当前完整计数。需要验证/解密时,FCnt MSB 应取自同一会话的真实记录;默认 0 不总是适用。
发生重启、重入网或日志跨会话时,先按平台会话记录区分报文。不要通过随机尝试高位得到看似合理的明文,就认定记录正确。
5. 解析后继续检查业务
取得应用载荷后,记录 FPort,并选择正确设备类型到 Payload 工具解析。还应核对该帧的接收时间、平台接收/拒绝结果和终端实际行为。
| 现象 | 优先检查 |
|---|---|
| 长度/结构报错 | 是否完整 PHY 帧,是否混入日志或仅有应用载荷 |
| 地址/类型明显异常 | 输入编码、帧边界、是否取错记录 |
| MIC 失败 | 原帧完整性、协议版本、方向、会话密钥、完整计数器 |
| 明文业务异常 | AppSKey、会话、FPort、设备解析规则 |
| 缺少对应帧 | 先确认实际无线接收记录,解析器不能生成现场证据 |
截图和反馈中避免展示真实密钥。保留原始帧及必要上下文,通过项目约定渠道交接。