999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Wireshark的協議解析器開發研究和實現

2015-05-30 12:14:39曹利王丹丹
計算機時代 2015年6期

曹利 王丹丹

摘 要: 在分析Wireshark體系結構和功能的基礎上,研究了Wireshark環境下協議解析器開發的方法和流程,以一個簡單的私有協議amin進行了驗證性開發,實驗結果說明Wireshark的開放性架構有效的滿足了新解析插件添加和對新協議的分析。對業界非標準新協議的拓展研究有借鑒意義。

關鍵詞: Wireshark; 協議解析; 插件開發; 網絡協議

中圖分類號:TP393 文獻標志碼:A 文章編號:1006-8228(2015)06-13-03

Abstract: The Wireshark's function, architecture, components are analyzed, and the method and process of protocol parser development is also studied. At the same time, a validation of development has been done on a simple protocol Amin. Experimental results show that the open architecture of Wireshark is effective to a newly added protocol parser plug-ins and to new protocol parsing, this paper provided a reference for the expanded research of non-standard protocol.

Key words: Wireshark; protocol parsing; plug-in development; network protocol

0 引言

網絡協議分析軟件的功能是擷取網絡數據包的協議頭及相關負載信息,通過分析,盡可能為用戶顯示出最為詳細的網絡協議資料,從而了解信息及相關數據包在產生和傳輸中的行為。由于網絡協議層出不窮,一個好的網絡協議分析軟件必須既能對標準協議進行有效分析,又能提供接口允許用戶添加新的協議解析方法[1]。Wireshark(前稱Ethereal)是目前應用最廣泛的網絡協議分析軟件之一,由密蘇里大學計算機專業的Gerald combs出于項目需要而開發,于1998年以GPL開源許可證發布,Wireshark的使用者可以免費取得該軟件和其源代碼,并根據自身協議解析的需求對其進行定制和擴展。

本文在分析Wireshark的系統結構的基礎上,研究了Wireshark的開發環境,方法和步驟,并進行了新協議解析插件開發驗證,為新協議的拓展研究打下基礎。

1 Wireshark體系結構分析

Wireshark的結構主要由Capture Core、win-/libpcap、WireTap、Dissector幾個核心模塊構成。綜合調度模塊Capture Core調用底層抓包工具win-/libpcap獲得網絡數據,并調用磁盤讀寫包模塊WireTap寫入本地磁盤。因為數據是二進制文件,所以必須調用解析器模塊Dissector對二進制數據進行協議解讀,并把協議部分的各個字段信息進行詳細地呈現。解析器Dissector的核心工作就在于數據包詳細內容窗口部分的樹形結構的維護,并結合過濾器、數據包列表等部分,進行篩選與信息的呈現。當用戶需要對新協議進行開發,實質上就是對Dissector進行拓展,Dissector可以是內置形式的(Build-in),也可以是插件形式的(Plug-in),所以,基于Wireshark的協議解析器開發有兩種模式,即:Build-in、Plug-in[2]。其系統結構如圖1所示。

2 Wireshark開發環境設置

在Windows環境下進行Wireshark開發需要的工具有:

⑴ Visual C++ 2005 Express Edition(C編譯器);

⑵ Cygwin(一個Win32上的仿Unix平臺);

⑶ Python(一種面向對象的高級腳本語言);

⑷ Subvertion Client(TortoiseSVN)(可選);

⑸ Wireshark依賴的開發包。

安裝步驟及開發環境設置如下[3]。

⑴ 安裝VS2005/VS2003 等C語言編譯器,同時必須確認下載并安裝本操作系統的SDK。

⑵ 安裝Cygwin,在Wireshark插件開發中需要用到的安裝包有:Archive/unzip、Devel/bison、Devel/flex、Interpreters/perl、Utils/patch、Web/wget,在”Select Package”頁需要改變下載選項,將以上安裝包選中安裝。

⑶ 安裝Python,版本符合Wireshark源代碼包中的config.nmake文件中的PYTHON_VER中定義的版本(例如PYTHON_VER=27,則選擇python-2.7.*的版本)。

