解析ARP數(shù)據(jù)包軟件設(shè)計(jì)與實(shí)現(xiàn)_第1頁
解析ARP數(shù)據(jù)包軟件設(shè)計(jì)與實(shí)現(xiàn)_第2頁
解析ARP數(shù)據(jù)包軟件設(shè)計(jì)與實(shí)現(xiàn)_第3頁
解析ARP數(shù)據(jù)包軟件設(shè)計(jì)與實(shí)現(xiàn)_第4頁
解析ARP數(shù)據(jù)包軟件設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、吉首大學(xué) 解析ARP數(shù)據(jù)包軟件的設(shè)計(jì)和實(shí)現(xiàn) JISHOUUNIVERSITY專業(yè)課課程論文題 目:解析ARP數(shù)據(jù)包作 者:學(xué) 號(hào):所屬學(xué)院:信息科學(xué)與工程學(xué)院專業(yè)年級(jí):總 評(píng) 分:完成時(shí)間:吉首大學(xué)信息科學(xué)與工程學(xué)院 解析ARP數(shù)據(jù)包軟件的設(shè)計(jì)和實(shí)現(xiàn) (吉首大學(xué)信息科學(xué)與工程學(xué)院,湖南 吉首 416000)摘 要本文首先介紹了地址解析協(xié)議ARP的概念,詳細(xì)說明了ARP的工作原理,ARP攻擊的基本原理,詳細(xì)分解了ARP數(shù)據(jù)包的各個(gè)字段含義,ARP協(xié)議工作的流程和這次課程設(shè)計(jì)的意義與目的;接著描述了此實(shí)驗(yàn)的總體設(shè)計(jì);然后是詳細(xì)設(shè)計(jì),分析講解了實(shí)現(xiàn)代碼的主要部分;最后還講了做這次課程設(shè)計(jì)的個(gè)人總結(jié),

2、談了一些個(gè)人觀點(diǎn)。關(guān)鍵字:ARP數(shù)據(jù)包、工作原理、ARP攻擊、解析、截獲、功能目錄第一章引言11.1ARP背景11.1.1什么是ARP11.1.2ARP工作原理11.1.3ARP攻擊21.1.4 ARP包的格式31.1.5 ARP協(xié)議工作流程41.2課題研究現(xiàn)狀41.3論文組織方式5第二章關(guān)鍵技術(shù)62.1數(shù)據(jù)包截獲機(jī)制62.2抓包工具62.2.1 Winpcap簡(jiǎn)介72.2.2WpdPack簡(jiǎn)介9第三章總體設(shè)計(jì)103.1 設(shè)計(jì)分析103.1.1設(shè)計(jì)中的重點(diǎn)及難點(diǎn)103.1.2參考算法103.1.3系統(tǒng)或算法框架設(shè)計(jì)113.2功能設(shè)計(jì)113.3 平臺(tái)設(shè)計(jì)123.4數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)12第四章詳細(xì)設(shè)計(jì)

3、13第五章結(jié)束語14第六章參考資料15第一章 引言1.1 ARP背景首先,我們來了解一下什么是ARP,ARP的工作原理以及ARP攻擊所帶來的危害。1.1.1什么是ARP地址解析協(xié)議(Address Resolution Protocol,ARP)是在僅知道主機(jī)的IP地址時(shí)確定其物理地址的一種協(xié)議。因IPv4和以太網(wǎng)的廣泛應(yīng)用,其主要用作將IP地址翻譯為以太網(wǎng)的MAC地址,但其也能在ATM和FDDIIP網(wǎng)絡(luò)中使用。從IP地址到物理地址的映射有兩種方式:表格方式和非表格方式。ARP具體說來就是將網(wǎng)絡(luò)層(IP層,也就是相當(dāng)于OSI的第三層)地址解析為數(shù)據(jù)連接層(MAC層,也就是相當(dāng)于OSI的第二層)

4、的MAC地址。 在以太網(wǎng)協(xié)議中規(guī)定,同一局域網(wǎng)中的一臺(tái)主機(jī)要和另一臺(tái)主機(jī)進(jìn)行直接通信,必須要知道目標(biāo)主機(jī)的MAC地址。而在TCP/IP協(xié)議棧中,網(wǎng)絡(luò)層和傳輸層只關(guān)心目標(biāo)主機(jī)的IP地址。這就導(dǎo)致在以太網(wǎng)中使用IP協(xié)議時(shí),數(shù)據(jù)鏈路層的以太網(wǎng)協(xié)議接到上層IP協(xié)議提供的數(shù)據(jù)中,只包含目的主機(jī)的IP地址。于是需要一種方法,根據(jù)目的主機(jī)的IP地址,獲得其MAC地址。這就是ARP協(xié)議要做的事情。所謂地址解析(address resolution)就是主機(jī)在發(fā)送幀前將目標(biāo)IP地址轉(zhuǎn)換成目標(biāo)MAC地址的過程。 另外,當(dāng)發(fā)送主機(jī)和目的主機(jī)不在同一個(gè)局域網(wǎng)中時(shí),即便知道目的主機(jī)的MAC地址,兩者也不能直接通信,必須

