-
大小: 7.76MB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-09-24
- 語言: C/C++
- 標(biāo)簽: IP數(shù)據(jù)包??捕獲??解析??C++??
資源簡介
IP數(shù)據(jù)包的捕獲與解析,捕獲原則是規(guī)定IP數(shù)據(jù)包的個(gè)數(shù),C++語言實(shí)現(xiàn),控制臺輸出運(yùn)行結(jié)果

代碼片段和文件信息
//?PacketParse.cpp?:?定義控制臺應(yīng)用程序的入口點(diǎn)。
//
#include?“stdafx.h“
#include?
#include?
#include?
#pragma?comment(lib“ws2_32.lib“)?//加載ws2_32.lib
using?namespace?std;
#define?IO_RCVALL?_WSAIOW(IOC_VENDOR1)
typedef?struct?IP_HEAD?//定義IP頭部結(jié)構(gòu)
{
union
{
unsigned?char?Version;?//版本(字節(jié)的前4位)
unsigned?char?HeadLen;?//頭部長度(字節(jié)的后4位)
};
unsigned?char?ServiceType;?//服務(wù)類型
unsigned?short?TotallLen;?//總長度
unsigned?short?Identifier;?//標(biāo)識符
union?
{
unsigned?short?Flags;?//標(biāo)志位(字節(jié)的前3位)
unsigned?short?FragOffset;?//片偏移(字節(jié)的后13位)
};
unsigned?char?TimeToLive;?//生存周期
unsigned?char?Protocol;?//協(xié)議
unsigned?short?HeadChecksum;?//頭部校驗(yàn)和
unsigned?int?SourceAddr;?//源IP地址
unsigned?int?DestinAddr;?//目的IP地址
unsigned?char?Options;?//選項(xiàng)
}ip_head;
void?main()
{
int?packsum;
cout?<“請輸入捕獲IP數(shù)據(jù)包的個(gè)數(shù):“?< cin?>>?packsum;
//建立與Socket庫綁定
WSADATA?WSAData;?
if?(WSAStartup(MAKEWORD(2?2)?&WSAData)?!=?0)
{
cout?< return;
}
//創(chuàng)建原始Socket
SOCKET?sock?=?socket(AF_INET?SOCK_RAW?IPPROTO_IP);
if?(sock?==?INVALID_SOCKET)?
{
cout?< cout?< return;
}
//設(shè)置IP頭操作選項(xiàng)
int?flag?=?1;
if?(setsockopt(sock?IPPROTO_IP?IP_HDRINCL?(char*)&flag?sizeof(flag))
==?SOCKET_ERROR)?
{
cout?< cout?< return;
}
//獲得本地主機(jī)名
char?hostName[128];
if?(gethostname(hostName?100)?==?SOCKET_ERROR)?
{
cout?< return;
}
//獲取本地IP地址
hostent*?pHostIP;
if?((pHostIP?=?gethostbyname(hostName))?==?NULL)
{
cout?< return;
}
//填充sockaddr_in
sockaddr_in?host_addr;
host_addr.sin_family?=?AF_INET;
host_addr.sin_port?=?htons(6000);
host_addr.sin_addr?=?*(in_addr*)pHostIP->h_addr_list[0];
//socket綁定本地網(wǎng)卡
if?(bind(sock?(PSOCKADDR)&host_addr?sizeof(host_addr))?==?SOCKET_ERROR)
{
cout?< return;
}
DWORD?dwBufferLen[10];
DWORD?dwBufferInLen?=?1;
DWORD?dwBytesRetruned?=?0;
//設(shè)置socket接收所有IP包
if?(WSAIoctl(sock?IO_RCVALL?&dwBufferInLen?sizeof(dwBufferInLen)
&dwBufferLen?sizeof(dwBufferLen)?&dwBytesRetruned?NULL?NULL)
==?SOCKET_ERROR)
{
cout?< return;
}
cout?< char?buffer[65535];?//設(shè)置緩沖區(qū)大小
for?(int?i?=?0;?i? {
if?(recv(sock?buffer?65535?0)>0)
{
ip_head?ip?=?*(ip_head*)buffer;?//緩沖區(qū)內(nèi)容強(qiáng)制轉(zhuǎn)化
//逐位解析IP頭部的各字段信息
cout?<“---------------------------“?< cout?<“版本:“?<(ip.Version?>>?4)?< cout?<“頭部長度:“?<((ip.HeadLen?&?0x0f)?*?4)?< cout?<“服務(wù)類型:Priority“?<(ip.ServiceType?>>?5)?<“,Service“?<<
((ip.ServiceType)?>>?1?&?0x0f)?< cout?<“總長度:“?< cout?<
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????70656??2014-11-25?17:04??PacketParse\Debug\PacketParse.exe
?????文件?????909044??2014-11-25?17:04??PacketParse\Debug\PacketParse.ilk
?????文件????1321984??2014-11-25?17:04??PacketParse\Debug\PacketParse.pdb
?????文件????3080192??2014-11-19?14:48??PacketParse\ipch\packetparse-d532772c\packetparse-83c17a3f.ipch
?????文件???????1463??2014-11-25?17:04??PacketParse\PacketParse\Debug\PacketParse.log
?????文件?????195638??2014-11-25?17:04??PacketParse\PacketParse\Debug\PacketParse.obj
?????文件???????1482??2014-11-25?17:04??PacketParse\PacketParse\Debug\PacketParse.tlog\cl.command.1.tlog
?????文件??????31144??2014-11-25?17:04??PacketParse\PacketParse\Debug\PacketParse.tlog\CL.read.1.tlog
?????文件????????976??2014-11-25?17:04??PacketParse\PacketParse\Debug\PacketParse.tlog\CL.write.1.tlog
?????文件???????1248??2014-11-25?17:04??PacketParse\PacketParse\Debug\PacketParse.tlog\li
?????文件???????2916??2014-11-25?17:04??PacketParse\PacketParse\Debug\PacketParse.tlog\li
?????文件????????510??2014-11-25?17:04??PacketParse\PacketParse\Debug\PacketParse.tlog\li
?????文件????????157??2014-11-25?17:04??PacketParse\PacketParse\Debug\PacketParse.tlog\PacketParse.lastbuildstate
?????文件??????11470??2014-11-25?16:08??PacketParse\PacketParse\Debug\stdafx.obj
?????文件?????773120??2014-11-25?17:04??PacketParse\PacketParse\Debug\vc120.idb
?????文件?????495616??2014-11-25?17:04??PacketParse\PacketParse\Debug\vc120.pdb
?????文件???????3903??2014-11-25?17:04??PacketParse\PacketParse\PacketParse.cpp
?????文件???????6345??2014-11-19?14:59??PacketParse\PacketParse\PacketParse.o
?????文件???????4620??2014-11-19?14:48??PacketParse\PacketParse\PacketParse.vcxproj
?????文件???????1318??2014-11-17?13:22??PacketParse\PacketParse\PacketParse.vcxproj.filters
?????文件???????1538??2014-11-17?13:22??PacketParse\PacketParse\ReadMe.txt
?????文件????????217??2014-11-17?13:22??PacketParse\PacketParse\stdafx.cpp
?????文件????????234??2014-11-17?13:22??PacketParse\PacketParse\stdafx.h
?????文件????????236??2014-11-17?13:22??PacketParse\PacketParse\targetver.h
?????文件???34537472??2014-11-27?13:16??PacketParse\PacketParse.sdf
?????文件????????979??2014-11-17?13:22??PacketParse\PacketParse.sln
????..A..H.?????18944??2014-11-27?13:16??PacketParse\PacketParse.v12.suo
?????目錄??????????0??2014-11-25?17:04??PacketParse\PacketParse\Debug\PacketParse.tlog
?????目錄??????????0??2014-11-19?14:48??PacketParse\ipch\packetparse-d532772c
?????目錄??????????0??2014-12-02?12:51??PacketParse\PacketParse\Debug
............此處省略7個(gè)文件信息
- 上一篇:MFC打印圖片文字
- 下一篇:grid report4.5破解版.zip
評論
共有 條評論