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

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

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

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

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

          關(guān)鍵詞  網(wǎng)絡(luò)嗅探器 混雜模式  模塊化設(shè)計(jì)

    1  

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

    2 網(wǎng)絡(luò)嗅探軟件的設(shè)計(jì)原理 

    嗅探器可以理解為一個(gè)安裝在計(jì)算機(jī)上的竊聽(tīng)設(shè)備,它可以用來(lái)竊聽(tīng)計(jì)算機(jī)在網(wǎng)絡(luò)上所產(chǎn)生的眾多的信息,可以竊聽(tīng)計(jì)算機(jī)程序在網(wǎng)絡(luò)上發(fā)送和接收到的數(shù)據(jù),用來(lái)接收在網(wǎng)絡(luò)上傳輸?shù)男畔ⅰ?/span>

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

    2.1 以太網(wǎng)的工作原理

    以太網(wǎng)的數(shù)據(jù)傳輸是基于共享原理的:所有的同一本地網(wǎng)范圍內(nèi)的計(jì)算機(jī)共同接收到相同的數(shù)據(jù)包。這意味著計(jì)算機(jī)直接的通訊都是透明可見(jiàn)的。正是因?yàn)檫@樣的原因,以太網(wǎng)卡都構(gòu)造了硬件的過(guò)濾器”,這個(gè)過(guò)濾器將忽略掉一切和自己無(wú)關(guān)的網(wǎng)絡(luò)信息。事實(shí)上是忽略掉了與自身MAC地址不符合的信息。嗅探程序正是利用了這個(gè)特點(diǎn),它把網(wǎng)卡設(shè)置為混雜模式。因此,嗅探程序就能夠接收到整個(gè)以太網(wǎng)內(nèi)的網(wǎng)絡(luò)數(shù)據(jù)信息了。 

    在以太網(wǎng)中所有的通訊都是廣播的,也就是說(shuō)通常在同一個(gè)網(wǎng)段的所有網(wǎng)絡(luò)接口都可以訪問(wèn)在物理媒體上傳輸?shù)乃袛?shù)據(jù),而每一個(gè)網(wǎng)絡(luò)接口都有一個(gè)唯一的硬件地址,這個(gè)硬件地址也就是網(wǎng)卡的MAC地址。大多數(shù)系統(tǒng)使用48比特的地址,這個(gè)地址用來(lái)表示

    網(wǎng)絡(luò)中的每一個(gè)設(shè)備。一般來(lái)說(shuō)每一塊網(wǎng)卡上的MAC地址都是不同的,每個(gè)網(wǎng)卡廠家得到一段地址,然后用這段地址分配給其生產(chǎn)的每個(gè)網(wǎng)卡一個(gè)地址。在硬件地址和IP地址間使用ARPRARP協(xié)議進(jìn)行相互轉(zhuǎn)換。

    在正常的情況下,一個(gè)網(wǎng)絡(luò)接口應(yīng)該只響應(yīng)這樣的兩種數(shù)據(jù)幀:

    與自己硬件地址相匹配的數(shù)據(jù)幀。

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

    2.2 網(wǎng)卡的工作原理

    在一個(gè)實(shí)際的系統(tǒng)中,數(shù)據(jù)的收發(fā)是由網(wǎng)卡來(lái)完成的。網(wǎng)卡接收到傳輸來(lái)的數(shù)據(jù),網(wǎng)卡內(nèi)的單片程序接收數(shù)據(jù)幀的目的MAC地址。根據(jù)計(jì)算機(jī)上的網(wǎng)卡驅(qū)動(dòng)程序設(shè)置的接收模式判斷該不該接收。認(rèn)為該接收就接收后產(chǎn)生中斷信號(hào)通知CPU;認(rèn)為不該接收就丟掉不管。所以不該接收的數(shù)據(jù),網(wǎng)卡就截?cái)嗔耍?jì)算機(jī)根本就不知道。CPU得到中斷信號(hào)產(chǎn)生中斷,操作系統(tǒng)就根據(jù)網(wǎng)卡的驅(qū)動(dòng)程序設(shè)置的網(wǎng)卡中斷程序地址調(diào)用驅(qū)動(dòng)程序接收數(shù)據(jù),驅(qū)動(dòng)程序接收數(shù)據(jù)后放入信號(hào)堆棧讓操作系統(tǒng)處理。

    對(duì)于網(wǎng)卡一般有四種接收模式:

     廣播方式:該模式下的網(wǎng)卡能夠接收網(wǎng)絡(luò)中的廣播信息。

     組播方式:設(shè)置在該模式下的網(wǎng)卡能夠接收組播數(shù)據(jù)。

     直接方式:在這種模式下,只有目的網(wǎng)卡才能接收該數(shù)據(jù)。

     混雜模式:在這種模式下的網(wǎng)卡能夠接收一切通過(guò)它的數(shù)據(jù),而不管該數(shù)據(jù)是否是傳給它的。

    數(shù)據(jù)包MAC

    接口配置模式

    產(chǎn)生中斷,通知CPU

    產(chǎn)生中斷,通知CPU

        不處理,丟棄

    本地接口硬件地址

    廣播地址

     

    其他硬件地址

    混雜模式

    非混合模式

    數(shù)據(jù)包MAC

    接口配置模式

    產(chǎn)生中斷,通知CPU

    產(chǎn)生中斷,通知CPU

        不處理,丟棄

    數(shù)據(jù)包

    2.3 網(wǎng)絡(luò)嗅探軟件的工作原理

    根據(jù)以上的介紹,我們可以得出結(jié)論如下:

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

    計(jì)算機(jī)直接所傳送的數(shù)據(jù),事實(shí)上是大量的二進(jìn)制數(shù)據(jù)。因此, 一個(gè)網(wǎng)絡(luò)竊聽(tīng)程序還必須也使用特定的網(wǎng)絡(luò)協(xié)議來(lái)分解嗅探到的數(shù)據(jù),嗅探器也就必須能夠識(shí)別出哪個(gè)協(xié)議對(duì)應(yīng)于這個(gè)數(shù)據(jù)片斷,只有這樣才能夠進(jìn)行正確的解碼。   

    3 網(wǎng)絡(luò)嗅探軟件的設(shè)計(jì)實(shí)現(xiàn)

        該網(wǎng)絡(luò)嗅探軟件能夠從網(wǎng)絡(luò)上讀取數(shù)據(jù)包并且解析數(shù)據(jù)包報(bào)文頭中各字段的意義。能夠分析數(shù)據(jù)幀以及所使用的協(xié)議的類(lèi)型。

    3.1 網(wǎng)絡(luò)嗅探軟件的模塊結(jié)構(gòu)

    設(shè)計(jì)該網(wǎng)絡(luò)嗅探軟件可分為以下幾個(gè)步驟:

     創(chuàng)建套接字

     把網(wǎng)卡設(shè)置為混雜模式

     捕獲數(shù)據(jù)包

     分析數(shù)據(jù)包

    3.2 模塊說(shuō)明

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

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

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

    第一個(gè)參數(shù)是地址類(lèi)型,如果選用AF UNIX, 是用于本機(jī)上不同進(jìn)程之間進(jìn)行通信,而設(shè)為AF INET 則是用于不同主機(jī)之間的通信;第二個(gè)參數(shù)即socket的類(lèi)型參數(shù),主要有4種參數(shù)類(lèi)型如下:

    ① SOCK DRAMused for udp datagrams.

    ② SOCK STREAMused for tcp packets.

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

           ④ SOCK PACKETthis is linux specific, it is similuar to sock raw except it accesses the DATA LINK layer.

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

    在此程序中為截獲包含所有協(xié)議的數(shù)據(jù)包,故在程序的開(kāi)始就寫(xiě)語(yǔ)句:

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

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

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

    在程序中有一個(gè)單獨(dú)的自定義函數(shù)是用來(lái)將網(wǎng)卡設(shè)置為混雜模式的。在這個(gè)模塊中主要是調(diào)用了ioctl 函數(shù),ioctl 函數(shù)是用來(lái)控制特殊文件的底層設(shè)備參數(shù)的,這些特殊文件通常是終端、套接字和接口。ioctl 函數(shù)的定義如下:

         ioctlsock SIOCGIFFLAGS, &ifr

         ioctl()函數(shù)中第一個(gè)參數(shù)是一個(gè)打開(kāi)的原始套接字描述符“sock”,第二個(gè)參數(shù)是所要執(zhí)行的請(qǐng)求操作。這里,請(qǐng)求操作是“SIOCGIFFLAGS”,意思是獲取接口“etho”的標(biāo)記符。第三個(gè)參數(shù)是接口請(qǐng)求數(shù)據(jù)結(jié)構(gòu)的地址指針,該結(jié)構(gòu)中包含了所要進(jìn)行請(qǐng)求操作的接口名稱(chēng)值。

    ⑶ 網(wǎng)絡(luò)接口設(shè)置為混雜模式以后,接著就可以接收數(shù)據(jù)包了, 進(jìn)入捕獲數(shù)據(jù)包的模塊。

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

    這個(gè)函數(shù)要做的就是接收數(shù)據(jù),并把接收到的數(shù)據(jù)放入buffer中。

    ⑷ 在成功的接收到數(shù)據(jù)包后,程序?qū)⑦M(jìn)入下一個(gè)模塊:分析數(shù)據(jù)包。

    這里要介紹一下有關(guān)的網(wǎng)絡(luò)基本知識(shí),首先介紹一下TCP/IP的分層:

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

     

     

    TCP                       

    UDP

    ICMP

    IP

    IGMP

    ARP

    硬件接口

    RARP

    用戶(hù)進(jìn)程        用戶(hù)進(jìn)程        用戶(hù)進(jìn)程        用戶(hù)進(jìn)程      應(yīng)用層    運(yùn)輸層 網(wǎng)絡(luò)層   鏈路層

       

                              媒體

    (圖一)

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

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

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

     

    posted on 2007-05-16 13:53 ???MengChuChen 閱讀(953) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): meshwork

    FeedBack:
    # re: 網(wǎng)絡(luò)嗅探軟件的設(shè)計(jì)與分析
    2007-12-11 23:57 | tigershi10
    怎么沒(méi)有代碼啊  回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久影院亚洲一区| 日韩va亚洲va欧洲va国产| 亚洲美女视频免费| 四虎免费影院ww4164h| 亚洲精品线路一在线观看| 亚洲乱码卡三乱码新区| 亚洲性色精品一区二区在线| A级毛片高清免费视频在线播放| 国产在线ts人妖免费视频| 亚洲成?v人片天堂网无码| 亚洲国产成人久久三区| 黄色网站软件app在线观看免费| 国产人妖ts在线观看免费视频| 亚洲熟妇色自偷自拍另类| 国产一级a毛一级a看免费人娇| 精品熟女少妇av免费久久| 老司机亚洲精品影视www| 亚洲av日韩精品久久久久久a| 精品国产sm捆绑最大网免费站| 亚洲人成网站在线观看播放| 国产亚洲精品91| 国内自产少妇自拍区免费| 亚洲校园春色小说| 亚洲一区免费观看| 国产亚洲精品国产| eeuss影院ss奇兵免费com| 国产黄色免费网站| 亚洲成在人天堂一区二区| 国产亚洲精品免费视频播放| 国产成人亚洲影院在线观看| 无码欧精品亚洲日韩一区| 国产精品小视频免费无限app| 国产成人免费a在线视频app| 99久久婷婷国产综合亚洲| 成年大片免费视频播放一级 | 亚洲一区二区女搞男| 日本一区二区三区免费高清在线 | 中文字幕免费在线看| 亚洲日韩在线第一页| 添bbb免费观看高清视频| 在线观看免费亚洲|