5、經(jīng)過路由轉(zhuǎn)發(fā)才可以。所以此時(shí),發(fā)送主機(jī)通過ARP協(xié)議獲得的將不是目的主機(jī)的真實(shí)MAC地址,而是一臺(tái)可以通往局域網(wǎng)外的路由器的某個(gè)端口的MAC地址。于是此后發(fā)送主機(jī)發(fā)往目的主機(jī)的所有幀,都將發(fā)往該路由器,通過它向外發(fā)送。這種情況稱為ARP代理(ARP Proxy)。1.1.2ARP工作原理在每臺(tái)安裝有TCP/IP協(xié)議的電腦里都有一個(gè)ARP緩存表,表里的IP地址與MAC地址是一一對(duì)應(yīng)的。 以主機(jī)A(209.0.0.5)向主機(jī)B(209.0.0.6)發(fā)送數(shù)據(jù)為例。當(dāng)發(fā)送數(shù)據(jù)時(shí),主機(jī)A會(huì)在自己的ARP緩存表中尋找是否有目標(biāo)IP地址。如果找到了,也就知道了目標(biāo)MAC地址,直接把目標(biāo)MAC地址寫入幀里面發(fā)

6、送就可以了;如果在ARP緩存表中沒有找到目標(biāo)IP地址,主機(jī)A就會(huì)在網(wǎng)絡(luò)上發(fā)送一個(gè)廣播,A主機(jī)MAC地址是“主機(jī)A的MAC地址”,這表示向同一網(wǎng)段內(nèi)的所有主機(jī)發(fā)出這樣的詢問:“我是209.0.0.5,我的硬件地址是00-00-C0-15-AD-18主機(jī)A的MAC地址.請(qǐng)問IP地址為209.0.0.6的MAC地址是什么?”網(wǎng)絡(luò)上其他主機(jī)并不響應(yīng)ARP詢問,只有主機(jī)B接收到這個(gè)幀時(shí),才向主機(jī)A做出這樣的回應(yīng):“209.0.0.6的MAC地址是08-00-2B-00-EE-0A”。這樣,主機(jī)A就知道了主機(jī)B的MAC地址,它就可以向主機(jī)B發(fā)送信息了。同時(shí)A和B還同時(shí)都更新了自己的ARP緩存表(因?yàn)锳在詢

7、問的時(shí)候把自己的IP和MAC地址一起告訴了B),下次A再向主機(jī)B或者B向A發(fā)送信息時(shí),直接從各自的ARP緩存表里查找就可以了。ARP緩存表采用了老化機(jī)制(即設(shè)置了生存時(shí)間TTL),在一段時(shí)間內(nèi)(一般15到20分鐘)如果表中的某一行沒有使用,就會(huì)被刪除,這樣可以大大減少ARP緩存表的長(zhǎng)度,加快查詢速度。(如圖1所示)ARP攻擊就是通過偽造IP地址和MAC地址實(shí)現(xiàn)ARP欺騙,能夠在網(wǎng)絡(luò)中產(chǎn)生大量的ARP通信量使網(wǎng)絡(luò)阻塞,攻擊者只要持續(xù)不斷的發(fā)出偽造的ARP響應(yīng)包就能更改目標(biāo)主機(jī)ARP緩存中的IP-MAC條目,造成網(wǎng)絡(luò)中斷或中間人攻擊。 ARP攻擊主要是存在于局域網(wǎng)網(wǎng)絡(luò)中,局域網(wǎng)中若有一個(gè)人感染AR

