




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、xx理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院課程設(shè)計(jì)報告2012 2013學(xué)年第一學(xué)期課程名稱 網(wǎng)絡(luò)安全 設(shè)計(jì)題目 網(wǎng)絡(luò)嗅探器設(shè)計(jì)與實(shí)現(xiàn) 姓 名 xxxxxxxxxx 學(xué) 號 xxxxxxxxxxx 專業(yè)班級 xxxxxxxxxx 指導(dǎo)教師 xxxxxxxxxxx 2013 年 1 月 2 日簡單的網(wǎng)絡(luò)嗅探器摘 要計(jì)算機(jī)網(wǎng)絡(luò)嗅探器是可以竊聽計(jì)算機(jī)程序在網(wǎng)絡(luò)上發(fā)送和接收到的數(shù)據(jù),程序?qū)崿F(xiàn)了對抓取到的本機(jī)在網(wǎng)絡(luò)中的通信數(shù)據(jù)的協(xié)議類型、源地址、目的地址、端口和數(shù)據(jù)包的大小加以簡單的分析,改程序應(yīng)用c#語言編寫,實(shí)現(xiàn)了一個簡單的網(wǎng)絡(luò)嗅探功能。網(wǎng)絡(luò)嗅探器具有兩面性,攻擊者可以用它來監(jiān)聽網(wǎng)絡(luò)中數(shù)據(jù),達(dá)到非法獲得信息的
2、目的,網(wǎng)絡(luò)管理者可以通過使用嗅探器捕獲網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包并對其進(jìn)行分析,分析結(jié)果可供網(wǎng)絡(luò)安全分析之用。本文對網(wǎng)絡(luò)嗅探技術(shù)進(jìn)行了簡要分析,研究了網(wǎng)絡(luò)數(shù)據(jù)包的捕獲機(jī)制。文中首先分析了嗅探的原理和危害并介紹了幾種常見的嗅探器,然后研究了入侵檢測系統(tǒng)中使用的包捕獲技術(shù)。利用原始套接字在windows 平臺下實(shí)現(xiàn)了一個網(wǎng)絡(luò)嗅探器程序,完成了對數(shù)據(jù)包進(jìn)行解包、分析數(shù)據(jù)包的功能。關(guān)鍵詞:網(wǎng)絡(luò)嗅探器;發(fā)送和接受到的數(shù)據(jù);協(xié)議類型;源地址;目地地址;端口和數(shù)據(jù)包;分析;c#言語目錄一 引言1.1 基本原理二 基本原理2.1概述2.2作用2.3分類2.4可能造成的危害2.5基本工作原理2.6工作環(huán)境三需求分析3.
3、1需求說明3.2需求分析四概要設(shè)計(jì)4.1編程環(huán)境4.2模塊分析五詳細(xì)設(shè)計(jì)5.1嗅探器的具體實(shí)現(xiàn)過5.2主要數(shù)據(jù)結(jié)構(gòu)六嗅探器的實(shí)現(xiàn)與測試6.1實(shí)現(xiàn)與測試6.2實(shí)驗(yàn)體會七附錄(主要代碼)1、 引言1.1基本原理 網(wǎng)絡(luò)安全的現(xiàn)狀隨著各種新的網(wǎng)絡(luò)技術(shù)的不斷出現(xiàn)、應(yīng)用和發(fā)展,計(jì)算機(jī)網(wǎng)絡(luò)的應(yīng)用越來越廣泛,其作用也越來越重要。但是由于計(jì)算機(jī)系統(tǒng)中軟硬件的脆弱性和計(jì)算機(jī)網(wǎng)絡(luò)的脆弱性以及地理分布的位置、自然環(huán)境、自然破壞以及人為因素的影響,不僅增加了信息存儲、處理的風(fēng)險,也給信息傳送帶來了新的問題。計(jì)算機(jī)網(wǎng)絡(luò)安全問題越來越嚴(yán)重,網(wǎng)絡(luò)破壞所造成的損失越來越大。internet 的安全已經(jīng)成為亟待解決的問題二、網(wǎng)絡(luò)
4、嗅探器的基本原理2.1概述 網(wǎng)絡(luò)嗅探器又稱為網(wǎng)絡(luò)監(jiān)聽器,簡稱為sniffer子系統(tǒng),放置于網(wǎng)絡(luò)節(jié)點(diǎn)處,對網(wǎng)絡(luò)中的數(shù)據(jù)幀進(jìn)行捕獲的一種被動監(jiān)聽手段,是一種常用的收集有用數(shù)據(jù)的方法,這些數(shù)據(jù)可以是用戶的賬號和密碼,可以是一些商用機(jī)密數(shù)據(jù)等等。他廣泛地應(yīng)用于流量分析、安全監(jiān)控、網(wǎng)管分析、防火墻等的實(shí)現(xiàn)中。sniffer是利用計(jì)算機(jī)的網(wǎng)絡(luò)接口截獲目的地為其他計(jì)算機(jī)的數(shù)據(jù)報文的一種工具。sniffer的正當(dāng)用處主要是分析網(wǎng)絡(luò)的流量,以便找出所關(guān)心的網(wǎng)絡(luò)中潛在的問題。例如,假設(shè)網(wǎng)絡(luò)的某一段運(yùn)行得不是很好,報文的發(fā)送比較慢,而我們又不知道問題出在什么地方,此時就可以用嗅探器截獲網(wǎng)絡(luò)中的數(shù)據(jù)包,分析問題的所在
5、。而嗅探器也可作為攻擊工具被黑客所利用為其發(fā)動進(jìn)一步的攻擊提供有價值的信息。2.2作用 嗅探器是網(wǎng)絡(luò)的抓包工具,可以對網(wǎng)絡(luò)中大量數(shù)據(jù)抓取,從而方便使用者對網(wǎng)絡(luò)中用戶的一些信息進(jìn)行分析,所以,通常被黑客運(yùn)用于網(wǎng)絡(luò)攻擊。我們?nèi)绻材苷莆站W(wǎng)絡(luò)嗅探器的原理和設(shè)計(jì),可以將它運(yùn)用與網(wǎng)絡(luò)故障檢測、網(wǎng)絡(luò)狀況的監(jiān)視,還可以加強(qiáng)企業(yè)信息安全防護(hù)。2.3分類sniffer分為軟件和硬件兩種,軟件的sniffer有netxray、packetboy、netmonitor等,其優(yōu)點(diǎn)是物美價廉,易于學(xué)習(xí)使用,同時也易于交流;缺點(diǎn)是無法抓取網(wǎng)絡(luò)上所有的傳輸,某些情況下也就無法真正了解網(wǎng)絡(luò)的故障和運(yùn)行情況。硬件的sniffe
6、r通常稱為協(xié)議分析儀,一般都是商業(yè)性的,價格也比較貴。實(shí)際上本文中所講的sniffer指的是軟件。它把包抓取下來,然后打開并查看其中的內(nèi)容,可以得到密碼等。sniffer只能抓取一個物理網(wǎng)段內(nèi)的包,就是說,你和監(jiān)聽的目標(biāo)中間不能有路由或其他屏蔽廣播包的設(shè)備,這一點(diǎn)很重要。所以,對一般撥號上網(wǎng)的用戶來說,是不可能利用sniffer來竊聽到其他人的通信內(nèi)容的。2.4可能造成的危害sniffing是作用在網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)的底層。通常情況下,用戶并不直接和該層打交道,有些甚至不知道有這一層存在。所以,應(yīng)該說snffer的危害是相當(dāng)之大的,通常,使用sniffer是在網(wǎng)絡(luò)中進(jìn)行欺騙的開始。它可能造成的危害:
7、嗅探器能夠捕獲口令。這大概是絕大多數(shù)非法使用sniffer的理由,sniffer可以記錄到明文傳送的userid和passwd。能夠捕獲專用的或者機(jī)密的信息。比如金融帳號,許多用戶很放心在網(wǎng)上使用自己的信用卡或現(xiàn)金帳號,然而sniffer可以很輕松截獲在網(wǎng)上傳送的用戶姓名、口令、信用卡號碼、截止日期、帳號和pin。比如偷窺機(jī)密或敏感的信息數(shù)據(jù),通過攔截?cái)?shù)據(jù)包,入侵者可以很方便記錄別人之間敏感的信息傳送,或者干脆攔截整個的email會話過程??梢杂脕砦:W(wǎng)絡(luò)鄰居的安全,或者用來獲取更高級別的訪問權(quán)限。窺探低級的協(xié)議信息。這是很可怕的事,通過對底層的信息協(xié)議記錄,比如記錄兩臺主機(jī)之間的網(wǎng)絡(luò)接口地址
8、、遠(yuǎn)程網(wǎng)絡(luò)接口ip地址、ip路由信息和tcp連接的字節(jié)順序號碼等。這些信息由非法入侵的人掌握后將對網(wǎng)絡(luò)安全構(gòu)成極大的危害,通常有人用sniffer收集這些信息只有一個原因:他正要進(jìn)行一次欺騙(通常的ip地址欺騙就要求你準(zhǔn)確插入tcp連接的字節(jié)順序號)。事實(shí)上,如果你在網(wǎng)絡(luò)上存在非授權(quán)的嗅探器就意味著你的系統(tǒng)已經(jīng)暴露在別人面前了。簡單的放置一個嗅探器并將其放到隨便什么地方將不會起到什么作用。將嗅探器放置于被攻擊機(jī)器或網(wǎng)絡(luò)附近,這樣將捕獲到很多口令,還有一個比較好的方法就是放在網(wǎng)關(guān)上。sniffer通常運(yùn)行在路由器,或有路由器功能的主機(jī)上。這樣就能對大量的數(shù)據(jù)進(jìn)行監(jiān)控。sniffer屬第二層次的攻
9、擊。通常是攻擊者已經(jīng)進(jìn)入了目標(biāo)系統(tǒng),然后使用sniffer這種攻擊手段,以便得到更多的信息。如果這樣的話就能捕獲網(wǎng)絡(luò)和其他網(wǎng)絡(luò)進(jìn)行身份鑒別的過程2.5基本工作原理網(wǎng)絡(luò)嗅探器利用的是共享式的網(wǎng)絡(luò)傳輸介質(zhì)。共享即意味著網(wǎng)絡(luò)中的一臺機(jī)器可以嗅探到傳遞給本網(wǎng)段(沖突域)中的所有機(jī)器的報文。網(wǎng)絡(luò)嗅探器通過將網(wǎng)卡設(shè)置為混雜模式來實(shí)現(xiàn)對網(wǎng)絡(luò)的嗅探。一個實(shí)際的主機(jī)系統(tǒng)中,數(shù)據(jù)的收發(fā)是由網(wǎng)卡來完成的,當(dāng)網(wǎng)卡接收到傳輸來的數(shù)據(jù)包時,網(wǎng)卡內(nèi)的單片程序首先解析數(shù)據(jù)包的目的網(wǎng)卡物理地址,然后根據(jù)網(wǎng)卡驅(qū)動程序設(shè)置的接收模式判斷該不該接收,認(rèn)為該接收就產(chǎn)生中斷信號通知cpu,認(rèn)為不該接收就丟掉數(shù)據(jù)包,所以不該接收的數(shù)據(jù)包就
10、被網(wǎng)卡截?cái)嗔耍蠈討?yīng)用根本就不知道這個過程。cpu如果得到網(wǎng)卡的中斷信號,則根據(jù)網(wǎng)卡的驅(qū)動程序設(shè)置的網(wǎng)卡中斷程序地址調(diào)用驅(qū)動程序接收數(shù)據(jù),并將接收的數(shù)據(jù)交給上層協(xié)議軟件處理。下面給出一個簡單的圖示,簡單理解數(shù)據(jù)傳送的原理:_/./.internet.+-+-+.+-+usera-路由.userb+-+-+.+-+./-/+-+嗅探器+-+useraip地址:3userbip地址:4現(xiàn)在知道usera要于userb進(jìn)行計(jì)算機(jī)通訊,usera需要為3到4的通訊建立一個ip包。這個ip包在網(wǎng)絡(luò)上傳輸,它必須能夠穿透路
11、由器。因此,usera必須首先提交這個包給路由器。由每個路由器考查目地ip地址然后決定傳送路徑。usera所知道的只是本地與路由的連接,和userb的ip地址。usera并不清楚網(wǎng)絡(luò)的結(jié)構(gòu)情況和路由走向。usera必須告訴路由預(yù)備發(fā)送的數(shù)據(jù)包的情況,以太網(wǎng)數(shù)據(jù)傳輸結(jié)構(gòu)大概是這樣的:+-+-+-+-+-+-+目標(biāo)mac+-+-+-+-+-+-+源mac+-+-+-+-+-+-+0800+-+-+-+.ip包.+-+-+-+-+-+crc校驗(yàn)+-+-+-+-+理解一下這個結(jié)構(gòu),usera的計(jì)算機(jī)建立了一個包假設(shè)它由100個字節(jié)的長度(我們假設(shè)一下,20個字節(jié)是ip信息,20個字節(jié)是tcp信息,還有
12、60個字節(jié)為傳送的數(shù)據(jù))?,F(xiàn)在把這個包發(fā)給以太網(wǎng),放14個字節(jié)在目地mac地址之前,源mac地址,還要置一個0x0800的標(biāo)記,他指示出了tcp/ip棧后的數(shù)據(jù)結(jié)構(gòu)。同時,也附加了4個字節(jié)用于做crc校驗(yàn)(crc校驗(yàn)用來檢查傳輸數(shù)據(jù)的正確性)?,F(xiàn)在發(fā)送數(shù)據(jù)到網(wǎng)絡(luò)。所有在網(wǎng)內(nèi)的計(jì)算機(jī)通過適配器都能夠發(fā)現(xiàn)這個數(shù)據(jù)片,其中也包括路由適配器,嗅探器和其他一些機(jī)器。通常,適配器都具有一塊芯片用來做結(jié)構(gòu)比較的,檢查結(jié)構(gòu)中的目地mac地址和自己的mac地址,如果不相同,則適配器會丟棄這個結(jié)構(gòu)。這個操作會由硬件來完成,所以,對于計(jì)算機(jī)內(nèi)的程序來說,整個過程時毫無察覺的。當(dāng)路由器的以太網(wǎng)適配器發(fā)現(xiàn)這個結(jié)構(gòu)后,它
13、會讀取網(wǎng)絡(luò)信息,并且去掉前14個字節(jié),跟蹤4個字節(jié)。查找0x8000標(biāo)記,然后對這個結(jié)構(gòu)進(jìn)行處理(它將根據(jù)網(wǎng)絡(luò)狀況推測出下一個最快路由節(jié)點(diǎn),從而最快傳送數(shù)據(jù)到預(yù)定的目標(biāo)地址)。設(shè)想,只有路由機(jī)器能夠檢查這個結(jié)構(gòu),并且所有其他的機(jī)器都忽略這個結(jié)構(gòu),則嗅探器無論如何也無法檢測到這個結(jié)構(gòu)的。sniffer工作在網(wǎng)絡(luò)環(huán)境中的底層,它會攔截所有的正在網(wǎng)絡(luò)上傳送的數(shù)據(jù),并且通過相應(yīng)的軟件處理,可以實(shí)時分析這些數(shù)據(jù)的內(nèi)容,進(jìn)而分析所處的網(wǎng)絡(luò)狀態(tài)和整體布局。值得注意的是:sniffer是極其安靜的,它是一種消極的安全攻擊。2.6工作環(huán)境snifffer就是能夠捕獲網(wǎng)絡(luò)報文的設(shè)備。嗅探器的正當(dāng)用處在于分析網(wǎng)絡(luò)的
14、流量,以便找出所關(guān)心的網(wǎng)絡(luò)中潛在的問題。例如,假設(shè)網(wǎng)絡(luò)的某一段運(yùn)行得不是很好,報文的發(fā)送比較慢,而我們又不知道問題出在什么地方,此時就可以用嗅探器來作出精確的問題判斷。嗅探器在功能和設(shè)計(jì)方面有很多不同。有些只能分析一種協(xié)議,而另一些可能能夠分析幾百種協(xié)議。一般情況下,大多數(shù)的嗅探器至少能夠分析下面的協(xié)議:1.標(biāo)準(zhǔn)以太網(wǎng)2.tcp/ip3.ipx4.decnet三需求分析3.1需求說明實(shí)現(xiàn)sniffer的基本功能。sniffer是一種用于監(jiān)測網(wǎng)絡(luò)性能、使用情況的工具。能夠偵聽所有進(jìn)出本主機(jī)的數(shù)據(jù)包,完整顯示數(shù)據(jù)包網(wǎng)絡(luò)層和傳輸層(icmp、ip、tcp和udp)的頭信息。比如,對ip頭而言,需要顯
15、示版本、頭長度、服務(wù)類型、數(shù)據(jù)包長度、標(biāo)識、df/mf標(biāo)志、段內(nèi)偏移、生存期、協(xié)議類型、源目的ip地址、選項(xiàng)內(nèi)容。要求顯示數(shù)據(jù)的實(shí)際含義;偵聽來源于指定ip地址的數(shù)據(jù),顯示接收到的tcp數(shù)據(jù)包的全部實(shí)際內(nèi)容。需要考慮一個tcp包劃分為多個ip包傳輸?shù)那闆r;功能驗(yàn)證手段:在運(yùn)行sniffer的同時,執(zhí)行標(biāo)準(zhǔn)的ping、telnet和瀏覽網(wǎng)頁等操作,檢查sniffier能否返回預(yù)期的結(jié)果。3.2 需求分析有于水平有限,不可能實(shí)現(xiàn)像sniffer或者影音神探那樣復(fù)雜的設(shè)置和分析,所以我們只對抓取到的本機(jī)在網(wǎng)絡(luò)中的通信數(shù)據(jù)(如協(xié)議類型,源、目的地址和端口、數(shù)據(jù)包的大小等)加以分析,實(shí)現(xiàn)一個簡單的網(wǎng)絡(luò)嗅
16、探器。一個窗體顯示主頁面,另一個頁面顯示詳細(xì)的包信息。詳細(xì)信息頁面,我們顯示一下信息:開始時間:嗅探器抓取數(shù)據(jù)包的時間;源端口:源目的ip地址+端口號;目的端口:目的ip地址+端口號;協(xié)議類型:只分析一下類型,gpg,icmp,idp,igmp,ip,nd,pup,tcp,udp,其他的不再分析;版本信息:協(xié)議的版本;生存時間:;報頭大小:報文報首部大??;報文總長:整個數(shù)據(jù)報的大??;優(yōu)先級別:提供七個級別,分別是routine=0,priority=1,immediate=2,flash=3,flashoverride=4,criticecp=5,internetworkcontrol=6,n
17、etworkcontrol=7;延遲:normaldelay=0、lowdelay=1;吞吐量:normalthroughput=0,highthroughput=1;可靠性:normalreliability=0,highreliability=1;四、概要設(shè)計(jì)4.1編程環(huán)境本軟件是在vc+環(huán)境下編寫,使用winpcap中定義的頭文件和lib文件為支持,運(yùn)用winpcap提供的數(shù)據(jù)包捕獲程序執(zhí)行核心操作。4.2模塊分析(1)本軟件使用的主要模塊及其功能如下:1 線程控制模塊2 抓包模塊3 數(shù)據(jù)包分析模塊(2)模塊間的調(diào)用關(guān)系如下:開啟線程關(guān)閉線程抓包解包五、詳細(xì)設(shè)計(jì)5.1嗅探器的具體實(shí)現(xiàn)過程
18、程序在執(zhí)行過程中有兩個核心的工作,一是調(diào)用winpcap函數(shù)庫實(shí)現(xiàn)下層抓包。二是對抓到的包文進(jìn)行分析。下面分別列出兩個核心過程的基本算法與相關(guān)的實(shí)現(xiàn)代碼。抓包算法:第一:初始化winpcap開發(fā)庫第二:獲得當(dāng)前的網(wǎng)卡列表,同時要求用戶指定要操作的網(wǎng)卡第三:獲得當(dāng)前的過濾規(guī)則,可為空第四:調(diào)用庫函數(shù),pcap_loop(),同時并指定其回調(diào)函數(shù),其中其回調(diào)函數(shù)為數(shù)據(jù)包分析過程。分析算法:第一:得到數(shù)據(jù)包,先將其轉(zhuǎn)存到內(nèi)存里,以備以后再用。第二:分析當(dāng)前的數(shù)據(jù)包,分析過程如下:1. 數(shù)據(jù)包的前14個字節(jié)(byte)代表數(shù)據(jù)鏈路層的報文頭,其報文格式是前6byte為目的mac地址,隨后的6個byte
19、為源mac地址,最后的2byte代表上層協(xié)議類型這個數(shù)據(jù)很重要,是我們分析上層協(xié)議的依據(jù)。2. 根據(jù)1所分析到的協(xié)議類型進(jìn)行類似1的迭代分析。這樣就可以得到各層中的報文頭信息和數(shù)據(jù)信息。第三:結(jié)束本次分析。5.2主要模塊清單我們使用了mfc人機(jī)交互界面完成該功能的設(shè)置,其主要函數(shù)如下(詳細(xì)代碼見附錄):adapaterselection.cpp/網(wǎng)卡配置選擇函數(shù)arppacket.cpp/arp協(xié)議包函數(shù)capturepacket.cpp/捕獲包協(xié)議capturepacketdlg.cpp/捕獲包協(xié)議對話框dirdialog.cpp/目標(biāo)文件函數(shù)filterdl.cpp/文件協(xié)議函數(shù)frame
20、packet.cpp/表格包函數(shù)icmppacket.cpp/icmp報文協(xié)議包函數(shù)ippacket.cpp/ip報文協(xié)議函數(shù)outputdatadlg.cpp/數(shù)據(jù)導(dǎo)出包函數(shù)rarppacket.cpp/rarp協(xié)議包函數(shù)stdafx.cpp/頭文件tcppacket.cpp/tcp報文協(xié)議函數(shù)testdlg.cpp/測試對話框函數(shù)udppacket.cpp/udp報文協(xié)議對話框六嗅探器的實(shí)現(xiàn)與測試6.1實(shí)現(xiàn)與測試1.在操作菜單中選中啟動,便可以使程序進(jìn)行抓包狀態(tài)。其運(yùn)行效果圖如下所示2.統(tǒng)計(jì)量是程序?qū)Ξ?dāng)前網(wǎng)絡(luò)數(shù)據(jù)包按協(xié)議類型進(jìn)行的簡單的計(jì)數(shù),通過查看界面上如圖所示的位置便可以清楚的看到數(shù)據(jù)
21、包的分類情況。6.2實(shí)驗(yàn)體會實(shí)驗(yàn)中的遇到的問題:在本次實(shí)驗(yàn)中我認(rèn)為有一個問題比較麻煩,就是對抓到的包進(jìn)行分析并提取出相應(yīng)的位填充到對應(yīng)的數(shù)據(jù)類型中,對于這個問題采用的是查看相應(yīng)的協(xié)議書,并從網(wǎng)上看了一下流行的處理辦法。實(shí)驗(yàn)中的收獲:一定程度上加深了對tcp/ip協(xié)議的理解,對課程學(xué)習(xí)打下了一個比較好的基礎(chǔ);用一些設(shè)計(jì)模式在一定程度能提高開發(fā)效能,降低開發(fā)的復(fù)雜度;七附錄(具體實(shí)現(xiàn)代碼請見電子版)主要源代碼如下:網(wǎng)卡配置/adapaterselection.cpp:implementationfileboolcadapaterselection:oninitdialog()cdialog:oni
22、nitdialog();/初始化樹形選擇htreeitemroot=m_treeadapater.insertitem(_t(網(wǎng)絡(luò)適配器);if(pcap_findalldevs(&m_palldevs,m_strerrorbuf)=-1)returnfalse;for(m_pdev=m_palldevs;m_pdev!=null;m_pdev=m_pdev-next)chartemp400;cstringstrtext;htreeitemhsubitem=m_treeadapater.insertitem(m_pdev-name,root);if(m_pdev-description!=nu
23、ll)strtext.format(網(wǎng)卡描述信息:%s,m_pdev-description);m_treeadapater.insertitem(strtext,hsubitem);elsem_treeadapater.insertitem(網(wǎng)卡描述信息:空,hsubitem);if(m_pdev-addresses!=null&m_pdev-addresses-addr!=null)iptos(structsockaddr_in*)m_pdev-addresses-addr)-sin_addr.s_addr,temp);strtext.format(ip地址:%s,temp);m_tree
24、adapater.insertitem(strtext,hsubitem);elsem_treeadapater.insertitem(ip地址:空,hsubitem);if(m_pdev-addresses!=null&m_pdev-addresses-broadaddr!=null)iptos(structsockaddr_in*)m_pdev-addresses-broadaddr)-sin_addr.s_addr,temp);strtext.format(廣播地址:%s,temp);m_treeadapater.insertitem(strtext,hsubitem);elsem_tr
25、eeadapater.insertitem(廣播地址:無,hsubitem);if(m_pdev-addresses!=null&m_pdev-addresses-netmask!=null)iptos(structsockaddr_in*)m_pdev-addresses-netmask)-sin_addr.s_addr,temp);strtext.format(子網(wǎng)掩碼:%s,temp);m_treeadapater.insertitem(strtext,hsubitem);elsem_treeadapater.insertitem(子網(wǎng)掩碼:空,hsubitem);if(m_pdev-a
26、ddresses!=null&m_pdev-addresses-dstaddr!=null)iptos(structsockaddr_in*)m_pdev-addresses-dstaddr)-sin_addr.s_addr,temp);strtext.format(目地地址:%s,temp);m_treeadapater.insertitem(strtext,hsubitem);elsem_treeadapater.insertitem(目地地址:無,hsubitem);m_pdev=null;m_treeadapater.expand(root,tve_expand);returntrue
27、;/returntrueunlessyousetthefocustoacontrol/exception:ocxpropertypagesshouldreturnfalsevoidcadapaterselection:ondblclktreenetworkadapters(nmhdr*pnmhdr,lresult*presult)htreeitemhsubitem=m_treeadapater.getselecteditem();if(m_treeadapater.getparentitem(hsubitem)=null)return;elseif(m_treeadapater.getitem
28、text(m_treeadapater.getparentitem(hsubitem)!=網(wǎng)絡(luò)適配器)hsubitem=m_treeadapater.getparentitem(hsubitem);m_pdev=m_palldevs;while(strcmp(m_pdev-name,m_treeadapater.getitemtext(hsubitem)!=0)/找到被選中網(wǎng)卡m_pdev=m_pdev-next;*presult=0;arp協(xié)議包/arppacket.cpp:implementationofthecarppacketclass.carppacket:carppacket(co
29、nstunsignedchar*buf,constunsignedintbuflen)unsignedchar*pos=(unsignedchar*)buf;m_nhaddrtype=(*pos)*0x100+(*(pos+1);pos+=2;。cstringcarppacket:gethaddrtype()returngetdata(m_nhaddrtype);/硬件地址類型。捕獲包/capturepacket.cpp:definestheclassbehaviorsfortheapplication.begin_message_map(ccapturepacketapp,cwinapp)o
30、n_command(id_help,cwinapp:onhelp)end_message_map()ccapturepacketapptheapp;目標(biāo)文件/dirdialog.cpp:implementationofthecdirdialogclass.staticint_stdcallbrowsectrlcallback(hwndhwnd,uintumsg,lparamlparam,lparamlpdata)cdirdialog*pdirdialogobj=(cdirdialog*)lpdata;if(umsg=bffm_initialized)if(!pdirdialogobj-m_st
31、rseldir.isempty():sendmessage(hwnd,bffm_setselection,true,(lparam)(lpctstr)(pdirdialogobj-m_strseldir);:sendmessage(hwnd,bffm_enableok,0,true);return0;intcdirdialog:dobrowse(cwnd*pwndparent)if(!m_strseldir.isempty()m_strseldir.trimright();if(m_strseldir.right(1)=|m_strseldir.right(1)=/)m_strseldir=m
32、_strseldir.left(m_strseldir.getlength()-1);lpmallocpmalloc;if(shgetmalloc(&pmalloc)!=noerror)returnfalse;browseinfobinfo;lpitemidlistpidl;zeromemory(pvoid)&binfo,sizeof(browseinfo);if(!m_strinitdir.isempty()olecharolepathmax_path;ulongcheaten;ulongdwattributes;hresulthr;lpshellfolderpdesktopfolder;i
33、f(succeeded(shgetdesktopfolder(&pdesktopfolder)multibytetowidechar(cp_acp,mb_precomposed,m_strinitdir.getbuffer(max_path),-1,olepath,max_path);m_strinitdir.releasebuffer(-1);hr=pdesktopfolder-parsedisplayname(null,null,olepath,&cheaten,&pidl,&dwattributes);if(failed(hr)pmalloc-free(pidl);pmalloc-rel
34、ease();returnfalse;binfo.pidlroot=pidl;binfo.hwndowner=pwndparent=null?null:pwndparent-getsafehwnd();binfo.pszdisplayname=m_strpath.getbuffer(max_path);binfo.lpsztitle=m_strwindowtitle;binfo.ulflags=bif_returnfsancestors|bif_returnonlyfsdirs|(false/*m_bstatus*/?bif_statustext:0);binfo.lpfn=browsectr
35、lcallback;binfo.lparam=(lparam)this;if(pidl=:shbrowseforfolder(&binfo)=null)returnfalse;m_strpath.releasebuffer();m_iimageindex=binfo.iimage;if(:shgetpathfromidlist(pidl,m_strpath.getbuffer(max_path)=false)pmalloc-free(pidl);pmalloc-release();returnfalse;m_strpath.releasebuffer();pmalloc-free(pidl);
36、pmalloc-release();returntrue;文件協(xié)議/filterdl.cpp:implementationfilecfilterdl:cfilterdl(cwnd*pparent/*=null*/):cdialog(cfilterdl:idd,pparent)voidcfilterdl:dodataexchange(cdataexchange*pdx)cdialog:dodataexchange(pdx);ddx_control(pdx,idc_tab_ctr,m_tctr);begin_message_map(cfilterdl,cdialog)on_notify(tcn_s
37、elchange,idc_tab_ctr,onselchangetabctr)end_message_map()boolcfilterdl:oninitdialog()cdialog:oninitdialog();tcitemitem;item.mask=tcif_text;item.psztext=第一頁;m_tctr.insertitem(0,&item);item.psztext=第二頁;m_tctr.insertitem(1,&item);m_dlg1.create(idd_aboutbox,&m_tctr);m_dlg2.create(idd_dialog_outputdata,&m
38、_tctr);m_dlg1.setwindowpos(null,10,30,400,100,swp_showwindow);m_dlg2.setwindowpos(null,10,30,400,100,swp_hidewindow);returntrue;voidcfilterdl:onselchangetabctr(nmhdr*pnmhdr,lresult*presult)*presult=0;表格包/framepacket.cpp:implementationofthecframepacketclass.cframepacket:cframepacket(constunsignedchar
39、*buf,intbuflen)unsignedchar*ppos;ppos=(unsignedchar*)buf;for(inti=0;i6;i+)m_ndestaddri=*ppos;ppos+;for(i=0;i5)pos+=4;m_noptlength=(m_nheaderlength-5)*4;m_poptions=newunsignedcharm_noptlength;memcpy(m_poptions,buf+20,m_noptlength);elsem_noptlength=0;m_poptions=null;pos=(unsignedchar*)(buf+m_nheaderle
40、ngth*4);m_ndatalength=m_utotallength-m_nheaderlength*4;if(m_ndatalength0)m_pdata=newunsignedcharm_ndatalength;memcpy(m_pdata,buf+m_nheaderlength*4,m_ndatalength);elsem_pdata=null;cstringcippacket:getprotocol()cstringstr;switch(m_nprotocol)case6:str.format(tcp);break;case17:str.format(udp);break;case
41、1:str.format(icmp);break;case89:str.format(ospf);break;default:str.format(%d,m_nprotocol);returnstr;cstringcippacket:getdestip()cstringstr;inttemp=m_ldestip;unsignedchari0,i1,i2,i3;i0=(temp&0xff000000)/0x1000000;i1=(temp&0x00ff0000)/0x10000;i2=(temp&0x0000ff00)/0x100;i3=temp&0x000000ff;str.format(%0
42、03u.%003u.%003u.%003u,i0,i1,i2,i3);returnstr;cstringcippacket:getsrcip()cstringstr;inttemp=m_lsrcip;unsignedchari0,i1,i2,i3;i0=(temp&0xff000000)/0x1000000;i1=(temp&0x00ff0000)/0x10000;i2=(temp&0x0000ff00)/0x100;i3=temp&0x000000ff;str.format(%003u.%003u.%003u.%003u,i0,i1,i2,i3);returnstr;unsignedchar
43、*cippacket:gettdata()if(m_pdata!=null)returnm_pdata;returnnull;intcippacket:getdatalength()returnm_ndatalength;/得到版本號cstringcippacket:getversion()returngetint(m_nversion);。數(shù)據(jù)導(dǎo)出/outputdatadlg.cpp:implementationfilecoutputdatadlg:coutputdatadlg(cwnd*pparent/*=null*/):cdialog(coutputdatadlg:idd,pparent
44、)m_strdirpath=_t();m_strfilename=_t();voidcoutputdatadlg:dodataexchange(cdataexchange*pdx)cdialog:dodataexchange(pdx);ddx_text(pdx,idc_edit_dirpath,m_strdirpath);ddx_text(pdx,idc_edit_filename,m_strfilename);begin_message_map(coutputdatadlg,cdialog)on_bn_clicked(idc_button_selectiondir,onbuttonselec
45、tiondir)end_message_map()voidcoutputdatadlg:onbuttonselectiondir()updatedata();cdirdialogdlg;if(dlg.dobrowse(this)0)m_strdirpath=dlg.m_strpath;updatedata(false);voidcoutputdatadlg:onok()updatedata();if(m_strfilename.getlength()=0)afxmessagebox(文件名為空);return;elseif(m_strfilename.find(.xml)=0)m_strfilename+=.xml;if(m_strdirpath.getlength()5)pos+=2;m_noptlen=m_nheadlen*4-20;m_poptions=newunsignedcharm_noptlen;memcpy(m_popti
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年原奶項(xiàng)目項(xiàng)目投資籌措計(jì)劃書代可行性研究報告
- 醫(yī)療協(xié)同政策解讀課件教學(xué)
- 融資平臺項(xiàng)目制管理辦法
- 衡陽市固體廢物管理辦法
- 街道應(yīng)急消防車管理辦法
- 裝配式物業(yè)用房管理辦法
- 西安市能源管理辦法規(guī)定
- 計(jì)日工管理辦法百度文庫
- 證券投資基金管理公司管理辦法
- 財(cái)務(wù)處獎懲管理辦法心得
- GB/T 20975.1-2007鋁及鋁合金化學(xué)分析方法第1部分:汞含量的測定冷原子吸收光譜法
- 糧食行業(yè)技能競賽糧油保管員考試試題及答案
- 清真食堂承包投標(biāo)書
- 馬克思主義的世界觀和方法論
- 醫(yī)院處方箋-模板
- 道路綜合巡查工作流程
- 香港聯(lián)合交易所有限公司證券上市規(guī)則
- 測量成果驗(yàn)收單
- 冰毯機(jī)的使用與護(hù)理
- 封樣標(biāo)簽樣本(1)
- 北京市村合作經(jīng)濟(jì)組織會計(jì)制度實(shí)施細(xì)則
評論
0/150
提交評論