張西波
摘要:飛機(jī)通過地空數(shù)據(jù)鏈,把飛機(jī)的位置數(shù)據(jù)和其他一些附加數(shù)據(jù)以無線數(shù)字方式廣播,由不同位置的地面接收站接收處理后,通過網(wǎng)絡(luò)自動傳送到東區(qū)的航管樓,最終進(jìn)入自動化系統(tǒng)。由于數(shù)據(jù)傳送經(jīng)過的傳輸設(shè)備比較多,為了有效分析ADS-B數(shù)據(jù),該文提出一種基于wireshark的協(xié)議捕捉軟件,使用lua語言編寫插件,通過lua程序解析wireshark收到的數(shù)據(jù)。
關(guān)鍵詞:ADS-B;wireshark;lua;報文解析
中圖分類號:TP311? ? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2021)21-0023-03
開放科學(xué)(資源服務(wù))標(biāo)識碼(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 是一種基于全球衛(wèi)星定位系統(tǒng),它利用空地、空空數(shù)據(jù)鏈通信,完成交通監(jiān)視和信息傳遞。它已成為國際民航組織ICAO未來航行系統(tǒng)方案中的一個重要組成部分,它是空管未來重要的航空監(jiān)視手段之一。ADS-B數(shù)據(jù)由位于西區(qū)航管樓、濱海雷達(dá)、東麗湖和海直的地面站設(shè)備接收后,通過網(wǎng)絡(luò)設(shè)備傳送到東區(qū)航管樓,然后再進(jìn)入自動化系統(tǒng)處理,ADS-B信號傳輸需要經(jīng)過不同科室管理的傳輸設(shè)備。為了有效檢查運行中出現(xiàn)的問題,需要有一種新的協(xié)議解析軟件,對傳輸?shù)男盘栠M(jìn)行解析,來定位產(chǎn)生故障的位置。
2 工作原理
2.1 adsb信號傳輸格式
Ads-b是機(jī)載設(shè)備以無線數(shù)字廣播方式廣播飛機(jī)飛行時的數(shù)據(jù),基于ADS-B數(shù)據(jù)可以實現(xiàn)地空,空空監(jiān)視和地地監(jiān)視。asterix數(shù)據(jù)格式是歐洲民航合作組織為監(jiān)視設(shè)備與自動化處理系統(tǒng)間的數(shù)據(jù)通信標(biāo)準(zhǔn)化而提出傳輸規(guī)程。ADS-B數(shù)據(jù)的地面?zhèn)鬏斠詀sterix數(shù)據(jù)格式封裝在網(wǎng)絡(luò)信號的udp中,天津ADS-B數(shù)據(jù)網(wǎng)絡(luò)傳輸使用目的地址為233.1.11.1多播地址,udp數(shù)據(jù)的目的端口有28120和28110兩個,一個數(shù)據(jù)處理站使用28120端口,另外一個數(shù)據(jù)處理站使用28110,數(shù)據(jù)格式如下表1。一個asterix數(shù)據(jù)塊由一個CAT類別、LEN長度和若干數(shù)據(jù)記錄組成,數(shù)據(jù)類別占用1個字節(jié),數(shù)據(jù)字段為最小的信息單位,表示方法為Innn/AAA,其中nnn為類別號,AAA為字段號,ADS-B的類別號為021,如I021/010,I021/040等。每個asterix數(shù)據(jù)記錄中有一個FSPEC和若干不同的數(shù)據(jù)字段,F(xiàn)SPEC定義該數(shù)據(jù)記錄所包含的數(shù)據(jù)字段,F(xiàn)SPEC的每一位對應(yīng)一個數(shù)據(jù)字段,0表示不選該字段,1表示選取該字段 。天津使用的ADS-B的版本為V2.1,F(xiàn)SPEC為6字節(jié)長,因此一個asterix數(shù)據(jù)塊最多可以有42個數(shù)據(jù)字段,數(shù)據(jù)格式見表1。
數(shù)據(jù)字段見表2。
2.2 插件的實現(xiàn)方法
lua是一種比較簡單的腳本語言,支持函數(shù)式編程和面向?qū)ο蟮木幊棠J?。編寫的腳本可以靈活嵌入應(yīng)用程序中,由應(yīng)用程序通過解釋引擎執(zhí)行腳本,從而增加和定制應(yīng)用程序的功能。Wireshark軟件內(nèi)嵌一個lua語言執(zhí)行引擎,解釋引擎內(nèi)實現(xiàn)了一些讀取捕捉數(shù)據(jù)、處理數(shù)據(jù)和顯示數(shù)據(jù)的lua函數(shù),我們可以在自己編寫的腳本中直接使用這些接口函數(shù),從捕捉到的數(shù)據(jù)中提取數(shù)據(jù),按照asterix數(shù)據(jù)格式解析數(shù)據(jù)。Wireshark 以一棵協(xié)議樹的形式對數(shù)據(jù)包分析,解析到某一層的時候,由某一層來具體解析協(xié)議。軟件在默認(rèn)安裝時會在安裝路徑下生成一個init.lua文件。Wireshark首次運行時會讀取init.lua腳本,解釋執(zhí)行里面的語句。通過修改init.lua文件,在文件中添加dofile("adsb.lua"),wireshark軟件運行時就可以調(diào)用執(zhí)行adsb.lua腳本,利用腳本文件來解析ADS-B數(shù)據(jù),wireshark程序才能識別adsb數(shù)據(jù)。Lua腳本引擎的版本可以通過查看wireshark安裝目錄下的一個luax.x.dll文件(如果文件名是lua5.1.dll,lua的版本就是5.1),ADS-B.lua腳本文件放在init.lua同一目錄下。