8、P木馬,則感染該ARP木馬的系統(tǒng)將會(huì)試圖通過“ARP欺騙”手段截獲所在網(wǎng)絡(luò)內(nèi)其它計(jì)算機(jī)的通信信息,并因此造成網(wǎng)內(nèi)其它計(jì)算機(jī)的通信故障1.1.3ARP攻擊ARP攻擊就是通過偽造IP地址和MAC地址實(shí)現(xiàn)ARP欺騙,能夠在網(wǎng)絡(luò)中產(chǎn)生大量的ARP通信量使網(wǎng)絡(luò)阻塞,攻擊者只要持續(xù)不斷的發(fā)出偽造的ARP響應(yīng)包就能更改目標(biāo)主機(jī)ARP緩存中的IP-MAC條目,造成網(wǎng)絡(luò)中斷或中間人攻擊。ARP攻擊主要是存在于局域網(wǎng)網(wǎng)絡(luò)中,局域網(wǎng)中若有一臺(tái)計(jì)算機(jī)感染ARP木馬,則感染該ARP木馬的系統(tǒng)將會(huì)試圖通過“ARP欺騙”手段截獲所在網(wǎng)絡(luò)內(nèi)其它計(jì)算機(jī)的通信信息,并因此造成網(wǎng)內(nèi)其它計(jì)算機(jī)的通信故障。初期:這種有目的的發(fā)布錯(cuò)誤A

9、RP廣播包的行為,被稱為ARP欺騙。ARP欺騙,最初為黑客所用,成為黑客竊取網(wǎng)絡(luò)數(shù)據(jù)的主要手段。黑客通過發(fā)布錯(cuò)誤的ARP廣播包,阻斷正常通信,并將自己所用的電腦偽裝成別人的電腦,這樣原本發(fā)往其他電腦的數(shù)據(jù),就發(fā)到了黑客的電腦上,達(dá)到竊取數(shù)據(jù)的目的。 中期:ARP惡意攻擊。后來,有人利用這一原理,制作了一些所謂的“管理軟件”,例如網(wǎng)絡(luò)剪刀手、執(zhí)法官、終結(jié)者等,這樣就導(dǎo)致了ARP惡意攻擊的泛濫。往往使用這種軟件的人,以惡意破壞為目的,多是為了讓別人斷線,逞一時(shí)之快。特別是在網(wǎng)吧中,或者因?yàn)樯虡I(yè)競(jìng)爭(zhēng)的目的、或者因?yàn)閭€(gè)人無聊泄憤,造成惡意ARP攻擊泛濫。隨著網(wǎng)吧經(jīng)營者摸索出禁用這些特定軟件的方法,這股

10、風(fēng)潮也就漸漸平息下去了。 現(xiàn)在:綜合的ARP攻擊。最近這一波ARP攻擊潮,其目的、方式多樣化,沖擊力度、影響力也比前兩個(gè)階段大很多。首先是病毒加入了ARP攻擊的行列。以前的病毒攻擊網(wǎng)絡(luò)以廣域網(wǎng)為主,最有效的攻擊方式是DDOS攻擊。但是隨著防范能力的提高,病毒制造者將目光投向局域網(wǎng),開始嘗試ARP攻擊,例如最近流行的威金病毒,ARP攻擊是其使用的攻擊手段之一。 相對(duì)病毒而言,盜號(hào)程序?qū)W(wǎng)吧運(yùn)營的困惑更大。盜號(hào)程序是為了竊取用戶帳號(hào)密碼數(shù)據(jù)而進(jìn)行ARP欺騙,同時(shí)又會(huì)影響的其他電腦上網(wǎng)。1.1.4 ARP包的格式ARP(同RARP)使用相同的報(bào)頭結(jié)構(gòu),如圖所示。硬件類型協(xié)議類型硬件地址長(zhǎng)度協(xié)議長(zhǎng)度操

11、作類型發(fā)送方的硬件地址(0-3字節(jié))源物理地址(4-5字節(jié))源IP地址(0-1字節(jié))源IP地址(2-3字節(jié))目標(biāo)硬件地址(0-1字節(jié))目標(biāo)硬件地址(2-5字節(jié))目標(biāo)IP地址(0-3字節(jié))硬件類型字段:指明了發(fā)送方想知道的硬件接口類型,以太網(wǎng)的值為1;協(xié)議類型字段:指明了發(fā)送方提供的高層協(xié)議類型,IP為0800(16進(jìn)制);硬件地址長(zhǎng)度和協(xié)議長(zhǎng)度:指明了硬件地址和高層協(xié)議地址的長(zhǎng)度,這樣ARP報(bào)文就可以在任意硬件和任意協(xié)議的網(wǎng)絡(luò)中使用;操作字段:用來表示這個(gè)報(bào)文的類型,ARP請(qǐng)求為1,ARP響應(yīng)為2,RARP請(qǐng)求為3,RARP響應(yīng)為4;發(fā)送方的硬件地址(0-3字節(jié)):源主機(jī)硬件地址的前3個(gè)字節(jié);

