實(shí)驗(yàn)二WINPCWP編程_第1頁(yè)
實(shí)驗(yàn)二WINPCWP編程_第2頁(yè)
實(shí)驗(yàn)二WINPCWP編程_第3頁(yè)
實(shí)驗(yàn)二WINPCWP編程_第4頁(yè)
實(shí)驗(yàn)二WINPCWP編程_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)WIN PCWP編程 實(shí)驗(yàn)?zāi)康?了解WINPCA啲架構(gòu) 學(xué)習(xí)WINPCAP編程 實(shí)驗(yàn)原理 WinPcap 是一個(gè)基于 Win32 平臺(tái)的,用于捕獲網(wǎng)絡(luò)數(shù)據(jù)包并進(jìn)行分析的開(kāi)源庫(kù)比如 sockets 。 這是一 比如協(xié)議處理, 封裝數(shù)據(jù)因?yàn)橛行?yīng)用程序需要直接訪即沒(méi)有被操作系統(tǒng)利用網(wǎng)絡(luò)大多數(shù)網(wǎng)絡(luò)應(yīng)用程序通過(guò)被廣泛使用的操作系統(tǒng)元件來(lái)訪問(wèn)網(wǎng)絡(luò), 種簡(jiǎn)單的實(shí)現(xiàn)方式, 因?yàn)椴僮飨到y(tǒng)已經(jīng)妥善處理了底層具體實(shí)現(xiàn)細(xì)節(jié) 包等等),并且提供了一個(gè)與讀寫(xiě)文件類(lèi)似的,令人熟悉的接口。然而,有些時(shí)候,這種 “簡(jiǎn)單的方式 ”并不能滿(mǎn)足任務(wù)的需求, 問(wèn)網(wǎng)絡(luò)中的數(shù)據(jù)包。 也就是說(shuō), 那些應(yīng)用程序需要訪問(wèn)原始數(shù)據(jù)包, 協(xié)議

2、處理過(guò)的數(shù)據(jù)包。WinPcap 產(chǎn)生的目的,就是為 Win32 應(yīng)用程序提供這種訪問(wèn)方式; WinPcap 提供了以下 功能1.2.3.4.捕獲原始數(shù)據(jù)包,無(wú)論它是發(fā)往某臺(tái)機(jī)器的,還是在其他設(shè)備(共享媒介)上進(jìn)行交換的 在數(shù)據(jù)包發(fā)送給某應(yīng)用程序前,根據(jù)用戶(hù)指定的規(guī)則過(guò)濾數(shù)據(jù)包 將原始數(shù)據(jù)包通過(guò)網(wǎng)絡(luò)發(fā)送出去收集并統(tǒng)計(jì)網(wǎng)絡(luò)流量信息以上這些功能需要借助安裝在 Win32 內(nèi)核中的網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序才能實(shí)現(xiàn), 再加上幾個(gè)動(dòng)態(tài)鏈 接庫(kù) DLL 。所有這些功能都能通過(guò)一個(gè)強(qiáng)大的編程接口來(lái)表現(xiàn)出來(lái),易于開(kāi)發(fā),并能在不同的操作系統(tǒng)上使用。這本手冊(cè)的主要目標(biāo)是在一些程序范例的幫助下,敘述這些編程接口的使用。Win

