張西波



摘要:飛機通過地空數據鏈,把飛機的位置數據和其他一些附加數據以無線數字方式廣播,由不同位置的地面接收站接收處理后,通過網絡自動傳送到東區的航管樓,最終進入自動化系統。由于數據傳送經過的傳輸設備比較多,為了有效分析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同一目錄下。