12、發(fā)送方的硬件地址(4-5字節(jié)):源主機(jī)硬件地址的后3個(gè)字節(jié);發(fā)送方IP(0-1字節(jié)):源主機(jī)硬件地址的前2個(gè)字節(jié);發(fā)送方IP(2-3字節(jié)):源主機(jī)硬件地址的后2個(gè)字節(jié);目的硬件地址(0-1字節(jié)):目的主機(jī)硬件地址的前2個(gè)字節(jié);目的硬件地址(2-5字節(jié)):目的主機(jī)硬件地址的后4個(gè)字節(jié);目的IP(0-3字節(jié)):目的主機(jī)的IP地址。1.1.5 ARP協(xié)議工作流程1. 首先,每臺(tái)主機(jī)都會(huì)在自己的ARP緩沖區(qū) ( ARP Cache )中建立一個(gè) ARP列表,以表示IP地址和MAC地址的對(duì)應(yīng)關(guān)系。2. 當(dāng)源主機(jī)需要將一個(gè)數(shù)據(jù)包要發(fā)送到目的主機(jī)時(shí),會(huì)首先檢查自己 ARP列表中是否存在該 IP地址對(duì)應(yīng)的MA

13、C地址,如果有就直接將數(shù)據(jù)包發(fā)送到這個(gè)MAC地址;如果沒有,就向本地網(wǎng)段發(fā)起一個(gè)ARP請(qǐng)求的廣播包,查詢此目的主機(jī)對(duì)應(yīng)的MAC地址。此ARP請(qǐng)求數(shù)據(jù)包里包括源主機(jī)的IP地址、硬件地址、以及目的主機(jī)的IP地址。3. 網(wǎng)絡(luò)中所有的主機(jī)收到這個(gè)ARP請(qǐng)求后,會(huì)檢查數(shù)據(jù)包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此數(shù)據(jù)包;如果相同,該主機(jī)首先將發(fā)送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已經(jīng)存在該IP的信息,則將其覆蓋,然后給源主機(jī)發(fā)送一個(gè) ARP響應(yīng)數(shù)據(jù)包,告訴對(duì)方自己是它需要查找的MAC地址;4. 源主機(jī)收到這個(gè)ARP響應(yīng)數(shù)據(jù)包后,將得到的目的主機(jī)的IP地址和M

14、AC地址添加到自己的ARP列表中,并利用此信息開始數(shù)據(jù)的傳輸。如果源主機(jī)一直沒有收到ARP響應(yīng)數(shù)據(jù)包,表示ARP查詢失敗。1.2課題研究現(xiàn)狀地址解析協(xié)議(Address Resolution Protocol,ARP)是在僅知道主機(jī)的IP地址時(shí)確定其物理地址的一種協(xié)議。因IPv4和以太網(wǎng)的廣泛應(yīng)用,其主要用作將IP地址翻譯為以太網(wǎng)的MAC地址,但其也能在ATM(異步傳輸模式)和FDDIIP(Fiber Distributed Data Interface光纖分布式數(shù)據(jù)接口)網(wǎng)絡(luò)中使用。從IP地址到物理地址的映射有兩種方式:表格方式和非表格方式。ARP具體說來就是將網(wǎng)絡(luò)層(IP層,也就是相當(dāng)于O

15、SI的第三層)地址解析為數(shù)據(jù)連接層(MAC層,也就是相當(dāng)于OSI的第二層)的MAC地址。本設(shè)計(jì)主要通過使用Winpcap,WpdPack開發(fā)包,在Microsoft Microsoft Visual C+ 6.0 環(huán)境下編寫出了一款簡(jiǎn)單的軟件獲取網(wǎng)絡(luò)中的ARP數(shù)據(jù)包,解析數(shù)據(jù)包的內(nèi)容,將結(jié)果顯示在標(biāo)準(zhǔn)輸出上,并同時(shí)寫入日志文件。C語言是一種計(jì)算機(jī)程序設(shè)計(jì)語言,它既具有高級(jí)語言的特點(diǎn),又具有匯編語言的特點(diǎn)。它由美國貝爾研究所的D.M.Ritchie于1972年推出,1978年后,C語言已先后被移植到大、中、小及微型機(jī)上,它可以作為工作系統(tǒng)設(shè)計(jì)語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語言,編

