sniff理論及其框架_第1頁(yè)
sniff理論及其框架_第2頁(yè)
sniff理論及其框架_第3頁(yè)
sniff理論及其框架_第4頁(yè)
sniff理論及其框架_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Sniff網(wǎng)絡(luò)基礎(chǔ)原理和軟件實(shí)現(xiàn)技巧詳解一、 前言SNIFF真是一個(gè)古老的話題,關(guān)于在網(wǎng)絡(luò)上采用SNIFF來(lái)獲取敏感信息已經(jīng)不是什么新鮮事,也不乏很多成功的案例,那么,SNIFF究竟是什么呢?SNIFF就是嗅探器,就是竊聽(tīng)器,SNIFF靜悄悄的工作在網(wǎng)絡(luò)的底層,把你的秘密全部記錄下來(lái)??催^(guò)威爾史密斯演的《全民公敵》嗎?SNIFF就象里面精巧的竊聽(tīng)器一樣,讓你防不勝防。SNIFF可以是軟件,也可以是硬件,既然是軟件那就要分平臺(tái),有WINDOWS下的、UNXI下的等,硬件的SNIFF稱為網(wǎng)絡(luò)分析儀,反正不管硬件軟件,目標(biāo)只有一個(gè),就是獲取在網(wǎng)絡(luò)上傳輸?shù)母鞣N信息。本文僅僅介紹軟件的SNIFF。當(dāng)你舒適的坐在家里,愜意的享受網(wǎng)絡(luò)給你帶來(lái)的便利,收取你的EMAIL,購(gòu)買(mǎi)你喜歡的物品的時(shí)候,你是否會(huì)想到你的朋友給你的信件,你的信用卡帳號(hào)變成了一個(gè)又一個(gè)的信息包在網(wǎng)絡(luò)上不停的傳送著,你是否曾經(jīng)這些信息包會(huì)通過(guò)網(wǎng)絡(luò)流入別人的機(jī)器呢?你的擔(dān)憂不是沒(méi)有道理的,因?yàn)镾NIFF可以讓你的擔(dān)憂變成實(shí)實(shí)在在的危險(xiǎn)。就好象一個(gè)人躲在你身后偷看一樣。二、 網(wǎng)絡(luò)基礎(chǔ)知識(shí)”網(wǎng)絡(luò)基礎(chǔ)知識(shí)”,是不是聽(tīng)起來(lái)有點(diǎn)跑題了?雖然聽(tīng)起來(lái)這和我們要談的SNIFF沒(méi)什么關(guān)系,可是還是要說(shuō)一說(shuō)的,萬(wàn)丈高樓平地起,如果連地基都沒(méi)打好,怎么蓋樓?!如果你對(duì)網(wǎng)絡(luò)還不是十分清楚的話,最好能靜下心來(lái)好好看看,要知道,這是基礎(chǔ)的基礎(chǔ),在這里我只是簡(jiǎn)單的說(shuō)一下,免得到時(shí)候有人迷糊,詳細(xì)的最好能夠自己去找書(shū)看看。(1)TCP/IP體系結(jié)構(gòu)開(kāi)放系統(tǒng)互連(OSI)模型將網(wǎng)絡(luò)劃分為七層模型,分別用以在各層上實(shí)現(xiàn)不同的功能,這七層分別為:應(yīng)用層、表示層、會(huì)話層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層及物理層。而CP/IP體系也同樣遵循這七層標(biāo)準(zhǔn),只不過(guò)在某些OSI功能上進(jìn)行了壓縮,將表示層及會(huì)話層合并入應(yīng)用層中,所以實(shí)際上我們打交道的TCP/IP僅僅有5層而已,網(wǎng)絡(luò)上的分層結(jié)構(gòu)決定了在各層上的協(xié)議分布及功能實(shí)現(xiàn),從而決定了各層上網(wǎng)絡(luò)設(shè)備的使用。實(shí)際上很多成功的系統(tǒng)都是基于OSI模型的,如:如幀中繼、ATM、ISDN等。TCP/IP的網(wǎng)絡(luò)體系結(jié)構(gòu)|SMTP|DNS|HTTP|FTP|TELNET!應(yīng)用層|TCP|UDP|傳輸層|IP|ICMP|ARPRARP|網(wǎng)絡(luò)層|IEEE802以太網(wǎng)SLIP/PPPPDNetc|數(shù)據(jù)鏈路層|網(wǎng)卡電纜雙絞線etc|物理層從上面的圖中我們可以看出,第一層物理層和第二層數(shù)據(jù)鏈路層是 TCP/IP的基礎(chǔ),而TCP/IP本身并不十分關(guān)心低層,因?yàn)樘幵跀?shù)據(jù)鏈路層的網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序?qū)⑸蠈拥膮f(xié)議和實(shí)際的物理接口隔離開(kāi)來(lái)。網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序位于介質(zhì)訪問(wèn)子層(MAC)。網(wǎng)絡(luò)上的設(shè)備中繼器:中繼器的主要功能是終結(jié)一個(gè)網(wǎng)段的信號(hào)并在另一個(gè)網(wǎng)段再生該信號(hào),一句話,就是簡(jiǎn)單的放大而已,工作在物理層上。網(wǎng)橋:網(wǎng)橋使用MAC物理地址實(shí)現(xiàn)中繼功能,可以用來(lái)分隔網(wǎng)段或連接部分異種網(wǎng)絡(luò),工作在數(shù)據(jù)鏈路層。路由器:路由器使用網(wǎng)絡(luò)層地址(IP,X.121,E.164等),主要負(fù)責(zé)資料包的路由尋徑,也能處理物理層和數(shù)據(jù)鏈路層上的工作。網(wǎng)關(guān):主要工作在網(wǎng)絡(luò)第四層以上,主要實(shí)現(xiàn)收斂功能及協(xié)議轉(zhuǎn)換,不過(guò)很多時(shí)候網(wǎng)關(guān)都被用來(lái)描述任何網(wǎng)絡(luò)互連設(shè)備。TCP/IP與以太網(wǎng)以太網(wǎng)和TCP/IP可以說(shuō)是相互相成的,可以說(shuō)兩者的關(guān)系幾乎是密不可分,以太網(wǎng)在一二層提供物理上的聯(lián)機(jī),而TCP/IP工作在上層,使用32位的IP地址,以太網(wǎng)則使用48位的MAC地址,兩者間使用ARP和RARP協(xié)議進(jìn)行相互轉(zhuǎn)換。從我們上面TCP/IP的模型圖中可以清楚的看到兩者的關(guān)系。載波監(jiān)聽(tīng)/沖突檢測(cè)(CSMA/CD)技術(shù)被普遍的使用在以太網(wǎng)中,所謂載波監(jiān)聽(tīng)是指在以太網(wǎng)中的每個(gè)站點(diǎn)都具有同等的權(quán)利,在傳輸自己的資料時(shí),首先監(jiān)聽(tīng)信道是否空閑,如果空閑,就傳輸自己的數(shù)據(jù),如果信道被占用,就等待信道空閑。而沖突檢測(cè)則是為了防止發(fā)生兩個(gè)站點(diǎn)同時(shí)監(jiān)測(cè)到網(wǎng)絡(luò)沒(méi)有被使用時(shí)而產(chǎn)生沖突。以太網(wǎng)采用廣播機(jī)制,所有與網(wǎng)絡(luò)連接的工作站都可以看到網(wǎng)絡(luò)上傳遞的資料。為了加深你的理解,我們來(lái)看看下面的圖,一個(gè)典型的在以太網(wǎng)中客戶與服務(wù)器使用TCP/IP協(xié)議的通信。用戶進(jìn)程FTP客戶< >FTP服務(wù)器應(yīng)用層內(nèi)核中的協(xié)議棧TCP< >TCP傳輸層內(nèi)核中的協(xié)議棧IP< >IP網(wǎng)絡(luò)層以太網(wǎng)驅(qū)動(dòng)程序< >以太網(wǎng)驅(qū)動(dòng)程序數(shù)據(jù)鏈路層說(shuō)了這么多,有人煩了吧?相信我,這是基礎(chǔ)的基礎(chǔ),可以說(shuō)是說(shuō)得是很簡(jiǎn)單拉,如果需要,拿出個(gè)幾十萬(wàn)字來(lái)說(shuō)上面的內(nèi)容,我想也不嫌多,好了,讓我們進(jìn)入下一節(jié),sniff的原理。三SNIFF的原理要知道在以太網(wǎng)中,所有的通訊都是廣播的,也就是說(shuō)通常在同一個(gè)網(wǎng)段的所有網(wǎng)絡(luò)接口都可以訪問(wèn)在物理媒體上傳輸?shù)乃匈Y料,而每一個(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)卡上的MFC地址都是不同的,每個(gè)網(wǎng)卡廠家得到一段地址,然后用這段地址分配給其生產(chǎn)的每個(gè)網(wǎng)卡一個(gè)地址。在硬件地址和IP地址間使用ARP和RARP協(xié)議進(jìn)行相互轉(zhuǎn)換。在正常的情況下,一個(gè)網(wǎng)絡(luò)接口應(yīng)該只響應(yīng)這樣的兩種資料幀:與自己硬件地址相匹配的資料幀。發(fā)向所有機(jī)器的廣播資料幀。在一個(gè)實(shí)際的系統(tǒng)中,資料的收發(fā)是由網(wǎng)卡來(lái)完成的,網(wǎng)卡接收到傳輸來(lái)的資料,網(wǎng)卡內(nèi)的單片程序接收資料幀的目的MAC地址,根據(jù)計(jì)算機(jī)上的網(wǎng)卡驅(qū)動(dòng)程序設(shè)置的接收模式判斷該不該接收,認(rèn)為該接收就接收后產(chǎn)生中斷信號(hào)通知CPU,認(rèn)為不該接收就丟掉不管,所以不該接收的資料網(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)程序接收資料,驅(qū)動(dòng)程序接收資料后放入信號(hào)堆棧讓操作系統(tǒng)處理。而對(duì)于網(wǎng)卡來(lái)說(shuō)一般有四種接收模式:廣播方式:該模式下的網(wǎng)卡能夠接收網(wǎng)絡(luò)中的廣播信息。組播方式:設(shè)置在該模式下的網(wǎng)卡能夠接收組播資料。直接方式:在這種模式下,只有目的網(wǎng)卡才能接收該數(shù)據(jù)?;祀s模式:在這種模式下的網(wǎng)卡能夠接收一切通過(guò)它的資料,而不管該資料是否是傳給它的。好了,現(xiàn)在我們總結(jié)一下,首先,我們知道了在以太網(wǎng)中是基于廣播方式傳送資料的,也就是說(shuō),所有的物理信號(hào)都要經(jīng)過(guò)我的機(jī)器,再次,網(wǎng)卡可以置于一種模式叫混雜模式(promiscuous),在這種模式下工作的網(wǎng)卡能夠接收到一切通過(guò)它的資料,而不管實(shí)際上數(shù)據(jù)的目的地址是不是他。這實(shí)際上就是我們SNIFF工作的基本原理:讓網(wǎng)卡接收一切他所能接收的數(shù)據(jù)。我們來(lái)看一個(gè)簡(jiǎn)單的例子,機(jī)器A、B、C與集線器HUB相連接,集線器HUB通過(guò)路由器Router訪問(wèn)外部網(wǎng)絡(luò)。這是一個(gè)很簡(jiǎn)單也很常見(jiàn)的情況,比如說(shuō)在公司大樓里,我所在的網(wǎng)絡(luò)部辦公室里的幾臺(tái)機(jī)器通過(guò)集線器連接,而網(wǎng)絡(luò)部、開(kāi)發(fā)部、市場(chǎng)部也是同樣如此,幾個(gè)部門(mén)的集線器通過(guò)路由器連接。還是回到我們的圖一上來(lái),值得注意的一點(diǎn)是機(jī)器A、B、C使用一個(gè)普通的HUB連接的,不是用SWITCH,也不是用ROUTER,使用SWITCH和ROUTER的情況要比這復(fù)雜得多。我們假設(shè)一下機(jī)器A上的管理員為了維護(hù)機(jī)器C,使用了一個(gè)FTP命令向機(jī)器C進(jìn)行遠(yuǎn)程登陸,那么在這個(gè)用HUB連接的網(wǎng)絡(luò)里資料走向過(guò)程是這樣的。首先機(jī)器A上的管理員輸入的登陸機(jī)器C的FTP口令經(jīng)過(guò)應(yīng)用層FTP協(xié)議、傳輸層TCP協(xié)議、網(wǎng)絡(luò)層IP協(xié)議、數(shù)據(jù)鏈路層上的以太網(wǎng)驅(qū)動(dòng)程序一層一層的包裹,最后送到了物理層,我們的網(wǎng)線上。接下來(lái)資料幀送到了HUB上,現(xiàn)在由HUB向每一個(gè)接點(diǎn)廣播由機(jī)器A發(fā)出的資料幀,機(jī)器B接收到由HUB廣播發(fā)出的資料幀,并檢查在資料幀中的地址是否和自己的地址相匹配,發(fā)現(xiàn)不是發(fā)向自己的后把這資料幀丟棄,不予理睬。而機(jī)器C也接收到了資料幀,并在比較之后發(fā)現(xiàn)是發(fā)現(xiàn)自己的,接下來(lái)他就對(duì)這數(shù)據(jù)幀進(jìn)行分析處理。在上面這個(gè)簡(jiǎn)單的例子中,機(jī)器B上的管理員如果很好奇,他很想知道究竟登陸機(jī)器C上FTP口令是什么?那么他要做的很簡(jiǎn)單,僅僅需要把自己機(jī)器上的網(wǎng)卡置于混雜模式,并對(duì)接收到的資料幀進(jìn)行分析,從而找到包含在資料幀中的口令信息。四做一個(gè)自己的sniff在上一節(jié)里,我們已經(jīng)知道了SNIFF的基本原理是怎么一回事,這一節(jié)我們來(lái)親自動(dòng)手做一個(gè)自己的sniff,畢竟,用程序代碼來(lái)說(shuō)話比什么都要來(lái)得真實(shí),也容易加深理解?;仡^想一想我們上面說(shuō)的原理,我們要做的事情有幾件:1.把網(wǎng)卡置于混雜模式。2.捕獲數(shù)據(jù)包。3.分析資料包。注:下面的源代碼取至ChadRenfro的<<BasicPacket-SnifferConstructionfromtheGroundUp>>一文中3eeeeeeeeeeeeeeeasssssserr^ ?rrc/************************】cpsnitt2.c********************/#include#include#include#include#include#include#include#include#include"headers.h"#defineINTERFACE"eth0"/’Prototypearea*/10.intOpen_Raw_Socket(void);Set_Promisc(char^interface,intsock);12.intmain()(13.intsock,bytes_recieved,fromlen;charbuffer[65535];structsockaddr_infrom;structip*ip;structtcp*tcp;sock=Open_Raw_Socket();Set_Promisc(INTERFACE,sock);while(1){fromlen=sizeoffrom;bytes_recieved=recvfrom(sock,buffer,sizeofbuffer,0,(structsockaddr*)&from,&fromlen);printf("\nBytesreceived:::%5d\n",bytes_recieved);printf("Sourceaddress:::%s\n”,inet_ntoa(from.sin_addr));ip=(structip*)buffer;/*SeeifthisisaTCPpacket*/if(ip->ip_protocol==6){printf("IPheaderlength:::%d\n",ip->ip_length);printf("Protocol:::%d\n",ip->ip_protocol);tcp=(structtcp*)(buffer+(4*ip->ip_length));printf("Sourceport:::%d\n",ntohs(tcp->tcp_source_port));printf("Destport:::%d\n",ntohs(tcp->tcp_dest_port));TOC\o"1-5"\h\z}}}37.intOpen_Raw_Socket(){intsock;if((sock=socket(AF_INET,SOCK_RAW,IPPROTO_TCP))<0){/*Thenthesocketwasnotcreatedproperlyandmustdie*/perror("Therawsocketwasnotcreated");exit(0);};return(sock);}45.intSet_Promisc(char*interface,intsock){structifreqifr;strncpy(ifr.ifr_name,interface,strnlen(interface)+1);if((ioctl(sock,SIOCGIFFLAGS,&ifr)==-1)){/*Couldnotretrieveflagsfortheinterface*/perror("Couldnotretriveflagsfortheinterface");exit(0);}printf("Theinterfaceis:::%s\n",interface);perror("Retrievedflagsfrominterfacesuccessfully");ifr.ifr_flags|=IFF_PROMISC;if(ioctl(sock,SIOCSIFFLAGS,&ifr)==-1){/*Couldnotsettheflagsontheinterface*/perror("CouldnotsetthePROMISCflag:");exit(0);}printf("Settinginterface:::%s:::topromisc",interface);return(0);}/***********************EOF**********************************/上面這段程序中有很詳細(xì)的注解,不過(guò)我想還是有必要說(shuō)一說(shuō),首先第10行--intOpen_Raw_Socket(void);是我們的自定義函數(shù),具體內(nèi)容如下:37.intOpen_Raw_Socket(){intsock;if((sock=socket(AF_INET,SOCK_RAW,IPPROTO_TCP))<0){/*Thenthesocketwasnotcreatedproperlyandmustdie*/perror("Therawsocketwasnotcreated");exit(0);};return(sock);}第39行if((sock=socket(AF_INET,SOCK_RAW,IPPROTO_TCP))<0){這里我們調(diào)用了socket函數(shù),使創(chuàng)建了了一個(gè)原始套接口,使之收到TCP/IP信息包。接下來(lái)第11行-intSet_Promisc(char*interface,intsock),這也是我們的自定義函數(shù),目的是把網(wǎng)卡置于混雜模式,具體內(nèi)容如下:45.intSet_Promisc(char*interface,intsock){structifreqifr;strncpy(ifr.ifr_name,interface,strnlen(interface)+1);if((ioctl(sock,SIOCGIFFLAGS,&ifr)==-1)){/*Couldnotretrieveflagsfortheinterface*/perror("Couldnotretriveflagsfortheinterface");exit(0);}printf("Theinterfaceis:::%s\n",interface);perror("Retrievedflagsfrominterfacesuccessfully");ifr.ifr_flags|=IFF_PROMISC;if(ioctl(sock,SIOCSIFFLAGS,&ifr)==-1){/*Couldnotsettheflagsontheinterface*/perror("CouldnotsetthePROMISCflag:");exit(0);}printf("Settinginterface:::%s:::topromisc",interface);return(0);}首先structifreqifr;定一了一個(gè)ifrreg的結(jié)構(gòu)ifr,接下來(lái)strncpy(ifr.ifr_name,interface,strnlen(interface)+1);,就是把我們網(wǎng)絡(luò)設(shè)備的名字填充到ifr結(jié)構(gòu)中,在這里#defineINTERFACE"eth0",讓我們?cè)偻驴矗琲octl(sock,SIOCGIFFLAGS,&ifr),SIOCGIFFLAGS請(qǐng)求表示需要獲取接口標(biāo)志,現(xiàn)在到了第54行,在我們成功的獲取接口標(biāo)志后把他設(shè)置成混雜模式,ifr.ifr_flags1=IFF_PROMISC;ioctl(sock,SIOCSIFFLAGS,&ifr)。OK,現(xiàn)在我們所說(shuō)的第一步已經(jīng)完成 把網(wǎng)卡置于混雜模式。現(xiàn)在進(jìn)入第二步,捕獲資料包。從第20行開(kāi)始,我們進(jìn)入了一個(gè)死循環(huán),while(1),在第24彳亍,recvfrom(sock,buffer,sizeofbuffer,0,(structsockaddr*)&from,&fromlen),這個(gè)函數(shù)要做的就是接收數(shù)據(jù),冰把接收到的資料放入buffer中。就是這么簡(jiǎn)單,已經(jīng)完成了我們要捕獲資料包的任務(wù)。到了第三步,分析資料包。27行,ip=(structip*)buffer,使我們?cè)陬^檔中的IP結(jié)構(gòu)對(duì)應(yīng)于所接收到的資料,接下來(lái)判斷在網(wǎng)絡(luò)層中是否使用的是TCP協(xié)議,if(ip->ip_protocol==6),如果答案是,tcp信息包從整個(gè)IP/TCP包buffer+(4*ip->ip_length)地址處開(kāi)始,所以31行tcp=(structtcp*)(buffer+(4*ip->ip_length)),然后對(duì)應(yīng)結(jié)構(gòu)把你所需要的信息輸出。/*1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1* 111"*1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1*//*************************neaders.n**************************//’structureofanipheader*/structip{unsignedintip_length:4;/*little-endian*/unsignedintip_version:4;unsignedcharip_tos;unsignedshortip_total_length;unsignedshortip_id;unsignedshortip_flags;unsignedcharip_ttl;unsignedcharip_protocol;unsignedshortip_cksum;unsignedintip_source;unsignedintip_dest;};/*StructureofaTCPheader*/structtcp(unsignedshorttcp_source_port;unsignedshorttcp_dest_port;unsignedinttcp_seqno;unsignedinttcp_ackno;unsignedinttcp_res1:4,/*little-endian*/tcp_hlen:4,tcp_fin:1,tcp_syn:1,tcp_rst:1,tcp_psh:1,tcp_ack:1,tcp_urg:1,tcp_res2:2;unsignedshorttcp_winsize;unsignedshorttcp_cksum;unsignedshorttcp_urgent;};/*********************EOF***********************************/從上面的分析我們可以清楚的認(rèn)識(shí)到,認(rèn)識(shí)一個(gè)SNIFF需要對(duì)TCP/IP協(xié)議有著詳細(xì)的了解,否則你根本無(wú)法找到你需要的信息。有了上面的基礎(chǔ),你可以自己來(lái)做一個(gè)你需要的SNIFF了。五常用的SNIFF很少有原因會(huì)讓你自己親自動(dòng)手來(lái)做一個(gè)自己的SNIFF,除非你是想了解他的原理,或者是其它一些特別的原因,比如你要在某個(gè)特殊的環(huán)境攔截一些特殊的資料包。下面我們就來(lái)看看一些在網(wǎng)絡(luò)上經(jīng)常使用的SNIFFowindows環(huán)境下windows環(huán)境下當(dāng)然是大名鼎鼎的netxray以及snifferpro了,實(shí)際上很多人都是用他在windows環(huán)境下抓包來(lái)分析,不過(guò)我想很少有人笨到去在別人的機(jī)器上安裝一個(gè)圖形接口的SNIFF,除非他和管理員很熟悉 netxray的使用就不多說(shuō)了,反正windows下的東西就是click,click,click,非常的方便用戶。UNUX環(huán)境下UNUX環(huán)境下的sniff可以說(shuō)是百花齊放,一抓就是一大把,如sniffit,snoop,tcpdump,dsniff等都是比較常見(jiàn)的,他們都有一個(gè)好處就是發(fā)布源代碼,可以讓你研究,當(dāng)然也都是免費(fèi)的。sniffitsniffit可以運(yùn)行在Solaris>SGI和Linux等平臺(tái)上,由LawrenceBerkeleyLaboratory實(shí)驗(yàn)室開(kāi)發(fā)的一個(gè)免費(fèi)的網(wǎng)絡(luò)監(jiān)聽(tīng)軟件。最近 Sniffit0.3.7也推出了NT版本,并也支持WINDOWS2000.使用方法:-v顯示版本信息-a以ASCII形式將監(jiān)聽(tīng)的結(jié)果輸出。-A在進(jìn)行記錄時(shí),所有不可打印的字符都用代替-b等同于同時(shí)使用參數(shù)-t&-s。-d將監(jiān)聽(tīng)所得內(nèi)容以十六進(jìn)制方式顯示在當(dāng)前終端-p記錄連接到的包,0為所有埠。缺省為0。-Pprotocol選擇要檢查的協(xié)議,缺省為T(mén)CP??赡艿倪x擇有IP、TCP、ICMP、UDP和他們的組合。-s指定sniffer檢查從發(fā)送的資料包。-t指定sniffer檢查發(fā)送到的資料包。-i進(jìn)入交互模式-l設(shè)定數(shù)據(jù)包大小,default是300字節(jié)注:參數(shù)可以用@來(lái)表示一個(gè)IP范圍,比如-t192.168.@-t和-s只適用于TCP/UDP數(shù)據(jù)包,對(duì)于ICMP和IP也進(jìn)行解釋。但如果只選擇了-p參數(shù),則只用于TCP和UDP包。舉例說(shuō)明:#sniffit-a-p21-txxx.xxx.xxx.xxx監(jiān)聽(tīng)流向機(jī)器xxx.xxx.xxx.xxx的21端口(FTP)的信息,并以ASCII顯示#sniffit-d-p23-bxxx.xxx.xxx.xxx監(jiān)聽(tīng)所有流出或流入機(jī)器xxx.xxx.xxx.xxx的23端口(telnet)的信息,并以16進(jìn)制顯示你可以在這里找到Usniffithttp://reptile.rug.ac.be/~coder/sniffit/sniffit.htmlsnoopsnoop默認(rèn)情況安裝在Solaris下,是一個(gè)用于顯示網(wǎng)絡(luò)交通的程序,不過(guò)SNIFF是把雙刃劍,既然管理員能用他來(lái)監(jiān)視自己的網(wǎng)絡(luò),當(dāng)然一個(gè)心懷惡意的入侵者也可以用他來(lái)SNIFF自己感興趣的內(nèi)容。值得一提的是,SNOOP被發(fā)現(xiàn)存在一個(gè)緩沖區(qū)溢出漏洞,當(dāng)以導(dǎo)致入侵者以運(yùn)行snoop(通常為root)的身份遠(yuǎn)程進(jìn)入系統(tǒng)。這是題外話,暫且就此打住。使用方法:[-a]#Listentopacketsonaudio[-ddevice]#settabletole?,ie?,bf?,tr?[-ssnaplen]#Truncatepackets[-ccount]#Quitaftercountpackets[-P]#TurnOFFpromiscuousmode[-D]#Reportdroppedpackets[-S]#Reportpacketsize[-ifile]#Readpreviouslycapturedpackets[-ofile]#Capturepacketsinfile[-nfile]#Loadaddr-to-nametablefromfile[-N]#Createaddr-to-nametable[-trlald]#Time:Relative,AbsoluteorDelta[-v]#Verbosepacketdisplay[-V]#Showallsummarylines[-pfirst[,last]]#Selectpacket(s)todisplay[-xoffset[,length]]#Hexdumpfromoffsetforlength[-C]#Printpacketfiltercode例如:#snoop-osavedAB監(jiān)聽(tīng)機(jī)器A與B的談話,并把內(nèi)容存儲(chǔ)于檔saved中tcpdumptcpdmp也算是一個(gè)很有名氣的網(wǎng)絡(luò)監(jiān)聽(tīng)軟件,F(xiàn)REEBSD還把他附帶在了系統(tǒng)上,是一個(gè)被很多UNIX高手認(rèn)為是一個(gè)專(zhuān)業(yè)的網(wǎng)絡(luò)管理工具。使用方法:tcpdump采用命令行方式,它的命令格式為:tcpdump[-adeflnNGpqStvx][-c數(shù)量][-F文件名][-i網(wǎng)絡(luò)接口][-r文件名][-ssnaplen][-T類(lèi)型][-w文件名][表達(dá)式]tcpdump的選項(xiàng)介紹-a將網(wǎng)絡(luò)地址和廣播地址轉(zhuǎn)變成名字;-d將匹配信息包的代碼以人們能夠理解的匯編格式給出;-dd將匹配信息包的代碼以c語(yǔ)言程序段的格式給出;-ddd將匹配信息包的代碼以十進(jìn)制的形式給出;-e在輸出行打印出數(shù)據(jù)鏈路層的頭部信息;-f將外部的Internet地址以數(shù)字的形式打印出來(lái);-1使標(biāo)準(zhǔn)輸出變?yōu)榫彌_行形式;-n不把網(wǎng)絡(luò)地址轉(zhuǎn)換成名字;-t在輸出的每一行不打印時(shí)間戳;-v輸出一個(gè)稍微詳細(xì)的信息,例如在ip包中可以包括ttl和服務(wù)類(lèi)型的信息;-vv輸出詳細(xì)的報(bào)文信息;-c在收到指定的包的數(shù)目后,tcpdump就會(huì)停止;-F從指定的文件中讀取表達(dá)式,忽略其它的表達(dá)式;-i指定監(jiān)聽(tīng)的網(wǎng)絡(luò)接口;-r從指定的檔中讀取包(這些包一般通過(guò)-w選項(xiàng)產(chǎn)生);-w直接將包寫(xiě)入檔中,并不分析和打印出來(lái);-T將監(jiān)聽(tīng)到的包直接解釋為指定的類(lèi)型的報(bào)文,常見(jiàn)的類(lèi)型有rpc和snmptcpdump的表達(dá)式介紹表達(dá)式是一個(gè)正則表達(dá)式,tcpdump利用它作為過(guò)濾報(bào)文的條件,如果一個(gè)報(bào)文滿足表達(dá)式的條件,則這個(gè)報(bào)文將會(huì)被捕獲。如果沒(méi)有給出任何條件,則網(wǎng)絡(luò)上所有的信息包將會(huì)被截獲。在表達(dá)式中一般如下幾種類(lèi)型的關(guān)鍵詞,一種是關(guān)于類(lèi)型的關(guān)鍵詞,主要包括host,net,port,例如host,指明是一臺(tái)主機(jī),net指明是一個(gè)網(wǎng)絡(luò)地址,port23指明埠號(hào)是23。如果沒(méi)有指定類(lèi)型,缺省的類(lèi)型是host.第二種是確定傳輸方向的關(guān)鍵詞,主要包括src,dst,dstorsrc,dstandsrc,這些關(guān)鍵字指明了傳輸?shù)姆较颉Ee例說(shuō)明,src,指明ip包中源地址是,dstnet指明目的網(wǎng)絡(luò)地址是。如果沒(méi)有指明方向關(guān)鍵詞,則缺省是srcordst關(guān)鍵詞。第三種是協(xié)議的關(guān)鍵詞,主要包括fddi,ip,arp,rarp,tcp,udp等類(lèi)型。Fddi指明是在FDDI(分布式光纖資料接口網(wǎng)絡(luò))上的特定的網(wǎng)絡(luò)協(xié)議,實(shí)際上它是"ether"的別名,fddi和ether具有類(lèi)似的源地址和目的地址,所以可以將fddi協(xié)議包當(dāng)作ether的包進(jìn)行處理和分析。其它的幾個(gè)關(guān)鍵詞就是指明了監(jiān)聽(tīng)的包的協(xié)議內(nèi)容。如果沒(méi)有指定任何協(xié)議,則tcpdump將會(huì)監(jiān)聽(tīng)所有協(xié)議的信息包。除了這三種類(lèi)型的關(guān)鍵詞之外,其它重要的關(guān)鍵詞如下:gateway,broadcast,1ess,greater,還有三種邏輯運(yùn)算,取非運(yùn)算是 ''not''''!'',與運(yùn)算是''and'',''&&'';或運(yùn)算是''or'',''11''。舉例使用:#tcpdumphostAAA.BBB.CCC.DDD將監(jiān)聽(tīng)I(yíng)P地址為AAA.BBB.CCC.DDD的機(jī)器的通話#tcpdumptcpport23hostAAA.BBB.CCC.DDD將監(jiān)聽(tīng)I(yíng)P地址為AAA.BBB.CCC.DDD的機(jī)器的23埠的通話dsniff之所以要談?wù)刣sniff,是因?yàn)樗粌H僅是一個(gè)sniff,在他的整個(gè)套件包中,包含了很多其它有用的工具,如arpspoof,dnsspoof,macof,tcpkill等等,SNIFF的手段更加的多樣和復(fù)雜化。dsniff是由DugSong開(kāi)發(fā)的你可以在他的主頁(yè)上找到這個(gè)工具。 目前dsniff支持OpenBSD(i386),RedhatLinux(i386),和Solaris(sparc).并且在FreeBSD,DebianLinux,SlackwareLinux,AIX和HP-UX上也能運(yùn)轉(zhuǎn)得很好。但是dsniff需要幾個(gè)其它的第三方軟件進(jìn)行支持,他們分別是,BerkeleyDB,OpenSSL,libpcap,libnet,libnids。如果條件允許的話,你最好能夠親自讀一讀dsniff的源代碼,你可以在/~dugsong/找到^dsniff。六深入sniff單純的sniff的功能始終是局限的,所以在大多數(shù)的情況下,sniff往往和其它手段結(jié)合起來(lái)使用,sniff和spoof已及其它技術(shù)手段結(jié)合在一起對(duì)網(wǎng)絡(luò)構(gòu)成的危害是巨大的。單純的sniff好比缺了一只腿,無(wú)法發(fā)揮大的作用,例如在sniff原理一節(jié)中我們討論的例子里,我一再的強(qiáng)調(diào)我們使用的是一個(gè)普通的HUB進(jìn)行連接是有原因的,如果我們將HUB用一個(gè)switch代替,那情況就要復(fù)雜一些了,我們的機(jī)器A、B、C與Switch相連接,而Switch通過(guò)路由器Router訪問(wèn)外部網(wǎng)絡(luò)。我們先來(lái)了解Switch的工作原理:在HUB只是簡(jiǎn)單地把所接收到的信號(hào)通過(guò)所有端口(除了信號(hào)來(lái)的那個(gè)口)重復(fù)發(fā)送出去不同,而的Switch卻可以檢查每一個(gè)收到的資料包,并對(duì)資料包進(jìn)行相應(yīng)的處理。在Switch內(nèi)保存著每一個(gè)網(wǎng)段上所有節(jié)點(diǎn)的物理地址,只允許必要的網(wǎng)絡(luò)流量通過(guò)Switcho舉例來(lái)說(shuō),當(dāng)Switch接收到一個(gè)資料包之后,根據(jù)自身保存的網(wǎng)絡(luò)地址表檢查資料包內(nèi)包含的發(fā)送和接收方地址。如果接收方位于發(fā)送方網(wǎng)段,該資料包就會(huì)被Switch丟棄,不能通過(guò)交換機(jī)傳送到其它的網(wǎng)段;如果接收方和發(fā)送方位于兩個(gè)不同的網(wǎng)段,該資料包就會(huì)被Switch轉(zhuǎn)發(fā)到目標(biāo)網(wǎng)段。這樣,通過(guò)交換機(jī)的過(guò)濾和轉(zhuǎn)發(fā),可以有效避免網(wǎng)絡(luò)廣播風(fēng)暴,減少誤包和錯(cuò)包的出現(xiàn)。順便說(shuō)一句,現(xiàn)在Switch和HUB的價(jià)格相去無(wú)幾,所以hub正逐漸被網(wǎng)絡(luò)交換機(jī)取代?,F(xiàn)在回到我們的例子中來(lái),我們假設(shè)機(jī)器A上的管理員為了維護(hù)機(jī)器C,使用了一個(gè)FTP命令向機(jī)器C進(jìn)行遠(yuǎn)程登陸,那么在這里,資料是這樣走的:首先機(jī)器A上的管理員輸入的登陸機(jī)器C的FTP口令經(jīng)過(guò)應(yīng)用層FTP協(xié)議、傳輸層TCP協(xié)議、網(wǎng)絡(luò)層IP協(xié)議、數(shù)據(jù)鏈路層上的以太網(wǎng)驅(qū)動(dòng)程序一層一層的包裹,最后送到了物理層,我們的網(wǎng)線上。接下來(lái)資料幀送到了Switch上,而Switch檢查資料幀中的目的地址,并在他自身保存的網(wǎng)絡(luò)地址表中知道了他應(yīng)該把這資料幀發(fā)到機(jī)器C那里,于是,接下來(lái)機(jī)器C接收到了從A發(fā)來(lái)的信息,發(fā)現(xiàn)他是發(fā)給自己的信息,于是進(jìn)行分析處理。OK,現(xiàn)在我們機(jī)器B上的管理員的好奇心只能深深的埋藏在心里了,因?yàn)橘Y料包根本就沒(méi)有經(jīng)過(guò)他,就算他把自己的網(wǎng)卡設(shè)置成混雜模式也是有力無(wú)處使。在了解在一個(gè)Switch環(huán)境下原理后,我們結(jié)合一些手段去設(shè)法sniff,是的,我們可以做到這一點(diǎn),有許多的手段可以讓管理員B滿足他的好奇心,在下面我會(huì)提出幾個(gè)辦法,當(dāng)然只是其中的一些辦法而已。1ARPSpoof在基于IP通信的內(nèi)部網(wǎng)中,我們可以使用ARPSpoof的手段,了解什么是ARPSpoof的前提你先要明白一下什么是ARP和RARP協(xié)議,什么是MAC地址,什么又是IP地址。ARP協(xié)議是地址轉(zhuǎn)換協(xié)議,RARP被稱為反向地址轉(zhuǎn)換協(xié)議,他們負(fù)責(zé)把IP地址和MAC地址進(jìn)行相互轉(zhuǎn)換對(duì)應(yīng)。ARPSpoof攻擊的根本原理是因?yàn)橛?jì)算機(jī)中維護(hù)著一個(gè)ARP高速緩存,并且這個(gè)ARP高速緩存是隨著計(jì)算機(jī)不斷的發(fā)出ARP請(qǐng)求和收到ARP響應(yīng)而不斷的更新的,ARP高速緩存的目的是把機(jī)器的IP地址和MAC地址相互映像。你可以使用arp命令來(lái)查看你自己的ARP高速緩存?,F(xiàn)在設(shè)想一下,一個(gè)Switch工作在數(shù)據(jù)鏈路層,他根據(jù)MAC地址來(lái)轉(zhuǎn)發(fā)他所接收的資料包,而計(jì)算器維護(hù)的ARP高速緩存卻是動(dòng)態(tài)的……你想到什么了嗎?為了加深理解,現(xiàn)在給我們的機(jī)器編上號(hào),機(jī)器 A:IP地址為,MAC地址為20-53-52-43-00-01,機(jī)器B:IP地址為,MAC地址為20-53-52-43-00-02,機(jī)器C:IP地址為,MAC地址為20-53-52-43-00-03?,F(xiàn)在機(jī)器B上的管理員是個(gè)聰明的家伙,他向機(jī)器A發(fā)出一個(gè)ARPReply(協(xié)議沒(méi)有規(guī)定一定要等ARPRequest出現(xiàn)才能發(fā)送ARPReply,也沒(méi)有規(guī)定一定要發(fā)送過(guò)ARPRequest才能接收ARPReply),其中的目的IP地址為,目的MAC地址為20-53-52-43-00-01,而源IP地址為,源MAC地址為20-53-52-43-00-02,好了,現(xiàn)在機(jī)器A更新了他的ARP高速緩存,并相信了IP地址為的機(jī)器的MAC地址是20-53-52-43-00-02。當(dāng)機(jī)器A上的管理員發(fā)出一條FTP命令時(shí)---ftp,資料包被送到了Switch,Switch查看資料包中的目的地址,發(fā)現(xiàn)MAC為20-53-52-43-00-02,于是,他把資料包發(fā)到了機(jī)器B上。再設(shè)想一下,如果不想影響A和C之間的通信該怎么辦?你可以同時(shí)欺騙他們雙方,來(lái)一個(gè)man-in-middle。當(dāng)然,在實(shí)際的操作中你還需要考慮到一些其它的事,比如某些操作系統(tǒng)在會(huì)主動(dòng)的發(fā)送ARP請(qǐng)求包來(lái)更新相應(yīng)的ARP入口等。MACFlooding在上面我們?cè)?jīng)提到過(guò),Switch之所以能夠由資料包中目的MAC地址判斷出他應(yīng)該把資料包發(fā)送到那一個(gè)埠上是根據(jù)他本身維護(hù)的一張地址表。這張地址表可能是動(dòng)態(tài)的也可能是靜態(tài)的,這要看Switch的廠商和Switch的型號(hào)來(lái)定,對(duì)于某些Switch來(lái)說(shuō),他維護(hù)的是一張動(dòng)態(tài)的地址表,并且地址表的大小是有上限的,比如3comSuperstackSwitch3300(3c16981Hardwarev.1Softwarev.2.10)就是這樣一種Switch,我們可以通過(guò)發(fā)送大量錯(cuò)誤的地址信息而使SWITCH維護(hù)的地址表”溢出”,從而使他變成廣播模式來(lái)達(dá)到我們要sniff機(jī)器A與機(jī)器C之間的通信的目的。FaketheMACaddress偽造MAC地址也是一個(gè)常用的辦法,不過(guò)這要基于你網(wǎng)絡(luò)內(nèi)的Switch是動(dòng)態(tài)更新其地址表,這實(shí)際上和我們上面說(shuō)到的ARPSpoof有些類(lèi)似,只不過(guò)現(xiàn)在你是想要Switch相信你,而不是要機(jī)器A相信你。因?yàn)镾witch是動(dòng)態(tài)更新其地址表的,你要做的事情就是告訴Switch:HI,我是機(jī)器C。換成技術(shù)上的問(wèn)題你只不過(guò)需要向Switch發(fā)送偽造過(guò)的資料包,其中源MAC地址對(duì)應(yīng)的是機(jī)器C的MAC地址,現(xiàn)在Switch就把機(jī)器C和你的埠對(duì)應(yīng)起來(lái)了。不過(guò)其中存在一個(gè)問(wèn)題,現(xiàn)在機(jī)器C也會(huì)說(shuō)了:HI,Switch老大,我才是機(jī)器C呢!,現(xiàn)在你該怎么辦?切,還用問(wèn)!讓他說(shuō)不了話就可以了,DOS還是其它什么,隨便你了……ICMPRouterAdvertisements這主要是由ICMP路由器發(fā)現(xiàn)協(xié)議(IRDP)的缺陷引起的,在Windows95、98、2000及SunOS、Solaris2.6等系統(tǒng)中,都使用了IRDP協(xié)議,SunOS系統(tǒng)只在某些特定的情況下使用該協(xié)議,而Windows95,Windows95b,Windows98,Windows98se,和Windows2000都是默認(rèn)的使用IRDP協(xié)議。IRDP協(xié)議的主要內(nèi)容就是告訴人們誰(shuí)是路由器,設(shè)想一下,一個(gè)HACK利用IRDP宣稱自己是路由器的情況會(huì)有多么的糟糕!所有相信HACK的請(qǐng)求的機(jī)器把他們所有的資料都發(fā)送給HACK所控制的機(jī)器.........ICMPRedirect所謂ICMP復(fù)位向,就是指告訴機(jī)器向另一個(gè)不同的路由發(fā)送他的資料包,ICMP復(fù)位向通常使用在這樣的場(chǎng)合下,假設(shè)A與B兩臺(tái)機(jī)器分別位于同一個(gè)物理網(wǎng)段內(nèi)的兩個(gè)邏輯子網(wǎng)內(nèi),而A和B都不知道這一點(diǎn),只有路由器知道,當(dāng)A發(fā)送給B的資料到達(dá)路由器的時(shí)候,路由器會(huì)向A送一個(gè)ICMP復(fù)位向包裹,告訴A:HI,別再送資料給我轉(zhuǎn)交了,你就直接送到B那里就可以了。設(shè)想一下,一個(gè)hack完全可以利用這一點(diǎn),使得A發(fā)送給B的資料經(jīng)過(guò)他。上面提到的這些方法只不是其中的一些,為了配合sniff能夠工作得更有效率,還有其它許多的辦法,其實(shí)sniff的目的說(shuō)穿了只有一個(gè),就是抓包,從抓包這個(gè)概念上引伸下去,所有為了能夠抓到網(wǎng)絡(luò)上的信息包而采用的技術(shù)都可以歸入sniff,單純的sniff是沒(méi)有什么效率的。你還能想到什么嗎?進(jìn)攻路由器,在路由器上放置sniff......,在系統(tǒng)內(nèi)核中植入sniff 寺寺。七如何防止SNIFF防止sniff最有效的手段就是進(jìn)行合理的網(wǎng)絡(luò)分段,并在網(wǎng)絡(luò)中使用交換機(jī)和網(wǎng)橋,在理想的情況下使每一臺(tái)機(jī)器都擁有自己的網(wǎng)絡(luò)段,當(dāng)然這會(huì)使你的網(wǎng)絡(luò)建設(shè)費(fèi)用增加很多,所以你可以盡量使相互信任的機(jī)器屬于同一個(gè)網(wǎng)段,使他們互相之間不必?fù)?dān)心sniff的存在。并在網(wǎng)段于網(wǎng)段間進(jìn)行硬件屏障。你也可以使用加密技術(shù)對(duì)你在網(wǎng)絡(luò)中傳送的敏感資料如戶ID或口令,你的銀行帳號(hào),商業(yè)機(jī)密等進(jìn)行加密,你可以選用SSH等加密手段。為了防止ARP欺騙,你可以使用永久的ARP緩存條目,反正上面的攻擊手段和原理你也看了,你就反過(guò)來(lái)想想該怎么辦好了。不過(guò)有盾必有矛,平時(shí)的安全意識(shí)才是最重要的。(注:以下關(guān)于AntiSniff的介紹取至backend翻譯整理的L0phtAntiSniff技術(shù)文檔一文)當(dāng)你做做層層保護(hù)后,你還是懷疑自己的網(wǎng)絡(luò)上存在sniff該怎么辦?L0pht小組為了探測(cè)sniff專(zhuān)門(mén)發(fā)布了一個(gè)軟件AntiSniff,當(dāng)然這個(gè)軟件不是免費(fèi)的:),AntiSniff工具用于檢測(cè)局域網(wǎng)中是否有機(jī)器處于混雜模式, AntiSniffVersion1.x被設(shè)計(jì)為運(yùn)行在以太網(wǎng)的Windows系統(tǒng)中,提供了簡(jiǎn)單易用的圖形用戶接口,AntiSniffVersion1.x主要工作在非交換環(huán)境下的本地網(wǎng)段中,如果運(yùn)行在交換環(huán)境下其功能將大打折扣。AntiSniffVer2.0將不但能在本地網(wǎng)段中,而且能夠穿過(guò)路由器和交換機(jī)進(jìn)行工作。?操作系統(tǒng)類(lèi)特殊測(cè)試Linux內(nèi)核測(cè)試舊版本的Linux內(nèi)核存在一個(gè)奇怪的特性,可被用于確定機(jī)器是否處于混雜模式。在正常情形下,網(wǎng)卡會(huì)過(guò)濾和丟棄那些目標(biāo)地址不是本機(jī)MAC地址或以太網(wǎng)廣播地址的數(shù)據(jù)包。如果資料包的目標(biāo)地址為本機(jī)以太網(wǎng)地址或廣播地址,將傳送給內(nèi)核進(jìn)行處理,因?yàn)槠湔J(rèn)為該以太網(wǎng)數(shù)據(jù)幀包含了本機(jī)的正確IP地址或該網(wǎng)絡(luò)廣播地址。如果網(wǎng)卡處于混雜模式,則每個(gè)資料包都會(huì)傳遞給操作系統(tǒng)進(jìn)行分析或處理。許多版本的Linux內(nèi)核只檢查資料包中的IP地址以確定是否存放到IP堆棧中進(jìn)行處理。為了利用這一點(diǎn),AntiSniff構(gòu)造一個(gè)無(wú)效以太網(wǎng)地址而IP地址有效的數(shù)據(jù)包。對(duì)于使用了這些內(nèi)核版本和處于混雜模式的Linux系統(tǒng),由于只檢查到IP地址有效而將其接收并存放到相應(yīng)堆棧中。通過(guò)在這個(gè)偽造的以太網(wǎng)資料幀中構(gòu)造一個(gè)ICMPECHO請(qǐng)求,這些系統(tǒng)會(huì)返回響應(yīng)包(如果處于混雜模式)或忽略(如果不處于混雜模式),從而暴露其工作模式。當(dāng)偽造的以太網(wǎng)資料幀中的IP地址設(shè)置為網(wǎng)絡(luò)廣播地址時(shí)這個(gè)測(cè)試非常有效。AntiSniff的使用者可以修改偽造的以太網(wǎng)址,缺省值為66:66:66:66:66:66。NetBSD許多NetBSD內(nèi)核具有與上述Linux內(nèi)核相同的特性,不過(guò)偽造以太網(wǎng)資料幀中的IP地址必須設(shè)為廣播地址。Windows95/98/NT根據(jù)對(duì)網(wǎng)絡(luò)驅(qū)動(dòng)程序頭文件的了解,可以知道當(dāng)處于混雜模式時(shí),Microsoft的操作系統(tǒng)會(huì)確切地檢查每個(gè)包的以太網(wǎng)地址。如果與網(wǎng)卡的以太網(wǎng)地址匹配,將作為目標(biāo)IP地址為本機(jī)的資料包存放到相應(yīng)堆棧中處理??梢员焕玫囊稽c(diǎn)是系統(tǒng)對(duì)以太網(wǎng)廣播包的分析。在正常情形下,例如機(jī)器工作在非混雜模式下,網(wǎng)卡只向系統(tǒng)內(nèi)核傳輸那些目標(biāo)以太網(wǎng)址與其匹配或?yàn)橐蕴W(wǎng)廣播地址(ff:ff:ff:ff:ff:ff)的數(shù)據(jù)包。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論