西西软件下载最安全的下载网站、值得信赖的软件下载站!

首页西西教程其它教程 → 使用Socket实现简单的网络嗅探器,对TCP/IP数据包进行截取

使用Socket实现简单的网络嗅探器,对TCP/IP数据包进行截取

前往专题相关软件相关文章发表评论 来源:西西整理时间:2012/11/25 22:15:35字体大小:A-A+

作者:西西点击:0次评论:0次标签: 网络嗅探

Wireshark(网络嗅探抓包工具)v1.4.9 中文版(包含中文手册+主界面的操作菜单)
  • 类型:远程监控大小:22M语言:中文 评分:7.5
  • 标签:
立即下载

使用网络嗅探器,可以把网卡置于混杂模式,实现对网络上传输的数据包进行截获和分析。很多防火墙也是通过截取数据包并进行分析来确定是否让数据包继续传输下去。本文使用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++下实现代码下载

    抓包工具
    (13)抓包工具
    西西软件园提供好用的抓包工具中文版下载,抓包工具可以在等各种平台运行的网络监听软件,主要是针对协议的不安全性对运行该协议的机器进行监听。其功能相当于下的,都是在一个共享的网络环境下对数据包进行捕捉和分析,而且还能够自由地为其增加某些插件以实现额外功能。...更多>>

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)