16、寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序。它的應(yīng)用范圍廣泛,具備很強(qiáng)的數(shù)據(jù)處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,適于編寫系統(tǒng)軟件,三維,二維圖形和動(dòng)畫,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開發(fā)。1.3論文組織方式 首先,本論文從目前網(wǎng)絡(luò)的現(xiàn)狀開始,詳細(xì)研究了本課題的背景以及意義,由于目前我國正在進(jìn)行大規(guī)模的現(xiàn)代化經(jīng)濟(jì)建設(shè),需要使用自己的網(wǎng)絡(luò)和信息安全系統(tǒng)來保護(hù)自己的網(wǎng)絡(luò)和信息系統(tǒng),尤其是對(duì)于全國性大型計(jì)算機(jī)網(wǎng)絡(luò)而言,必須將網(wǎng)絡(luò)安全和信息安全放在非常重要的地位上,而從長(zhǎng)遠(yuǎn)角度看,這只能依靠我們自己解決。因此建立網(wǎng)絡(luò)安全系統(tǒng)是我們現(xiàn)在迫切需求,這項(xiàng)工作對(duì)我們來說具有重大的政治和經(jīng)濟(jì)意義面對(duì)

17、這種形式研究并開發(fā)出一種能方便有效的實(shí)時(shí)監(jiān)視和捕獲可疑網(wǎng)絡(luò)信息的系統(tǒng)迫在眉睫。然后對(duì)解析ARP數(shù)據(jù)包的實(shí)現(xiàn)所必須具備的各種技術(shù)進(jìn)行深入了解。其次,在對(duì)本論文的背景有所了解的情況下,對(duì)本課題所必須的關(guān)鍵技術(shù)進(jìn)行了介紹,比如WpdPack等的詳細(xì)介紹。最后,在對(duì)所必須得基礎(chǔ)知識(shí)有所了解的情況下,按照各模塊的功能,分別詳細(xì)介紹了各個(gè)功能的實(shí)現(xiàn)過程。第二章 關(guān)鍵技術(shù)2.1數(shù)據(jù)包截獲機(jī)制網(wǎng)絡(luò)數(shù)據(jù)包截獲機(jī)制一般指通過截獲整個(gè)網(wǎng)絡(luò)的所有信息流量,根據(jù)信息源主機(jī),目標(biāo)主機(jī),服務(wù)協(xié)議斷口等信息簡(jiǎn)單過濾掉不關(guān)心的數(shù)據(jù),再將用戶感興趣的數(shù)據(jù)發(fā)送給更高層的應(yīng)用程序進(jìn)行分析。在局域網(wǎng)中,由于以太網(wǎng)是基于廣播方式傳送數(shù)據(jù)

18、的,以太網(wǎng)上的所有主機(jī)都共享一條網(wǎng)絡(luò)總線,所以所有的物理信號(hào)都會(huì)被傳送到每一個(gè)主機(jī)節(jié)點(diǎn),如果將網(wǎng)卡設(shè)置為混雜接受模式,則無論監(jiān)聽到的數(shù)據(jù)幀目的地址如何,網(wǎng)卡都能予以接收。協(xié)議簇中的應(yīng)用層協(xié)議大多數(shù)都是以明文形式在網(wǎng)絡(luò)上傳輸,這些明文數(shù)據(jù)往往包含一些敏感數(shù)據(jù),如密碼、賬號(hào)等,因此使用監(jiān)聽程序軟件可以監(jiān)聽到所有局域網(wǎng)內(nèi)的數(shù)據(jù)通信,得到這些敏感信息。當(dāng)然,其局限性是只能在局域網(wǎng)的共享沖突域中進(jìn)行。嗅探器作為一種網(wǎng)絡(luò)通訊程序,主要是通過對(duì)網(wǎng)卡的編程來實(shí)現(xiàn)的。對(duì)網(wǎng)卡的編程有很多種方法,通常的套接字程序只能響應(yīng)與自己硬件地址相匹配的或是以廣播方式發(fā)出的數(shù)據(jù)幀,對(duì)于其他形式的數(shù)據(jù)幀,網(wǎng)絡(luò)接口在驗(yàn)證 目的地址