3、Pcap 的典型應(yīng)用有:WinPcap 可以被用來(lái)制作網(wǎng)絡(luò)分析、監(jiān)控工具。一些基于1.網(wǎng)絡(luò)與協(xié)議分析器(network and protocol analyzers)2.網(wǎng)絡(luò)監(jiān)視器 (network monitors)3.網(wǎng)絡(luò)流量記錄器(traffic loggers)4.網(wǎng)絡(luò)流量發(fā)生器(traffic generators)5.用戶(hù)級(jí)網(wǎng)橋及路由(user-level bridges and routers)6.網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)(network intrusion detection systems (NIDS)7.網(wǎng)絡(luò)掃描器 (network scanners)8.安全工具(security

4、 tools)實(shí)驗(yàn)內(nèi)容通過(guò)學(xué)習(xí)WIN PCA架構(gòu),編寫(xiě)一個(gè)網(wǎng)絡(luò)抓包程序。Winpcap是針對(duì) Win32平臺(tái)上的抓包和網(wǎng)絡(luò)分析 的一個(gè)架構(gòu)。它包括一個(gè) 核心態(tài)的包過(guò)濾器,一個(gè)底層的動(dòng)態(tài)鏈接庫(kù)(packet.dll )和一個(gè)高層的不依賴(lài)于系統(tǒng)的庫(kù)(wpcap .dll )首先,抓包系統(tǒng)必須繞過(guò) 操作系統(tǒng)的協(xié)議棧來(lái)訪問(wèn)在網(wǎng)絡(luò)上傳輸?shù)脑紨?shù)據(jù)包(rawpacket),這就要求一部分運(yùn)行在操作系統(tǒng)核心內(nèi)部,直接與網(wǎng)絡(luò)接口驅(qū)動(dòng)交互。這個(gè)部分是系統(tǒng)依賴(lài)(system dependent )的,在Winpcap的解決方案里它被認(rèn)為是一個(gè)設(shè)備驅(qū)動(dòng),稱(chēng)作 NPF ( Netgroup Packet Filter

5、 )。Winpcap 開(kāi)發(fā)小組針對(duì) Windows95 ,Windows98 ,WindowsME ,Windows NT 4 ,Windows2000 和 WindowsXP 提供了不同版本的驅(qū)動(dòng)。這些驅(qū)動(dòng)不僅提供了基本的特性(例如抓包和injection),還有更高級(jí)的特性(例如可編程的過(guò)濾器系統(tǒng)和監(jiān)視引擎)。前者可以被用來(lái)約束一個(gè)抓包會(huì)話(huà)只針對(duì)網(wǎng)絡(luò)通信中的一個(gè)子集(例如,僅僅捕獲特殊主機(jī)產(chǎn)生的f2通信的數(shù)據(jù)包),后者提供了一個(gè)強(qiáng)大而簡(jiǎn)單的統(tǒng)計(jì)網(wǎng)絡(luò)通信量的機(jī)制(例如,獲得網(wǎng)絡(luò)負(fù)載或兩個(gè)主機(jī)間的數(shù)據(jù)交換量)其次,抓包系統(tǒng)必須有用戶(hù)級(jí)的 程序接口 .,通過(guò)這些接口,用戶(hù)程序 可以利用內(nèi)核驅(qū)動(dòng)提

6、供的高級(jí)特性。Winpcap提供了兩個(gè)不同的庫(kù):packet.dll 和 wpcap.dll。前者提供了一個(gè)底層API,伴隨著一個(gè)獨(dú)立于Microsoft操作系統(tǒng)的編程接口,這些API可以直接用來(lái)訪1問(wèn)驅(qū)動(dòng)的函數(shù);后者導(dǎo)出了一組更強(qiáng)大的與 libpcap 一致的高層抓包函數(shù)庫(kù)(capture操作系統(tǒng)無(wú)關(guān)的方式進(jìn)行。primitives)。這些函數(shù)使得數(shù)據(jù)包的捕獲以一種與網(wǎng)絡(luò)硬件和Z011T恢帆邑1豐切咒ft*5右T刖口“豐如故ftWHSLAh1PJia19U11I*JITLB彈誹歴押厲Jsn艸筋;忙一-afiM_HL+mBTME:JL葉L丄帕刃;IFM.LSA9j7:|=F_HL+陽(yáng)K召L-i

7、 1*18 ia;lfHXO丹;MLWk 花防口請(qǐng)側(cè).FT仟穴肝肝貳姑坯門(mén)軒MMprrerWMOUDuauMlMKk 口gm一 aUXMrOfrW .DI 那PEM.-OlflMarWrt 0 恥 UhDIIKpJIljMlMIf核心代碼:抓包函數(shù)UINT _cdecl CYwkPackDlg: CapThread( LPVOID IpParameter ) CYwkPackDlg* this2 ; pcap_t * adhandle ;char errbuf PCAP_ERRBUF_SIZ; E pcap_dumper_t * dumpfile ;struct pcap_pkthdr * h

