<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    【永恒的瞬間】
    ?Give me hapy ?
     

     摘 要 本文介紹了網絡嗅探器軟件的功能,以及網絡嗅探軟件設計的原理,并以軟件設計的模塊化思想為主介紹了編寫一個網絡嗅探軟件的總體設計思想以及主要代碼設計,同時對涉及到的若干網絡編程知識以及一些網絡基本知識進行了介紹。本文的最后也指出了此網絡嗅探軟件設計的另一個發(fā)展方向。

          關鍵詞  網絡嗅探器 混雜模式  模塊化設計

    1  

        隨著網絡技術的發(fā)展,網絡系統(tǒng)對于整個社會的工作和建設發(fā)揮著越來越大的作用,網絡環(huán)境也變得越來越復雜,與此同時網絡系統(tǒng)的安全問題也引起了我們的關注。設計數據包嗅探器的目的在于能夠使系統(tǒng)管理員運用此類軟件分析網絡流量以便更好地控制網絡。它能夠幫助系統(tǒng)管理人員迅速地找到問題癥結所在(如網絡瓶頸、錯誤配置等),它們通常被用來在網路上截取/閱讀位于OSI 協(xié)議模型中各個協(xié)議層次上的數據包。 

    2 網絡嗅探軟件的設計原理 

    嗅探器可以理解為一個安裝在計算機上的竊聽設備,它可以用來竊聽計算機在網絡上所產生的眾多的信息,可以竊聽計算機程序在網絡上發(fā)送和接收到的數據,用來接收在網絡上傳輸的信息。

    很多計算機網絡采用的是共享媒體"。也就是說,不必中斷他的通訊,并且配置特別的線路,再安裝嗅探器,幾乎可以在任何連接著的網絡上直接竊聽到同一掩碼范圍內的計算機網絡數據。這種竊聽方式為基于混雜模式的嗅探promiscuous mode)。

    2.1 以太網的工作原理

    以太網的數據傳輸是基于共享原理的:所有的同一本地網范圍內的計算機共同接收到相同的數據包。這意味著計算機直接的通訊都是透明可見的。正是因為這樣的原因,以太網卡都構造了硬件的過濾器”,這個過濾器將忽略掉一切和自己無關的網絡信息。事實上是忽略掉了與自身MAC地址不符合的信息。嗅探程序正是利用了這個特點,它把網卡設置為混雜模式。因此,嗅探程序就能夠接收到整個以太網內的網絡數據信息了。 

    在以太網中所有的通訊都是廣播的,也就是說通常在同一個網段的所有網絡接口都可以訪問在物理媒體上傳輸的所有數據,而每一個網絡接口都有一個唯一的硬件地址,這個硬件地址也就是網卡的MAC地址。大多數系統(tǒng)使用48比特的地址,這個地址用來表示

    網絡中的每一個設備。一般來說每一塊網卡上的MAC地址都是不同的,每個網卡廠家得到一段地址,然后用這段地址分配給其生產的每個網卡一個地址。在硬件地址和IP地址間使用ARPRARP協(xié)議進行相互轉換。

    在正常的情況下,一個網絡接口應該只響應這樣的兩種數據幀:

    與自己硬件地址相匹配的數據幀。

    發(fā)向所有機器的廣播數據幀。

    2.2 網卡的工作原理

    在一個實際的系統(tǒng)中,數據的收發(fā)是由網卡來完成的。網卡接收到傳輸來的數據,網卡內的單片程序接收數據幀的目的MAC地址。根據計算機上的網卡驅動程序設置的接收模式判斷該不該接收。認為該接收就接收后產生中斷信號通知CPU;認為不該接收就丟掉不管。所以不該接收的數據,網卡就截斷了,計算機根本就不知道。CPU得到中斷信號產生中斷,操作系統(tǒng)就根據網卡的驅動程序設置的網卡中斷程序地址調用驅動程序接收數據,驅動程序接收數據后放入信號堆棧讓操作系統(tǒng)處理。

    對于網卡一般有四種接收模式:

     廣播方式:該模式下的網卡能夠接收網絡中的廣播信息。

     組播方式:設置在該模式下的網卡能夠接收組播數據。

     直接方式:在這種模式下,只有目的網卡才能接收該數據。

     混雜模式:在這種模式下的網卡能夠接收一切通過它的數據,而不管該數據是否是傳給它的。

    數據包MAC

    接口配置模式

    產生中斷,通知CPU

    產生中斷,通知CPU

        不處理,丟棄

    本地接口硬件地址

    廣播地址

     

    其他硬件地址

    混雜模式

    非混合模式

    數據包MAC

    接口配置模式

    產生中斷,通知CPU

    產生中斷,通知CPU

        不處理,丟棄

    數據包

    2.3 網絡嗅探軟件的工作原理

    根據以上的介紹,我們可以得出結論如下:

    首先,在以太網中是基于廣播方式傳送數據的,也就是說,所有的物理信號都要經過我的機器。再次,網卡可以置于一種模式叫混雜模式(promiscuous mode),在這種模式下工作的網卡能夠接收到一切通過它的數據,而不管實際上數據的目的地址是不是它。這就是以下將要介紹的網絡嗅探軟件的工作的基本原理:讓網卡接收一切它所能接收的數據。

    計算機直接所傳送的數據,事實上是大量的二進制數據。因此, 一個網絡竊聽程序還必須也使用特定的網絡協(xié)議來分解嗅探到的數據,嗅探器也就必須能夠識別出哪個協(xié)議對應于這個數據片斷,只有這樣才能夠進行正確的解碼。   

    3 網絡嗅探軟件的設計實現

        該網絡嗅探軟件能夠從網絡上讀取數據包并且解析數據包報文頭中各字段的意義。能夠分析數據幀以及所使用的協(xié)議的類型。

    3.1 網絡嗅探軟件的模塊結構

    設計該網絡嗅探軟件可分為以下幾個步驟:

     創(chuàng)建套接字

     把網卡設置為混雜模式

     捕獲數據包

     分析數據包

    3.2 模塊說明

    ⑴  該網絡嗅探軟件主要是運用LINUX環(huán)境下的SOCKET編程。網絡的SOCKET數據傳輸是一種特殊的I/O, SOCKET也是一種文件描述符。該網絡嗅探軟件設計的目的是截獲所有的數據包,即包括所有的協(xié)議。

    Socket()函數的定義式如下:

    Sockfd = socket ( int family, int type, int protocol ) ;

    第一個參數是地址類型,如果選用AF UNIX, 是用于本機上不同進程之間進行通信,而設為AF INET 則是用于不同主機之間的通信;第二個參數即socket的類型參數,主要有4種參數類型如下:

    ① SOCK DRAMused for udp datagrams.

    ② SOCK STREAMused for tcp packets.

    ③ SOCK RAWused to bypass the transport layer and directly access the IP layer.

          ?、堋?/span>SOCK PACKETthis is linux specific, it is similuar to sock raw except it accesses the DATA LINK layer.

    第三個參數是協(xié)議參數,指定程序使用具體的協(xié)議。

    在此程序中為截獲包含所有協(xié)議的數據包,故在程序的開始就寫語句:

    define PROTO   htons 0x0003/ *Ethernet code for all protol */

    且在本程序中socket()函數的第二個參數選用sock packet

    ⑵ 套接字創(chuàng)建成功之后,就可以選擇網絡接口并加以參數控制了。進入第二個模塊:設置網卡于混雜模式。

    在程序中有一個單獨的自定義函數是用來將網卡設置為混雜模式的。在這個模塊中主要是調用了ioctl 函數,ioctl 函數是用來控制特殊文件的底層設備參數的,這些特殊文件通常是終端、套接字和接口。ioctl 函數的定義如下:

         ioctlsock, SIOCGIFFLAGS, &ifr

         ioctl()函數中第一個參數是一個打開的原始套接字描述符“sock”,第二個參數是所要執(zhí)行的請求操作。這里,請求操作是“SIOCGIFFLAGS”,意思是獲取接口“etho”的標記符。第三個參數是接口請求數據結構的地址指針,該結構中包含了所要進行請求操作的接口名稱值。

    ⑶ 網絡接口設置為混雜模式以后,接著就可以接收數據包了, 進入捕獲數據包的模塊。

       recvfrom ( if_eth_fd, &ep, sizeof (ep), 0, &dest, &dlen );

    這個函數要做的就是接收數據,并把接收到的數據放入buffer中。

    ⑷ 在成功的接收到數據包后,程序將進入下一個模塊:分析數據包。

    這里要介紹一下有關的網絡基本知識,首先介紹一下TCP/IP的分層:

    TCP/IP協(xié)議族中,有很多種協(xié)議。可用圖一簡單概括TCP/IP協(xié)議族中不同層次的協(xié)議。如圖所示,由于TCPUDPICMPIGMP都要向IP傳送數據,因此IP必須在生成的IP首部中加入某種標識,以表明數據屬于哪一層。為此,IP在首部中存入一個長度為8 bit的數據,稱作協(xié)議域。1表示為ICMP協(xié)議,2表示為IGMP協(xié)議,6表示為TCP協(xié)議,17表示為UDP協(xié)議。類似地,許多應用程序都可以使用TCPUDP來傳送數據。運輸層協(xié)議在生成報文首部時要存入一個應用程序的標識符。TCPUDP都用一個16 bit的端口號來表示不同的應用程序。TCPUDP把源端口號和目的端口號分別存入報文首部中。網絡接口分別要發(fā)送和接收IP、ARPRARP數據,因此也必須在以太網的幀首部中加入某種形式的標識,以指明生成數據的網絡層協(xié)議。為此,以太網的幀首部也有一個16 bit的幀類型域。

     

     

    TCP                       

    UDP

    ICMP

    IP

    IGMP

    ARP

    硬件接口

    RARP

    用戶進程        用戶進程        用戶進程        用戶進程      應用層    運輸層 網絡層   鏈路層

       

                              媒體

    (圖一)

        網絡嗅探程序在分析數據包這一階段正是根據了網絡的工作原理:在收到一個以太網數據幀時,數據就開始從協(xié)議棧中由底向上升,同時去掉各層協(xié)議加上的報文首部。每層協(xié)議盒都要去檢查報文首部中的協(xié)議標識,以確定接收數據的上層協(xié)議。這個過程即是分用。

    4 進一步的發(fā)展方向

         還有很多的功能可以加入到本文所設計的軟件中,使其變得更加完整。它的另一個發(fā)展的方向就是進一步更好的分析數據包中的數據部分,并能夠把分析出來的數據從ASCII碼轉換為自然語言,這就能夠給用戶帶來很大的方便。

     

    posted on 2007-05-16 13:53 ???MengChuChen 閱讀(945) 評論(1)  編輯  收藏 所屬分類: meshwork

    FeedBack:
    # re: 網絡嗅探軟件的設計與分析
    2007-12-11 23:57 | tigershi10
    怎么沒有代碼啊  回復  更多評論
      

    只有注冊用戶登錄后才能發(fā)表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产成人久久精品动漫| 午夜精品在线免费观看| 亚洲成AⅤ人影院在线观看| 亚洲精华液一二三产区| 最近2019中文免费字幕| 亚洲人成网网址在线看| 国产乱码免费卡1卡二卡3卡| 亚洲影视自拍揄拍愉拍| 日韩免费a级毛片无码a∨| 无码久久精品国产亚洲Av影片| a级午夜毛片免费一区二区| 国产av无码专区亚洲av果冻传媒 | 一级做a爰片久久毛片免费看| 亚洲欧洲国产成人综合在线观看 | 亚洲人成电影福利在线播放| 91人成网站色www免费下载| 亚洲国产成人精品电影| 午夜一级毛片免费视频| 男男gay做爽爽免费视频| 色噜噜AV亚洲色一区二区| a级毛片在线免费| 亚洲成av人片不卡无码| 成人午夜视频免费| 免费大片黄在线观看| 亚洲视频在线观看免费| 自拍偷自拍亚洲精品情侣| 国产免费区在线观看十分钟| 国产亚洲一区二区手机在线观看| 免费国产在线视频| 久久久婷婷五月亚洲97号色| 国产h视频在线观看网站免费| 99久久国产亚洲综合精品| 国产无遮挡裸体免费视频| 最近免费字幕中文大全| 亚洲一本之道高清乱码| 国产精品亚洲玖玖玖在线观看| 未满十八18禁止免费无码网站| 亚洲精品无码专区| 亚洲精品中文字幕乱码三区 | 亚洲激情视频在线观看| 日本19禁啪啪无遮挡免费动图|