拿到原始十六进制数据后,我们首先确认这是基于 802.11 管理帧(Beacon)承载 OpenDroneID 协议数据的典型场景。该帧总长 151 字节,完整符合 IEEE 802.11-2020 规范,通过供应商特定信息元素(VSIE)嵌入无人机标识、位置及操作者信息。
帧头部解析(0-35 字节)
这部分是标准的 802.11 帧头,共 36 字节。重点关注源地址与 BSSID 的一致性,这直接表明了基础设施模式下的发送特征。
| 偏移 | 长度 | 字段 | 值 | 说明 |
|---|---|---|---|---|
| 0-1 | 2 | 帧控制 | 80 00 | 管理帧,子类型 Beacon |
| 4-9 | 6 | 目的地址 | FF FF FF FF FF FF | 广播地址 |
| 10-15 | 6 | 源地址 | 60 60 1F B0 13 D0 | 发送设备 MAC |
| 16-21 | 6 | BSSID | 60 60 1F B0 13 D0 | 与源地址一致,确认为 AP 发送 |
| 32-33 | 2 | 信标间隔 | A0 00 | 小端序换算为 160 个 TU(约 0.16 秒) |
| 34-35 | 2 | 能力信息 | 20 04 | 支持 ESS 及隐私保护 |
信息元素(IE)解析(36-146 字节)
帧头之后紧跟 IE 字段,遵循'类型 + 长度 + 数据'的结构。这里包含 SSID 和核心的 OpenDroneID 载荷。
1. SSID 信息元素
位于 36-61 字节,其中 52 49 44... 解码为 ASCII 字符串 RID-1581F5YHX239H002450A。这不仅是网络名称,更是远程标识关联 ID,与后续 Basic ID 中的序列号前缀保持一致。
2. OpenDroneID 供应商特定 IE
从第 62 字节开始,类型为 DD,OUI 为 FA 0B BC(ASD-STAN),App Code 为 0D。真正的 OpenDroneID 消息包从第 68 字节起算,共 79 字节。
OpenDroneID 消息包详解(68-146 字节)
消息包头部定义了版本与子消息数量,随后依次展开三个核心子消息:Basic ID、Location/Vector 和 System。
Basic ID 消息(72-96 字节)
这是无人机的身份名片。高 4 位指示消息类型为 Basic ID,低 4 位为协议版本 1.1。关键数据在于 74-93 字节的 20 字节序列号,ASCII 解码后为 1581F5YHX239H002450A,与 SSID 部分完全对应。剩余保留字段填充为 0。
Location/Vector 消息(97-121 字节)
此段包含飞行状态与坐标。注意状态字 16 表明无人机处于地面状态(On Ground)。经纬度采用小端序重组并除以 1e7 得到标准度数,例如纬度 31.123073°。高度计算需注意公式 (值×0.5)-1000,此处气压高度显示为 55 米,而 AGL 高度为 0 米,印证了地面静止的判断。
System 消息(122-146 字节)
最后一段提供系统级信息。操作者坐标同样以经纬度形式呈现,且标记为动态位置。系统时间戳基于 2019-01-01 的 Epoch 计算,结合分类字段可辅助判断无人机类型。
帧尾部处理
帧尾部的填充位用于满足最小帧长要求,确保无线传输稳定性。最后的 FCS(帧校验序列)负责验证数据完整性,防止传输错误。整个解析过程无需依赖额外工具,通过基础十六进制转换即可还原无人机遥测数据。