⑷ 安裝Subvertion Client,可以下載使用TortoiseSVN,安裝后重啟,瀏覽文件夾時右鍵會獲取源代碼樹,方便程序開發。

⑸ 編譯Wireshark。使用svn客戶端TortoiseSVN將Wireshark源代碼下載到本地磁盤,修改源碼的config.nmake文件來指定對應的工具以及相關信息,主要做以下幾項修改:

WIRESHARK_TARGET_PLATFORM:指定編譯目標平臺;

VERSION_EXTRA:指定自定義編譯個人版本信息,字符串形式。

WIRESHARK_LIBS:依賴庫的路徑,依賴庫可以通過makefile文件自動獲取。

cygwin的安裝路徑:CYGWIN_PATH=C:\cygwin\bin

python的路徑PYTHON="C:/python25/python.exe"

設置nsis打包工具的路MAKENSIS="d:\Program Files\

nsis\makensis.exe"

編譯輸出文件路徑INSTALL2_DIR=E:\MyCode\wire-

shark\Wireshark-gtk2

設置命令行環境:在命令行中直接運行nmake -f Makefile verify_tools

如果所有必需安裝的軟件包都安裝好了,則會出現如圖2所示的界面。

⑹ 編譯Wireshark需要的依賴庫文件:nmake -f Makefile.nmake setup

⑺ 清理無用文件:nmake -f Makefile.nmake distclean

⑻ 編譯nmake -f Makefile.nmake all

3 Wireshark解析協議的開發

3.1 Wireshark協議解析原理

基于TCP/IP的協議數據包在發送端是從上往下進行層層封裝,接收者對協議的解析需從下往上,首先對數據幀的協議分析,脫去協議頭,然后將數據交由網絡層分析,網絡層協議識別后脫去網絡層協議頭,將里面的數據交給傳輸層分析,這樣一直進行下去,直到應用層。為使協議和協議間層次關系明晰,從而對數據流中各層次的協議能夠逐層處理,Wireshark系統采用了圖3所示協議樹的方式。Wireshark采用協議的特征字來識別擁有同樣父協議的兄弟節點協議。每個協議注冊自己的特征字,這些特征字給子節點協議提供可以互相區分開來的標識。在Wireshark中注冊一個協議解析器首先需要指出它的父協議是什么,另外還需指出自己區別于父節點下所有兄弟節點協議的特征字。

由于采用了協議樹加特征字的設計,Wireshark在協議解析上具備了很強的擴展性,增加一個協議只需要將該協議相關的解析函數掛到協議樹上相應的節點即可[4]。

3.2 插件型解析器開發

Wireshark默認支持1170多種業界通用網絡協議,在Wireshark主菜單“Internals>Support Protocols ”可查看當前支持的所有協議。當Wireshark需要解析非業界通用協議時,就必須使用內置件形式或插件技術進行協議解析的拓展,內置件形式需要了解Wireshark的組織構建,了解源文件的存放位置和編譯運行方式等,難度較大。而插件技術是通過提供通用接口調用插件的方式開發解析協議,在指定源代碼目錄\plugins\下增加編譯好的庫文件(*.dll)。運用插件技術可以開發出伸縮性良好、便于維護的應用程序,相對來說簡單易行。本文主要分析插件型解析器開發技術。

協議解析器的核心邏輯流程包括以下部分[5]。

⑴ 注冊協議:注冊協議的名稱,過濾字符串及其他相關所需的結構。

⑵ 提供協議解析函數:這是關鍵部分,此函數由Wireshark核心調用,處理協議的解析及顯示工作。

