ip數(shù)據(jù)包的捕獲與解析代碼_第1頁
ip數(shù)據(jù)包的捕獲與解析代碼_第2頁
ip數(shù)據(jù)包的捕獲與解析代碼_第3頁
ip數(shù)據(jù)包的捕獲與解析代碼_第4頁
ip數(shù)據(jù)包的捕獲與解析代碼_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、/PackCaptureDlg.h:headerfile#defineIPV4_WERSION4#defineIPV6_WERSION6#defineICMP_PACKET1#defineIGMP_PACKET2#defineTCP_PACKET6#defineEGP_PACKET8#defineUDP_packet17#defineOSPF_PACKET89classCPackCaptureDlg:publicCDialogpublic:/AFX_DATA(CFindHostDlg)enumIDO=IDO_PACKCAPTURE_DIALOG;intm_Count;CStringm_Pack

2、et;/AFX_DATAprotected:/AFX_MSG(CFindHostDlg)afx_msgvoidOnCapture();/AFX_MSGprivate:typedefstructIP_HEAD/IP頭部結(jié)構(gòu)unionunsignedcharVersion;/版本(字節(jié)前四位)unsignedcharHeadLen;/頭部長度(字節(jié)后四位);unsignedcharServiceType;/服務(wù)類型unsignedshortTotalLen;/總長度unsignedshortIdentifier;/標(biāo)識符unionunsignedshortFlags;/標(biāo)志位(字前三位)unsig

3、nedshortFragOffset;/片偏移(字后13位);unsignedcharTimeToLive;/生存周期unsignedcharProtocol;/協(xié)議unsignedshortHeadChecksum;/頭部校驗和unsignedintSourceAddr;/源IP地址unsignedintDestinAddr;/目的IP地址ip_head;typedefstructICMP_HEAD/ICMP頭部結(jié)構(gòu)unsignedcharType;/類型unsignedcharCode;/代碼unsignedshortHeadChecksum;/頭部校驗和unsignedshortIden

4、tifior;/標(biāo)識符unsignedshortSequence;/序號icmp_head;/PackCaptureDlg.cpp:implementationfile#includestdafx.h#includePackCaptureDlg.h#includePackCapture.h#includewinsock2.h#includews2tcpip.h#pragmacomment(lib,ws2_32)#defineIO_RCVALL_WSAIOW(IOC_VENDOR,1)voidCPackCaptureDlg:OnCapture()WSADATAWSAData;/建立與Socket

5、庫綁定if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)MessageBox(WSAStartup初始化失敗!);return;SOCKETSocket;/創(chuàng)建原始SocketSocket=socket(AF_INET,SOCK_RAW,IPPROTO_IP);if(Socket=INVALID_SOCKET)MessageBox(創(chuàng)建Socket失敗!);WSACleanup();return;intRecvTime=5000;/設(shè)置Socket操作選項if(setsockopt(Socket,SOL_SOCKET,SO_RCVTIMEO,(char*)&Re

6、cvTime,sizeof(RecvTime)=SOCKET_ERROR)MessageBox(設(shè)置Socket選項失敗!);closesocket(Socket);WSACleanup();return;charHostName128;/獲得本地主機名稱if(gethostname(HostName,128)=SOCKET_ERROR)MessageBox(獲得主機名失??!);closesocket(Socket);WSACleanup();return;hostent*pHostent;/獲得本地主機IP地址pHostent=gethostbyname(HostNmae);if(pHost

7、ent=NULL)MessageBox(獲得主機地址失??!);closesocket(Socket);WSACleanup();return;sockaddr_inHostAddr;/定義Socket地址結(jié)構(gòu)memset(&HostAddr,0,sizeof(HostAddr);HostAddr.sin_family=AF_INET;HostAddr.sin_addr.s_addr=(*(in_addr*)pHostent-h_addr).s_addr;intnBind;/綁定Socket與網(wǎng)卡nBind=bind(Socket,(PSOCKADDR)&HostAddr,sizeof(Host

8、Addr);if(nBind=SOCKET_ERROR)MessageBox(綁定Socket失??!”);closesocket(Socket);WSACleanup();return;DWORDdwValue=1;/設(shè)置Socket接受模式if(ioctlsocket(Socket,IO_RCVALL,&dwValue)=SOCKET_ERROR)MessageBox(設(shè)置Socket接收器失敗!);closesocket(Socket);WSACleanup();return;UpdateData(true);m_Packet=版本總長度標(biāo)志位片偏移協(xié)議源地址目的地址內(nèi);for(inti=

9、0;i4)=IPV4_VERSION)STR.Format(IPv4);if(IpHead.Version4)=IPV6_VERSION)STR.Format(IPv6);m_Packet+=str;str.Format(%u,ntohs(IpHead.TotalLen);m_Packet+=str;str.Format(D=%uM=%u,(ntohs(IpHead.Flags)14)&0 x01,(btohs(IpHead.Flags)13)&0 x01);m_Packet+=str;str.Format(%u,ntohs(IpHead.Fragoffset)&0 x1fff);m_Packet+=str;switch(IpHead.Protocol)caseICMP_PACKET:str.Format(ICMP);break;caseIGMP_PACKET:str.Format(IGMP);break;caseTCP_PACKET:str.Format(TCP);break;caseEGP_PACKET:str.Format(EGP);break;caseUDP_PACKET:str.Format(UDP);break;caseOSPF_PACKET:str.Format(OSPF);break;m_Packet+=str;str.Format(

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論