19、并非自身地址之后將不引起響應(yīng),也就是說應(yīng)用程序無法接收到達(dá)的數(shù)據(jù)包。而網(wǎng)絡(luò)嗅探器的目的恰恰在于從網(wǎng)卡接收所有經(jīng)過它的數(shù)據(jù)包,這些數(shù)據(jù)包既可以是發(fā)給自己的也可以是發(fā)給別人的。顯然,要達(dá)到此目的就不能讓網(wǎng)卡按通常的正常模式工作,而必須將其設(shè)置為混雜模式。嗅探程序的設(shè)計(jì)一般有如下幾個(gè)階段:(1)包捕獲設(shè)置:包括網(wǎng)絡(luò)適配器的識(shí)別和網(wǎng)卡混雜模式的設(shè)置;(2)過濾器設(shè)置:對(duì)數(shù)據(jù)包的捕獲設(shè)定一些條件,如可以按某些特定的IP 地址進(jìn)行過濾,也可根據(jù)網(wǎng)絡(luò)協(xié)議只捕獲某種特定的協(xié)議,如TCP 或UDP 包中的數(shù)據(jù);(3)數(shù)據(jù)分析:對(duì)捕獲的數(shù)據(jù)進(jìn)行分析處理,獲得數(shù)據(jù)包中的上層信息。2.2抓包工具2.2.1 Winpc

20、ap簡(jiǎn)介Winpcap(Windows Packet Capture)是Windows平臺(tái)下一個(gè)免費(fèi),公共的網(wǎng)絡(luò)訪問系統(tǒng)。開發(fā)Winpcap這個(gè)項(xiàng)目的目的在于為Win32應(yīng)用程序提供訪問網(wǎng)絡(luò)底層的能力。它提供了以下功能5:(1)捕獲原始數(shù)據(jù)報(bào),包括在共享網(wǎng)絡(luò)上各主機(jī)發(fā)送/接收的以及相互之間交換的數(shù)據(jù)報(bào);(2)在數(shù)據(jù)報(bào)發(fā)往應(yīng)用程序之前,按照自定義的規(guī)則將某些特殊的數(shù)據(jù)報(bào)過濾掉;(3)在網(wǎng)絡(luò)上發(fā)送原始的數(shù)據(jù)報(bào);(4)收集網(wǎng)絡(luò)通信過程中的統(tǒng)計(jì)信息。Winpcap的主要功能在于獨(dú)立于主機(jī)協(xié)議(如TCP/IP)而發(fā)送和接收原始數(shù)據(jù)報(bào)。也就是說,Winpcap不能阻塞、過濾或控制其他應(yīng)用程序數(shù)據(jù)報(bào)的發(fā)收,

21、它僅僅只是監(jiān)聽共享網(wǎng)絡(luò)上傳送的數(shù)據(jù)報(bào)。Winpcap是Win32平臺(tái)下的數(shù)據(jù)包捕獲與網(wǎng)絡(luò)分析架構(gòu),由三個(gè)模塊構(gòu)成:NPF,packet.dll,wpcap.dll。前一個(gè)工作在內(nèi)核層,后兩個(gè)工作在用戶層。第一個(gè)模塊是內(nèi)核部分NPF (Netgroup Packet Filter),在Win95/98中它是一個(gè)VXD(虛擬設(shè)備驅(qū)動(dòng)程序文件)文件,在WinNT/Win2000下是一個(gè)SYS文件。它的主要功能是過濾數(shù)據(jù)包,并把這些數(shù)據(jù)包原封不動(dòng)地傳給用戶態(tài)模塊。當(dāng)然也添加了一些系統(tǒng)特定的標(biāo)志(比如時(shí)間戳管理)。這個(gè)過程中包括了一些操作系統(tǒng)特有的代碼。第二個(gè)模塊packet.dll用來在不同的Win3

22、2平臺(tái)下提供一個(gè)通用的公共的包驅(qū)動(dòng)接口。事實(shí)上,不同版本的Windows平臺(tái)在內(nèi)核層模塊和用戶進(jìn)程之間的接口不完全相同,packet.dll用于解決這些不同。提供了一套系統(tǒng)獨(dú)立的API(Application Programming Interface 應(yīng)用編程接口),調(diào)用packet.dll的程序能夠運(yùn)行在不同版本的 Windows 平臺(tái)上而無需重新編譯。packet.dll還有一些附加的功能。它可執(zhí)行一些低層操作:如:獲得網(wǎng)卡名字,動(dòng)態(tài)裝載驅(qū)動(dòng),得到比如機(jī)器的網(wǎng)絡(luò)掩碼、硬件沖突等一些系統(tǒng)特定的信息。第三個(gè)模塊wpcap.dll是系統(tǒng)無關(guān)的,它提供了更高層、抽象的函數(shù)。它包括了一些比如過濾器

