80 00 00 00 FF FF FF FF FF FF 60 60 1F B0 13 D0 60 60 1F B0 13 D0 00 00 10 4F F1 1A 00 00 00 00 A0 00 20 04 00 18 52 49 44 2D 31 35 38 31 46 35 59 48 58 32 33 39 48 30 30 32 34 35 30 41 DD 53 FA 0B BC 0D B0 F1 19 03 01 12 31 35 38 31 46 35 59 48 58 32 33 39 48 30 30 32 34 35 30 41 00 00 00 11 16 B5 00 00 AA 10 8D 12 5E 64 77 3D 3E 08 35 08 D0 07 4B 04 DB 01 0A 00 41 09 98 0F 8D 12 A5 64 77 3D 01 00 00 00 00 00 00 01 1A 08 0F 45 BF 0C 00 00 78 56 AD
以上为抓取无人机Remote ID的原始16进制数据(部分位置数据修改)
802.11 Beacon 帧 + OpenDroneID 协议完整解析(151 字节,0-150 索引)
1. 帧类型与整体结构
十六进制数据为802.11 管理帧(Beacon 帧),承载 OpenDroneID 协议数据(“Remote ID”,协议标准名称为 OpenDroneID)。帧结构符合 IEEE 802.11-2020 规范,通过供应商特定信息元素(VSIE,类型 0xDD) 嵌入无人机标识、位置、操作者信息,总长度 151 字节(0-150 索引),无数据缺失。
2. 帧头部解析(0-35 字节,共 36 字节)
| 偏移(字节) | 长度(字节) | 字段 | 十六进制值 | 说明 |
|---|
| 0-1 | 2 | 帧控制字段 | 80 00 | 管理帧(类型 = 0),子类型 = Beacon 帧(0x8000),无加密、无分片,符合信标帧标准。 |
| 2-3 | 2 | 持续时间 | 00 00 | 标准填充值,用于避免帧冲突,无特殊业务含义。 |
| 4-9 | 6 | 目的地址 | FF FF FF FF FF FF | 广播地址,Beacon 帧需向所有设备发送,确保周边接收端能捕获。 |
| 10-15 | 6 | 源地址 | 60 60 1F B0 13 D0 | 发送设备 MAC 地址(推测为无人机的无线模块 MAC,或其关联 AP 的 MAC)。 |
| 16-21 | 6 | BSSID | 60 60 1F B0 13 D0 | 基本服务集标识,与源地址相同→基础设施模式(Beacon 帧由 AP 发送,BSSID=AP MAC,源地址 = AP MAC,非自组织模式)。 |
| 22-23 | 2 | 序列控制 | 00 00 | 帧序列号(0)+ 分片号(0),为初始帧,无分片。 |
| 24-31 | 8 | 时间戳 | 10 4F F1 1A 00 00 00 00 | 设备内部计时戳(单位:微秒),用于同步接收端时钟,无 UTC 映射意义。 |
| 32-33 | 2 | 信标间隔 | A0 00 | 小端序转换为0x00A0=160,单位为 “1024 微秒”,计算为160×1024=163840微秒=0.16384秒)。 |
| 34-35 | 2 | 能力信息 | 20 04 | 二进制00100000 00000100→支持 ESS(基础设施网络)、支持隐私保护(WEP 加密),无其他扩展能力。 |
3. 信息元素(IE)解析(36-146 字节,共 111 字节)
帧头部后为 IE 字段,包含 SSID 和 OpenDroneID 核心数据,IE 结构遵循 “类型(1 字节)+ 长度(1 字节)+ 数据(长度值字节) ” 规范。
3.1 SSID 信息元素(36-61 字节,共 26 字节)
| 偏移(字节) | 长度(字节) | 字段 | 十六进制值 | 说明 |
|---|
| 36 | 1 | IE 类型 | 00 | 标准 IE 类型,标识后续为 SSID 字段。 |
| 37 | 1 | IE 长度 | 18 | 十六进制0x18=24字节,对应 SSID 数据长度(与后续 38-61 字节共 24 字节匹配)。 |
| 38-61 | 24 | SSID | 52 49 44 2D 31 35 38 31 46 35 59 48 58 32 33 39 48 30 30 32 34 35 30 41 | ASCII 转换为RID-1581F5YHX239H002450A,为无人机的 “远程标识关联 ID”,非直接序列号(序列号在 Basic ID 消息中)。 |
3.2 OpenDroneID 供应商特定 IE(62-146 字节,共 85 字节)
| 偏移(字节) | 长度(字节) | 字段 | 十六进制值 | 说明 |
|---|
| 62 | 1 | IE 类型 | DD | 供应商特定 IE(VSIE),标识后续为厂商自定义数据。 |
| 63 | 1 | IE 长度 | 53 | 十六进制0x53=83字节,对应后续数据长度(64-146 字节共 83 字节,62+1+83=146,范围正确)。 |
| 64-66 | 3 | OUI | FA 0B BC | 供应商标识(ASD-STAN,无人机行业标准组织) |
| 67 | 1 | App Code | 0D | OpenDroneID 应用代码(0x0D) |
4. OpenDroneID 消息解析(68-146 字节,共 79 字节)
64-67 字节为 “OUI(3)+App Code(1)” 共 4 字节,68 字节开始为 OpenDroneID 消息包,总长度146-68+1=79字节(与 IE 长度 83-4=79 匹配)。
4.1 消息包头部(68-71 字节,共 4 字节)
| 偏移(字节) | 长度(字节) | 字段 | 十六进制值 | 说明 |
|---|
| 68 | 1 | 消息计数器 | B0 | 递增计数器(0xB0=176),用于接收端去重或排序,无其他业务含义。 |
| 69 | 1 | 消息类型 + 协议版本 | F1 | 高 4 位0xF=15→Message Pack(消息包,含多个子消息);低 4 位0x1→F3411-20 (1.1)(协议版本)。 |
| 70 | 1 | 子消息大小 | 19 | 十六进制0x19=25字节,单个子消息固定长度(符合 OpenDroneID 标准,所有子消息均为 25 字节)。 |
| 71 | 1 | 子消息数量 | 03 | 共 3 个子消息(类型 0、1、4),无类型 2/3(可选消息,非强制发送)。 |
4.2 子消息 1:Basic ID 消息(72-96 字节,类型 0,共 25 字节)
| 偏移(字节) | 长度(字节) | 字段 | 十六进制值 | 说明 |
|---|
| 72 | 1 | 消息类型 + 协议版本 | 01 | 高 4 位0x0=0→Basic ID(基本标识消息);低 4 位0x1→F3411-20 (1.1)。 |
| 73 | 1 | ID 类型 + 无人机类型 | 12 | 高 4 位0x1→Serial Number (ANSI/CTA-2063-A)(序列号类型);低 4 位0x2→Helicopter (or Multirotor)(多旋翼)。 |
| 74-93 | 20 | 无人机序列号 | 31 35 38 31 46 35 59 48 58 32 33 39 48 30 30 32 34 35 30 41 | ASCII 转换为1581F5YHX239H002450A,与 SSID 前缀一致,为无人机唯一序列号。 |
| 94-96 | 3 | 保留字段 | 00 00 00 | 协议预留,无数据,填充 0。 |
4.3 子消息 2:Location/Vector 消息(97-121 字节,类型 1,共 25 字节)
| 偏移(字节) | 长度(字节) | 字段 | 十六进制值 | 说明 |
|---|
| 97 | 1 | 消息类型 + 协议版本 | 11 | 高 4 位0x1=1→Location/Vector(位置消息);低 4 位0x1→F3411-20 (1.1)。 |
| 98 | 1 | 状态 + 标志 | 16 | 高 4 位0x1→On Ground(地面状态,未起飞);低 4 位0x6(二进制0110)→bit2=1:高度类型AGL(离地高度);bit1=1:东西方向West(西向);bit0=0:速度乘数0.25。 |
| 99 | 1 | 方向 | B5 | 原始值0xB5=181°,结合西向标志→181+180=361°,361°=Unknown。 |
| 100 | 1 | 水平速度 | 00 | 原始值0× 乘数0.25=0 m/s(地面静止)。 |
| 101 | 1 | 垂直速度 | 00 | 原始值0×0.5 m/s(协议单位)=0 m/s(无升降)。 |
| 102-105 | 4 | 无人机纬度 | AA 10 8D 12 | 小端序重组为12 8D 10 AA→0x128D10AA=311230730,协议单位1e-7 °→311230730÷1e7=31.123073°(北纬)。 |
| 106-109 | 4 | 无人机经度 | 5E 64 77 3D | 小端序重组为3D 77 64 5E→0x3D77645E=1031234654→1031234654÷1e7=103.1234654°(东经)。 |
| 110-111 | 2 | 气压高度 | 3E 08 | 小端序重组为08 3E→0x083E=2110,协议公式(值×0.5)-1000→2110×0.5-1000=55米。 |
| 112-113 | 2 | 大地高度 | 35 08 | 小端序重组为08 35→0x0835=2101→2101×0.5-1000=50.5米。 |
| 114-115 | 2 | AGL 高度 | D0 07 | 小端序重组为07 D0→0x07D0=2000→2000×0.5-1000=0米(地面状态)。 |
| 116 | 1 | 精度组合 | 4B | 高 4 位0x4→vertAccuracies[4]=<10 m(垂直精度);低 4 位0xB→horizAccuracies[11]=<3 m(水平精度)。 |
| 117 | 1 | 气压 / 速度精度 | 04 | 高 4 位0x0→vertAccuracies[0]>=150 m(气压高度精度);低 4 位0x4→speedAccuracies[4]=<0.3 m/s(速度精度)。 |
| 118-119 | 2 | 小时内时间戳 | DB 01 | 小端序重组为01 DB→0x01DB=475,协议单位0.1秒→475×0.1=47.5秒。 |
| 120 | 1 | 时间戳精度 | 0A | 低 4 位0xA→0xA×0.1=1.0秒(时间戳精度);高 4 位保留(0x0)。 |
| 121 | 1 | 保留字段 | 00 | 协议预留。 |
4.4 子消息 3:System 消息(122-146 字节,类型 4,共 25 字节)
| 偏移(字节) | 长度(字节) | 字段 | 十六进制值 | 说明 |
|---|
| 122 | 1 | 消息类型 + 协议版本 | 41 | 高 4 位0x4=4→System(系统消息);低 4 位0x1→F3411-20 (1.1) |
| 123 | 1 | 系统标志 | 09 | 二进制00001001→高 4 位0x0(系统状态:正常运行);低 4 位0x9(保留,非原 “系统状态 + 保留”,协议无低 4 位定义)。 |
| 124-127 | 4 | 操作者纬度 | 98 0F 8D 12 | 小端序重组为12 8D 0F 98→0x128D0F98=311234456→311234456÷1e7=31.1234456°(北纬)。 |
| 128-131 | 4 | 操作者经度 | A5 64 77 3D | 小端序重组为3D 77 64 A5→0x3D7764A5=1031234725→1031234725÷1e7=103.1234725°(东经)。 |
| 132 | 1 | 操作者高度类型 | 01 | OperatorLocTypes[1]=Dynamic(动态位置,非原 “大地水准面”)。 |
| 133-134 | 2 | 操作者高度 | 00 00 | 小端序0x0000=0,协议单位0.5米→0×0.5=0米(相对大地水准面)。 |
| 135-138 | 4 | 系统时间戳 | 00 01 1A 08 | 小端序重组为08 1A 01 00→0x081A0100=135921920。OpenDroneID 协议系统时间戳 epoch 为2019-01-01 00:00:00(Unix 时间戳 1546272000),计算为1546272000+135921920=1,682,193,920。 |
| 139 | 1 | 无人机分类 | 0F | 此处为分类字段,非类型字段。 |
| 140-145 | 6 | 保留字段 | 45 0F 8D 12 A5 64 | 协议预留,含厂商自定义数据(如硬件版本)。 |
| 146 | 1 | 保留字段 | 45 | 协议预留,填充 0x45,非原 “校验位”(校验位在帧尾部 FCS 中)。 |
5. 帧尾部:填充位与 FCS(147-150 字节,共 4 字节)
此部分为 802.11 帧强制字段:
| 偏移(字节) | 长度(字节) | 字段 | 十六进制值 | 说明 |
|---|
| 147-148 | 2 | 填充位 | 00 00 | 802.11 帧要求总长度≥2346 字节(无线传输最小帧长),此处为凑足长度的填充值,无业务含义。 |
| 149-150 | 2 | FCS(帧校验序列) | 56 AD | 循环冗余校验(CRC-16),确保数据完整性(非原 “消息包校验位”)。 |