Wireshark啟動時會加載所有$installdir/plugins/$buildversion/*.dll,并且調用每個dll導出的兩個函數proto_reg_handoff_xxx和proto_register_xxx。插件在這兩個函數里完成 解析器dissector的注冊和初始化工作,其中plugin_registe注冊插件,plugin_reg_handoff注冊協議。

插件型解析器開發的具體過程如下。

第一步,在Wireshark的plugins目錄下創建一個目錄,一般以需要解析的協議名作為目錄名。

5 結束語

隨著網絡技術的迅速發展。網絡協議的種類也越來越多,對新協議的研究需要一個可擴展的協議分析器進行協議解析,而Wireshark以其開源性和良好的二次開發架構滿足了該需求。本文在分析Wireshark體系結構的基礎上,研究了Wireshark環境下協議解析器開發的方法和流程,同時以一個簡單的私有協議amin進行了驗證性開發,實驗結果說明Wireshark的開放性架構有效的滿足了新解析插件添加和對新協議的解析。這將為網絡設計和研究中的新協議拓展帶來很大的便利。

參考文獻:

[1] 蔣波,李方軍,郝軍.數據包的截獲與網絡協議分析[J].重慶三峽學院

學報,2006.22(3):26-28

[2] Wireshark技術文檔4.0.1[EB/OL].http://www.winpcap.org,

2014-06-03.

[3] 羅青林,徐克付,'臧文羽,劉金剛. 1 Wireshark 環境下的網絡協議解

析與驗證方法[J].計算機工程與設計,2011.32(3):770-773

[4] MoinMoi, Python.doc/README. developer[EB/OL]. http://wiki.

Wireshark.org/Development,2009.

[5] KenThompson. Creating your own custom Wireshark dissector

[EB/OL].http://www.codeproject.com/KB/IP/custom_dissector.aspx,

2009.

主站蜘蛛池模板: 91视频青青草| 久久亚洲精少妇毛片午夜无码| 国产欧美高清| 欧美精品成人一区二区视频一| 免费黄色国产视频| 国产色婷婷| 亚洲免费毛片| 国产精品一区在线麻豆| 日韩AV无码一区| 国产色爱av资源综合区| 亚洲永久色| 国产理论精品| 狠狠色香婷婷久久亚洲精品| 国产日产欧美精品| 538国产视频| 国产福利小视频高清在线观看| 综合色在线| 色偷偷一区二区三区| v天堂中文在线| 五月丁香伊人啪啪手机免费观看| 玖玖精品视频在线观看| 最新亚洲av女人的天堂| 欧美成人精品高清在线下载| 日韩无码真实干出血视频| 亚洲日产2021三区在线| 91精品久久久无码中文字幕vr| 亚洲国产精品无码AV| 欧美一区二区三区不卡免费| 国内精品免费| 丰满人妻被猛烈进入无码| 91美女在线| 一区二区日韩国产精久久| 欧美色综合网站| 亚洲视频在线观看免费视频| 五月天丁香婷婷综合久久| 青青操国产| 波多野结衣亚洲一区| 成人福利免费在线观看| 亚洲天堂色色人体| 天天躁日日躁狠狠躁中文字幕| 国产在线91在线电影| 一本二本三本不卡无码| 亚洲综合色区在线播放2019| 亚洲天堂久久新| 日韩精品毛片人妻AV不卡| 热久久这里是精品6免费观看| 亚洲无码视频喷水| 欧美另类精品一区二区三区| 国产在线观看91精品| 亚洲精品无码成人片在线观看| 精品撒尿视频一区二区三区| 久久九九热视频| jizz在线观看| 在线一级毛片| 啪啪免费视频一区二区| 国产主播喷水| 婷婷激情亚洲| 婷婷六月在线| 激情综合婷婷丁香五月尤物| 精品无码一区二区三区电影| 色香蕉影院| 成年人午夜免费视频| 2024av在线无码中文最新| 日本成人在线不卡视频| 日韩激情成人| 午夜综合网| 国产在线精彩视频二区| 亚洲国产第一区二区香蕉| 国产在线精彩视频二区| 国产成人欧美| 免费国产黄线在线观看| 波多野结衣一级毛片| 亚洲人精品亚洲人成在线| 亚洲日韩国产精品综合在线观看| 精品小视频在线观看| 国模沟沟一区二区三区| 青草国产在线视频| 久久国产亚洲偷自| 狠狠色综合网| 2019年国产精品自拍不卡| 试看120秒男女啪啪免费| 特级毛片免费视频|