23、生成、用戶級(jí)緩沖等其它的高層函數(shù),增加了比如統(tǒng)計(jì)和包發(fā)送等更高級(jí)的特性。因此程序員能處理兩種類型的API:一套原始函數(shù)集,包含在packet.dll中,直接與內(nèi)核層調(diào)用匹配;另一套高層函數(shù)由wpcap.dll提供,便于用戶調(diào)用,功能更強(qiáng)大。程序員能隨意使用wpcap.dll,但只能在受限的環(huán)境中直接使用packet.dll.圖2.3 Winpcap結(jié)構(gòu)圖總的說來,packet.dll直接映射了內(nèi)核的調(diào)用。wpcap.dll提供了更加友好、功能更加強(qiáng)大的函數(shù)調(diào)用。Winpcap的具體結(jié)構(gòu)圖2.3所示。Winpcap是用NDIS(Windows的通信協(xié)議程序(比如TCP/IP)和網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)器之間

24、通信的規(guī)范)的,將自己注冊(cè)為一個(gè)協(xié)議處理驅(qū)動(dòng)。Winpcap的使用非常方便,但是它有一個(gè)致命的缺陷就是只適用于共享式以太網(wǎng)絡(luò),對(duì)于交換式網(wǎng)絡(luò)下的數(shù)據(jù)則無能為力。經(jīng)過測(cè)試,在使用交換機(jī)連接的局域網(wǎng)下,Winpcap只能監(jiān)聽到本網(wǎng)段內(nèi)的數(shù)據(jù),而對(duì)于來自其他網(wǎng)段的數(shù)據(jù)則無法監(jiān)聽,除非你把電腦接到交換機(jī)之前或者接到交換機(jī)的配置口上,不過那樣的弊端是顯而易見的,所以,Winpcap的應(yīng)用還是有局限性的。Winpcap結(jié)構(gòu)圖如圖2.4所示。圖2.4 NPF device driver2.2.2WpdPack簡(jiǎn)介WpdPack是WinPcap的開發(fā)包,提供了使用WinPcap必須的頭文件和庫文件,現(xiàn)階段開始

25、SendPkt使用的是WinPcap 3.1及其對(duì)應(yīng)的WpdPack。隨著網(wǎng)絡(luò)入侵的不斷發(fā)展,網(wǎng)絡(luò)安全變得越來越重要,于是網(wǎng)絡(luò)入侵取證系統(tǒng)的研究也變得日益重要。在網(wǎng)絡(luò)入侵取證系統(tǒng)中,對(duì)網(wǎng)絡(luò)上傳送的數(shù)據(jù)包進(jìn)行有效的監(jiān)聽即捕獲包是目前取證的關(guān)鍵技術(shù),只有進(jìn)行高效的數(shù)據(jù)包捕獲,網(wǎng)絡(luò)管理員才能對(duì)所捕獲的數(shù)據(jù)進(jìn)行一系列的分析,從而進(jìn)行可靠的網(wǎng)絡(luò)安全管理。第三章 總體設(shè)計(jì) 3.1 設(shè)計(jì)分析3.1.1設(shè)計(jì)中的重點(diǎn)及難點(diǎn)1) 程序中會(huì)用到Winpcap,Winpcap是Win32環(huán)境下數(shù)據(jù)包捕獲的開放代碼函數(shù)庫?;赪inpcap的應(yīng)用程序一般按照下面幾個(gè)步驟進(jìn)行設(shè)計(jì):l 輸出網(wǎng)卡設(shè)備列表。l 選擇網(wǎng)卡并打開

26、。l 捕獲數(shù)據(jù)包時(shí),可能需要設(shè)置過濾器。l 捕獲數(shù)據(jù)包或者發(fā)送數(shù)據(jù)包。2) 在程序設(shè)計(jì)過程中需要注意網(wǎng)絡(luò)主機(jī)字節(jié)順序的轉(zhuǎn)化。由于不同的計(jì)算機(jī)系統(tǒng)所采用的數(shù)據(jù)表示方式不同,對(duì)于2B或4B的數(shù)據(jù),有的采用低字節(jié)地址存放數(shù)據(jù)的高權(quán)值位,而有的卻以低地址字節(jié)存放數(shù)據(jù)低權(quán)位值,在網(wǎng)絡(luò)的數(shù)據(jù)傳輸中,我們應(yīng)該統(tǒng)一表示,所以我們?cè)诓东@數(shù)據(jù)包后,應(yīng)將數(shù)據(jù)包頭部的表示長(zhǎng)度或類型的數(shù)據(jù)轉(zhuǎn)換成本地機(jī)的表達(dá)形式??梢岳煤瘮?shù)ntohs()將網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)換為主機(jī)字節(jié)序。3)選擇網(wǎng)卡并打開時(shí),注意選擇可用的網(wǎng)卡。3.1.2參考算法1) 取得當(dāng)前網(wǎng)卡設(shè)備列表。2) 選擇Ethernet網(wǎng)卡并打開,注意判斷所選網(wǎng)卡是否為實(shí)際存

