就下载 —— 安全下载、无毒手机软件、绿色软件官方下载网站最近更新|下载排行|热门标签|收藏本站

您现在的位置是:就下载 > IT资讯 > 软件教程 > 使用Socket实现简单的网络嗅探器,对TCP/IP数据包进行截取

使用网络嗅探器,可以把网卡置于混杂模式,实现对网络上传输的数据包进行截获和分析。很多防火墙也是通过截取数据包并进行分析来确定是否让数据包继续传输下去。本文使用Socket实现一个简单的网络嗅探器,对TCP/IP数据包进行截取,显示。

一、IP协议格式如下:

根据IP协议格式可以定义IP头的数据类型:

//IP协议结构
typedef struct _IP_HEADER{
BYTE bVerAndHLen; /*版本信息(前4位)和头长度(后4位)*/
BYTE bTypeOfService; //服务类型
USHORT nTotalLength; //数据包长度
USHORT nID; //数据包标识
USHORT nReserved; //保留字段
BYTE bTTL; //生成时间
BYTE bProtocol; //协议类型
USHORT nCheckSum; //校验和
UINT nSourIp; //源IP
UINT nDestIp; //目的IP
}IP_HEADER,*PIP_HEADER;

二、TCP和UDP协议格式

因此TCP和UDP数据结构如下:

//定义TCP协议结构
typedef struct _TCP_HEADER{
USHORT nSourPort;
USHORT nDestPort;
UINT nSequNum;
UINT nAcknowledgeNum;
USHORT nHLenAndFlag;
USHORT nWindowSize;
USHORT nCheckSum;
USHORT nrgentPointer;
}TCP_HEADER,*PTCP_HEADER;

//定义UDP协议结构
typedef struct _UDP_HEADER{
USHORT nSourPort;
USHORT nDestPort;
USHORT nLength;
USHORT nCheckSum;
}UDP_HEADER,*PUDP_HEADER;

设置网卡混杂模式

  通常,网卡只接受和自己地址相关的信息包,即发送到本地的信息包,当设置网卡为混杂模式时,会接受所有的IP包。 基于这样的模式,可以分析各种信息包并描述出网络的结构和使用的机器,由于它接收任何一个在同一网段上传输的数据包,所以也就存在着捕获密码、各种信息、秘密文档等一些没有加密的信息的可能性(仅供学习研究)。

//#define SIO_RCVALL _WsaiOW(IOC_VENDOR,1)
// 设置为混杂模式,收所有IP包
DWORD dwValue = 1 ;
if ( ioctlsocket ( MonSock, SIO_RCVALL, &dwValue ) != 0 )
return 0 ;

调用Socket 的recv函数,接收所有的IP包,根据IP报头提供的信息,可以获取整个包的详细信息。

VC++下实现代码下载

上一篇:在YY里OW自建的娱乐公会是怎样运作的?

本文地址:软件教程 >> http://www.9xz.net/it/ruanjianjiaocheng/18324.html

下一篇:最新PSV系统固件PSVita 2.0 升级教程

  • 打印
推荐阅读
热门专题
推荐内容
热点内容