APP下载

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

2021-09-23张西波

电脑知识与技术 2021年21期

张西波

摘要:飞机通过地空数据链,把飞机的位置数据和其他一些附加数据以无线数字方式广播,由不同位置的地面接收站接收处理后,通过网络自动传送到东区的航管楼,最终进入自动化系统。由于数据传送经过的传输设备比较多,为了有效分析ADS-B数据,该文提出一种基于wireshark的協议捕捉软件,使用lua语言编写插件,通过lua程序解析wireshark收到的数据。

关键词:ADS-B;wireshark;lua;报文解析

中图分类号:TP311        文献标识码:A

文章编号:1009-3044(2021)21-0023-03

开放科学(资源服务)标识码(OSID):

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 transmission 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 引言

ADS-B 是一种基于全球卫星定位系统,它利用空地、空空数据链通信,完成交通监视和信息传递。它已成为国际民航组织ICAO未来航行系统方案中的一个重要组成部分,它是空管未来重要的航空监视手段之一。ADS-B数据由位于西区航管楼、滨海雷达、东丽湖和海直的地面站设备接收后,通过网络设备传送到东区航管楼,然后再进入自动化系统处理,ADS-B信号传输需要经过不同科室管理的传输设备。为了有效检查运行中出现的问题,需要有一种新的协议解析软件,对传输的信号进行解析,来定位产生故障的位置。

2 工作原理

2.1 adsb信号传输格式

Ads-b是机载设备以无线数字广播方式广播飞机飞行时的数据,基于ADS-B数据可以实现地空,空空监视和地地监视。asterix数据格式是欧洲民航合作组织为监视设备与自动化处理系统间的数据通信标准化而提出传输规程。ADS-B数据的地面传输以asterix数据格式封装在网络信号的udp中,天津ADS-B数据网络传输使用目的地址为233.1.11.1多播地址,udp数据的目的端口有28120和28110两个,一个数据处理站使用28120端口,另外一个数据处理站使用28110,数据格式如下表1。一个asterix数据块由一个CAT类别、LEN长度和若干数据记录组成,数据类别占用1个字节,数据字段为最小的信息单位,表示方法为Innn/AAA,其中nnn为类别号,AAA为字段号,ADS-B的类别号为021,如I021/010,I021/040等。每个asterix数据记录中有一个FSPEC和若干不同的数据字段,FSPEC定义该数据记录所包含的数据字段,FSPEC的每一位对应一个数据字段,0表示不选该字段,1表示选取该字段 。天津使用的ADS-B的版本为V2.1,FSPEC为6字节长,因此一个asterix数据块最多可以有42个数据字段,数据格式见表1。

数据字段见表2。

2.2 插件的实现方法

lua是一种比较简单的脚本语言,支持函数式编程和面向对象的编程模式。编写的脚本可以灵活嵌入应用程序中,由应用程序通过解释引擎执行脚本,从而增加和定制应用程序的功能。Wireshark软件内嵌一个lua语言执行引擎,解释引擎内实现了一些读取捕捉数据、处理数据和显示数据的lua函数,我们可以在自己编写的脚本中直接使用这些接口函数,从捕捉到的数据中提取数据,按照asterix数据格式解析数据。Wireshark 以一棵协议树的形式对数据包分析,解析到某一层的时候,由某一层来具体解析协议。软件在默认安装时会在安装路径下生成一个init.lua文件。Wireshark首次运行时会读取init.lua脚本,解释执行里面的语句。通过修改init.lua文件,在文件中添加dofile("adsb.lua"),wireshark软件运行时就可以调用执行adsb.lua脚本,利用脚本文件来解析ADS-B数据,wireshark程序才能识别adsb数据。Lua脚本引擎的版本可以通过查看wireshark安装目录下的一个luax.x.dll文件(如果文件名是lua5.1.dll,lua的版本就是5.1),ADS-B.lua脚本文件放在init.lua同一目录下。