8、eader; const u_char * data;DWORDres ;bool bExit ; static long i =0,j =0;ListData List ;struct ether_header * eth;u_char * mac_string ; struct iphead * IPHead; struct arphead * ARPHea;din_addr ipaddr ;this2=( CYwkPackDlg*) IpParameter ;i =0; j =0; charif式)p256;CStringA ts ( this2 - AdapterName. GetBu

9、ffer (); memcp(yp, ts . GetBuffer (), 256);( adhandle = pcap_open_live ( p,65536,1 ,1000, errbuf ) = NULL) / 打開(kāi)網(wǎng)卡接口(混雜模: MessageBox(0,L 不能打開(kāi)網(wǎng)絡(luò)適配器 ,請(qǐng)?jiān)诰W(wǎng)卡設(shè)置中經(jīng)行設(shè)置 ,L 錯(cuò)誤 ,0);EnterCriticalSection (&( this2 - csThreadStop ); / 關(guān)閉線程 2 this2 - bThreadStop =true ;LeaveCriticalSection (&( this2 - csThreadStop

10、);SetEvent ( this2 - eThreadStart );return 0;dumpfile =pcap_dump_open( adhandle , CStringA ( this2 - CapFilePath . GetBuffer (); / 打 開(kāi)數(shù)據(jù)文件失敗if ( dumpfile =NULL):MessageBoXO丄不能打開(kāi)記錄文件丄錯(cuò)誤,0);EnterCriticalSection (&( this2 - csThreadStop ); this2 - bThreadStop=true ;LeaveCriticalSection (&( this2 - csTh

11、readStop ); SetEvent (this2 -eThreadStart );return 0;EnterCriticalSection (&( this2 this2 -bThreadStop=false ;LeaveCriticalSection (&( this2SetEvent (this2 -eThreadStart-csThreadStop ); / 開(kāi)始線程-csThreadStop ););: MessageBox(0,L 開(kāi)始抓包 ,L ok ,0);while (1)EnterCriticalSection (&( this2 - csThreadStop );

12、bExit =this2 -bThreadStop;LeaveCriticalSection (&( this2 - csThreadStop ); if ( bExit ) return 0;res = pcap_next_ex (adhandle,&header,&data ); if (res=0)/ 超時(shí) Sleep(100);continue ;elseif (res ether_shost ;wsprintf (List . sMac,L %02X:%02X:%02X:%02X:%02X:%02,X*mac_string ,*( mac_string +1),*( m ac_str

13、ing +2),*( mac_string +3),*( mac_string +4),*( mac_string +5);mac_string =eth - ether_dhost ;wsprintf (List .dMac,L%02X:%02X:%02X:%02X:%02X:%02,X*mac_string ,*( mac_string +1),*( m ac_string +2),*( mac_string +3),*( mac_string +4),*( mac_string +5);_itow ( header - caplen , List . Len,10); memcp(yLi

14、st .Text , data ,45); / 數(shù)據(jù)不含以太網(wǎng)頭 List .Text 45= 0 ;int len =wcslen ( List .Text );/char *list1=new charlen+1;char * list1 = ( char *) malloc (len + 1); wcstombs( list1 , List .Text , len + 1); list1 len =0;this2 - DecodeChar( list1 ,len );/delete list1;switch ( ntohs ( eth - ether_type ) case ETHERT

15、YPE_A:RP/if(!this2-FilterSet.bAllProtocol& !this2-FilterSet.bArp)bFilter=true;break;wcscpy( List . Procotol ,L ARP);ARPHea=d( arphead *)( data +14);wsprintf (List . sIP,L %d.%d.%d.%d, ARPHea-d arp_source_ip_address 0, ARPHea-d arp_sou rce_ip_address 1, ARPHea-d arp_source_ip_address 2, ARPHea-d arp_

16、source_ip_address 3);p_destination_ip_address tion_ip_address 3);wcscpy( List wcscpy( List break ;wsprintf (List . dIP,L %d.%d.%d.%d, ARPHea-d arp_destination_ip_address 0, ARPHea-d ar1, ARPHea-d arp_destination_ip_address 2, ARPHea-d arp_destina. sPort ,L - ); . dPort ,L - );case ETHERTYPE_REVA: RP

17、wcscpy( List . Procotol ,L RARP); break ;case ETHERTYPE_I:PIPHead=( iphead *)( data +14); ipaddr =IPHead- ip_souce_address ;wsprintf (List . sIP,L %d.%d.%d.%d, ipaddr . S_un. S_un_b. s_b1, ipaddr . S_un. S_un_b. s_b2, ip addr. S_un. S_un_b. s_b3, ipaddr . S_un. S_un_b. s_b4);IPHead- ip_destination_a

18、ddress;wsprintf (List . dIP,L %d.%d.%d.%d, ipaddr . S_un. S_un_b. s_b1, ipaddr . S_un. S_un_b. s_b2, ip addr. S_un. S_un_b. s_b3, ipaddr . S_un. S_un_b. s_b4);switch ( IPHead- ip_protocol )case 1:/if(!this2-FilterSet.bAllProtocol& !this2-FilterSet.bIcmp)bFilter=true;break; wcscpy( List wcscpy( List

19、wcscpy( List break ;. Procotol ,L ICMP); . sPort ,L - );. dPort ,L - );case 6:/if(!this2-FilterSet.bAllProtocol& !this2-FilterSet.bTcp)bFilter=true;break; wcscpy( List . Procotol ,LTCP); wsprintf*)( data +16+20)- th_sportwsprintf*)( data +16+20)- th_dportbreak ;(List . sPort ,L %d, ntohs ( ( );(List

20、 . dPort ,L %d, ntohs ( ( );tcpheadtcpheadcase 17:/if(!this2-FilterSet.bAllProtocol& !this2-FilterSet.bUdp)bFilter=true;break; wcscpy( List . Procotol ,LUDP); wsprintf (List . sPort , L %d , ntohs ( ( *)( data +16+20)- udp_source_port );wsprintf (List . dPort ,L %d, ntohs ( ( );udpheadudphead*)( data +16+20)- udp_destinanion_portbreak ;default :wcscpy( List . Procotol wcscpy( List . sIP,L - wcscpy( List . dIP,L - wcscpy( List . sPort ,L- ); wcscpy( List . dPort ,L- ); break ;丄未知IP包);););break ;case

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論