Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

ISSN 1009-3044 E-mail:wltx@dnzs.net.

cn
Computer
第 17 卷第 Knowledge and Technology
21 期 (2021 年 7 月) 电脑知识与技术 Computer http:
//www.dnzs.net.cn
Knowledge and Technology 电脑知识与技术
Vol.17, No.21 July 2021 Tel:
+86-551-65690963 65690964

基于 wireshark 的 ADS-B 报文数据解析方法


张西波
天津 300300)
(民航天津空中交通管理分局,

摘要:飞机通过地空数据链,把飞机的位置数据和其他一些附加数据以无线数字方式广播,由不同位置的地面接收站接收
处理后,通过网络自动传送到东区的航管楼,最终进入自动化系统。由于数据传送经过的传输设备比较多,为了有效分析
ADS-B 数据,该文提出一种基于 wireshark 的协议捕捉软件,使用 lua 语言编写插件,通过 lua 程序解析 wireshark 收到的
数据。
ADS-B;
关键词: wireshark;
lua;
报文解析
TP311
中图分类号: A
文献标识码:
1009-3044(2021)21-0023-03
文章编号: 开放科学(资源服务)标识码(OSID):
DOI:10.14004/j.cnki.ckt.2021.2062

Analysis Method of ADS-B Message Data based on Wireshark


ZHANG Xi-bo
(Tianjin Air Traffic Management Sub-bureau, Tianjin 300300, China)
Abstract: Through the ground to air data link, the plane's position data and other additional data are broadcast in a wireless digital
way. After being received and processed by different ground receiving stations, they are automatically transmitted to the air traffic
control building in the east district through the network, and finally enter the automation system. Due to the large number of trans⁃
mission devices, in order to effectively analyze ADS-B data, this paper proposes a protocol capture software based on Wireshark,
which uses lua language to write plug-ins, and analyzes the data received by Wireshark through lua program.
key words: ADS-B; wireshark; lua; decoding packet

1 引言 udp 数据的目的端口有 28120 和 28110 两个,一个数据处理站使


用 28120 端口,另外一个数据处理站使用 28110,数据格式如下
ADS-B 是一种基于全球卫星定位系统,它利用空地、空空
表 1。一个 asterix 数据块由一个 CAT 类别、LEN 长度和若干数
数据链通信,完成交通监视和信息传递。它已成为国际民航组
据记录组成,数据类别占用 1 个字节,数据字段为最小的信息
织 ICAO 未来航行系统方案中的一个重要组成部分,它是空管
单位,表示方法为 Innn/AAA,其中 nnn 为类别号,AAA 为字段
未来重要的航空监视手段之一。ADS-B 数据由位于西区航管
号,ADS-B 的类别号为 021,如 I021/010,I021/040 等。每个 as⁃
楼、滨海雷达、东丽湖和海直的地面站设备接收后,通过网络设
terix 数据记录中有一个 FSPEC 和若干不同的数据字段,FSPEC
备传送到东区航管楼,然后再进入自动化系统处理,ADS-B 信
定义该数据记录所包含的数据字段,FSPEC 的每一位对应一个
号传输需要经过不同科室管理的传输设备。为了有效检查运
数据字段,0 表示不选该字段,1 表示选取该字段 。天津使用的
行中出现的问题,需要有一种新的协议解析软件,对传输的信
ADS-B 的版本为 V2.1, FSPEC 为 6 字节长,
因此一个 asterix 数据
号进行解析, 来定位产生故障的位置。
块最多可以有 42 个数据字段, 数据格式见表 1。
2 工作原理 表 1 adsb 数据块
2.1 adsb 信号传输格式 asterix 数据块

Ads-b 是机载设备以无线数字广播方式广播飞机飞行时
数据类别 类别 长度 asterix 数据记录 1 … asterix 数据记录 N
的数据,基于 ADS-B 数据可以实现地空,空空监视和地地监
视。asterix 数据格式是欧洲民航合作组织为监视设备与自动 占用字节 1 2 可变长度 可变长度
化处理系统间的数据通信标准化而提出传输规程。ADS-B 数
据的地面传输以 asterix 数据格式封装在网络信号的 udp 中,天 数据字段见表 2。
津 ADS-B 数据网络传输使用目的地址为 233.1.11.1 多播地址,

2021-03-01
收稿日期:

本栏目责任编辑:
王 力 数据库与大数据技术 23
Computer Knowledge and Technology 电脑知识与技术 第 17 卷第 21 期 (2021 年 7 月)

表 2 数据字段 if(a==temp) then


if(i~=7) then
result=result..field_num[i]..","
else
result=result..field_num[i]
end
end
end
return result
end
function get_field1(x)
--deal with every 8bit,serial_num range:1-7
local field1={"010","040","161","015","071","130","131"}
return get_field(x,field1)
end
3.1.2 每个字段占用的字节数
数 据 类 别 : CAT 占 用 1 字 节 ,021 表 示 数 据 块 是 ADS-B
报告。
数据长度:LEN 占用 2 字节,表示 asterix 数据块的字节总
2.2 插件的实现方法 包括 CAT 和 LEN 字段
长,
lua 是一种比较简单的脚本语言,支持函数式编程和面向 FSPEC:6 字节固定长度
对象的编程模式。编写的脚本可以灵活嵌入应用程序中,由应 I021/008:1 字节固定长度, 表示飞机的工作状态
用程序通过解释引擎执行脚本,从而增加和定制应用程序的功 I021/010:1 字节固定长度, 表示提供 ADS-B 信息的站
能。Wireshark 软件内嵌一个 lua 语言执行引擎,解释引擎内实 其他字段的字节长度可以到网站下载相关的电子文档
现了一些读取捕捉数据、处理数据和显示数据的 lua 函数,我们 查询。
可以在自己编写的脚本中直接使用这些接口函数,从捕捉到的 3.2 定义 adsb 协议的字段
数据中提取数据, 按照 asterix 数据格式解析数据。Wireshark 以 ADS-B 协议由许多字段组成,为了从捕捉的数据包中提取
一棵协议树的形式对数据包分析,解析到某一层的时候,由某 数据,需要定义 ADS-B 协议的字段,为提取和解析数据,我们
一层来具体解析协议。软件在默认安装时会在安装路径下生 需要使用两个 wireshark 内置的 lua 对象: Proto 和 ProtoField。
成一个 init.lua 文件。Wireshark 首次运行时会读取 init.lua 脚 local NAME = "ADS-B"
本,解释执行里面的语句。通过修改 init.lua 文件,在文件中添 local PORT = 28110
加 dofile("adsb. lua"),wireshark 软 件 运 行 时 就 可 以 调 用 执 行 local adsb = Proto(NAME, "adsb Protocol") --创建一个 adsb
adsb.lua 脚本,利用脚本文件来解析 ADS-B 数据,wireshark 程序 协议对象
才能识别 adsb 数据。Lua 脚本引擎的版本可以通过查看 wire⁃ NAME 表示创建的协议名称,"ADS-B Protocol"是对解释协
shark 安装目录下的一个 luax.x.dll 文件(如果文件名是 lua5.1. 议的具体描述,
dll,lua 的版本就是 5.1),ADS-B.lua 脚本文件放在 init.lua 同一 -- create fields of adsb
目录下。 local fields = adsb.fields
3 部分脚本实现方法 fields.cat = ProtoField.uint8 (NAME .. ".cat", "CAT")
fields.flags = ProtoField.uint16 (NAME .. ".flags", "LEN")
3.1.1 提取数据块中存在的字段
fields.fspec1 = ProtoField.uint8(NAME .. ".fspec1", "fspec1")
FSPEC 字段总共有 6 字节,每个字节有七位对应该字段是 fields.fspec2 = ProtoField.uint8(NAME .. ".fspec2", "fspec2")
否在报文中出现,为简单明确,函数 get_field 输入 x 为该字节数 对于协议中的其他字段可以使用不同的内置函数创建。
据,field_num 为该字节对应的字段数据列表,每个函数对应解 3.3 adsb 数据解析
析一个字节,最后返回一个该字节对应的数据字段列表。其中
为了解析 ADS-B 报文,我们需要为 ADS-B 对象写一个回
two_n 函数为自写函数,功能为 n 个 2 连乘。Bit32.band 函数功
调函数:
能是两个数据相与产生新的数据。
function adsb.dissector (tvb, pinfo, tree)函数。函数的第一个
function get_field(x,field_num)
参数 tvb 对应需要解析的二进制数据流,第二个参数 pinfo 对应
result=""
Packet List 窗口的信息,tree 是 Packet Details 窗口的树结构,三
offset=0
个参数对应的位置在图 1 种红色的字体部分。函数的部分脚
for i=1,7,1 do
本如下:
temp=two_n(i-1)
function adsb.dissector (tvb, pinfo, tree)
a=bit32.band(x,temp)

24 数据库与大数据技术 本栏目责任编辑:
王 力
第 17 卷第 21 期 (2021 年 7 月) Computer Knowledge and Technology 电脑知识与技术

local subtree = tree:add(adsb, tvb()) 3.4 注册 ADS-B 解析器


local offset = 0 使用 DissectorTable 对象完成对 ADS-B 协议的注册,Dis⁃
-- show protocol name in protocol column sectorTable.get("udp.port"):add(PORT, adsb),这样注册完,在捕
pinfo.cols.protocol = adsb.name 捉报文时就能显示出来。
-- dissect field one by one, and add to protocol tree
local type = tvb(offset, 1)
4 结语
subtree:add(fields.cat, type) lua 是一种功能强大、高效、轻量和可嵌入的脚本语言,本
subtree:append_text(", type: " .. type:uint()) 文利用 wireshark 内置 lua 脚本引擎,使用基于 lua 的脚本语言开
offset = offset + 1 发 wireshark 软件的插件,使得对 ADS-B 协议的解析工作变得
subtree:add(fields.flags, tvb(offset, 2)) 很方便。不同版本的 ADS-B 数据有不同字段的数据,不同版
offset = offset + 2 本的 wireshark,内置的 lua 解释引擎的版本也不一样,提供给你
fspec1=tvb(offset,1):uint() 的内置函数也有所不同,因此,在使用时需要注意版本不同带
offset=offset+1 来的问题。本文虽然只介绍使用目的端口 28110 为 ADS-B 协
fspec2=tvb(offset,1):uint() 议传输端口,对于使用其他目的端口的 ADS-B 传输也可以使
offset=offset+1 用不同的 udp 端口来注册 ADS-B 解析器。
参考文献:
解析结果如图 1 所示。
[1] 刘海涛,王晓亮,夏冬,等 . 航空移动通信系统[M]. 北京:清华大
ADS-B Protocol 右边的数据 I021/010,040,161 等数据显示
学出版社,2016.
该数据帧所包含的数据字段。
[2] Roberto lerusalimschy.Lua 程序设计[M]. 梅隆魁,译 . 北京:电
子工业出版社,2018.
[3] https://www. eurocontrol. int/publication/cat021-eurocontrol-spe
cification-surveillance-data-exchange-asterix-part-12-catego
ry-21
【通联编辑:代影】

图 1 lua 对 ADS-B 数据的解析

(上接第22页) 4 结语
(1)日志采集。对平台上所有应用模块生成的日志信息通
基于微服务技术的数据中心应用系统统一管理平台,可以
过统一接口进行采集管理。通过采集原始操作记录、授权记
有效实现应用系统的授权、流程等六大建设运维关键点的统一
录、系统日志等数据,为后续的事件分析、处理、响应等提供数
管理,促进系统互联互通,提升数据深度利用,对构建技术统
据来源。
一、资源共享、运行高效、安全可靠的数据中心具有重要意义。
(2)日志分析与告警。提供对原始日志的分析挖掘功能,
发现异常安全问题;通过可视化、易操作的安全策略定制,有效 参考文献:
提炼、还原出各种异常事件场景,帮助运维人员更快的定位故 [1] 马雄 . 基于微服务架构的系统设计与开发[D]. 南京:南京邮电
障,判断失败类型,有效地提高故障诊断和恢复效率。 大学,2017.
(3)事件可视化与报表。安全审计模块应能够提供列表形 [2] 庄璐,路学刚 . 微服务架构中认证与鉴权的探讨[J]. 金融科技
式的日志活动频道,用户可以在控制台上监视到设备或应用系 时代,2018,278(10):40-42.
统模块产生的实时日志,对相关事故进行告警确认、清除等操 【通联编辑:代影】
作,或启动相关日志历史信息查询浏览功能。

本栏目责任编辑:
王 力 数据库与大数据技术 25

You might also like