27、在的可用網(wǎng)卡。3) 設(shè)置過濾器,此處的過濾器正則表達(dá)式為“arp”或者“ether protoarp”。4) 捕獲數(shù)據(jù)包并進(jìn)行處理(包括輸出各IP地址,物理地址,操作類型以及時(shí)間)。由于要記錄日志文件,為了便于輸出流參數(shù),建議采用pcap_next_ex()函數(shù)。流程圖如圖所示:3.1.3系統(tǒng)或算法框架設(shè)計(jì)1. 得到網(wǎng)絡(luò)驅(qū)動(dòng).利用PCAP提供的PCAP_findalldevs( )函數(shù)實(shí)現(xiàn)此功能。2. 選擇一塊網(wǎng)卡,并判斷其是否可用。3. 編輯設(shè)置過濾器,使其只捕獲ARP包.過濾函數(shù)PCAP_complie和PCAP_setfilter.設(shè)置函數(shù)為PCAP_setfilter( )。4. 開始

28、捕獲數(shù)據(jù)包并進(jìn)行處理.使用PCAP_next_ex( )函數(shù)實(shí)現(xiàn)此功能。3.2功能設(shè)計(jì)通過編制程序,獲取網(wǎng)絡(luò)中的ARP數(shù)據(jù)包,解析數(shù)據(jù)包的內(nèi)容,將結(jié)果顯示在標(biāo)準(zhǔn)輸出上,并同時(shí)寫入日志文件。程序的具體要求如下所示:1)以命令行的形式運(yùn)行,如下所示:arp1.exe log.txt其中,arp1.exe為程序名;log.txt為日志文件名。2)程序輸出內(nèi)容如下所示:源IP地址 源MAC地址 目的IP地址 目的MAC地址 操作 時(shí)間各部分的說明如下所示:1、源IP地址:輸出ARP消息格式中的源IP地址字段。2、源MAC地址:輸出ARP消息格式中的源物理地址字段3、目的IP地址:輸出ARP消息格式中的

29、目的IP地址字段。4、目的MAC地址:輸出ARP消息格式中的目的物理地址字段。5、操作:輸出ARP消息格式中的操作字段,若為ARP請(qǐng)求,則為1,若為ARP應(yīng)答,則為2。6、時(shí)間:該ARP包產(chǎn)生的時(shí)間。3)當(dāng)程序接收到鍵盤輸入Ctrl十C時(shí)退出。3.3 平臺(tái)設(shè)計(jì)Windows 7, Microsoft Microsoft Visual C+ 6.0 簡(jiǎn)體中文版, WinPcap_4_1_2, WpdPack_4_1_23.4數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)struct ARPPACKETunsigned short hdtyp; /硬件地址unsigned short protyp; /協(xié)議類型unsigned

30、char hdsize; /硬件地址長(zhǎng)度unsigned char prosize; /協(xié)議地址長(zhǎng)度unsigned short op; /操作值: ARP/RARPu_char smac6; /源MAC地址u_char sip4; /源IP地址u_char dmac6; /目的MAC地址u_char dip4; /目的IP地址;第四章 詳細(xì)設(shè)計(jì)核心代碼l ARP數(shù)據(jù)包結(jié)構(gòu)struct arppkt unsigned short hdtyp; /硬件類型。值0001表示其為Ethernetunsigned short protyp; /協(xié)議類型。值0800表示上層協(xié)議為IPunsigned c

31、har hdsize; /硬件地址長(zhǎng)度。值為06unsigned char prosize; /協(xié)議地址長(zhǎng)度。值為04unsigned short op; /操作值為0001/0002,分別表示ARP請(qǐng)求/應(yīng)答u_char smac6; /源MAC地址,6Bu_char sip4; /源IP地址,4Bu_char dmac6; /目的MAC地址u_char dip4; /目的IP地址;l 獲取網(wǎng)絡(luò)設(shè)備列表,并以混雜模式打開網(wǎng)絡(luò)設(shè)備/獲取網(wǎng)絡(luò)設(shè)備列表if(pcap_findalldevs(&alldevs,errbuf)=-1)coutError in pcap_findalldevs:next) /以混雜模式打開網(wǎng)卡,以接受所有的幀if(adhandle=pcap_open_live(d-name,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論