您现在的位置:网侠>网络冲浪>网络技术>正文
正文

在局域网中进行IP包捕获的一种方法

文章来源:315安全网 文章作者: 发布时间:2007-07-14 【字体:
收藏本文】 【推荐好友】 【进入博客】 【进入论坛

在局域网进行IP包捕获的一种方法 字串9

 

字串3

首先是几个结构的定义(网上搜索或者查阅相关文档): 字串9

  字串9

//定义IP地址结构 字串7

struct IPADDRESS 字串3

{

字串2

unsigned short ip_a, 字串2

ip_b,

字串8

ip_c,

字串8

ip_d; 字串1

};

字串5

  字串9

//定义IP数据包头的结构 字串3

struct IP_HEADER

字串8

{ 字串8

unsigned short ip_version, /*IP的版本号 */

字串9

ip_hdr_len, /*IP包头的长度*/ 字串3

ip_tos, /*IP包的服务类型*/ 字串8

ip_total_len, /*IP包的总长度*/

字串3

ip_id, /*IP包的分段标识*/

字串3

ip_flags, /*IP包的分段标志*/

字串6

ip_frag_offset, /*IP包的分段偏移*/ 字串8

ip_ttl, /*IP包的生存时间*/ 字串6

ip_proto, /*IP包的高层协议*/ 字串7

ip_hdr_chksum; /*IP包的校验和*/

字串2

  字串3

struct IPADDRESS ip_src_addr, /*IP包的源IP地址*/

字串3

ip_dest_addr; /*IP包的目的IP地址*/

字串4

}ipheader; 字串1

  字串5

//IP包的链表结构

字串1

struct stru_ip_link

字串6

{ 字串9

char rcv_ip_buf[MAX_IP_SIZE];

字串4

struct stru_ip_link *next;

字串4

};

字串3

  字串5

然后是协议的定义(包含相应的头文件#include #include): 字串8

  字串8

DWORD dwIoControlCode=SIO_RCVALL, /*接收所有的IP包*/ 字串5

dwProtocol=IPPROTO_IP; /*协议类型为IP*/

字串9

 

字串2

然后是相应的捕获处理: 字串2

  字串6

1.加载 Winsock

字串5

  字串9

2.创建一个接收原始IP包的socket连接

字串8

 

字串9

3.绑定到一个接口 字串6

  字串3

4.进行WSAIoctl设置,接收所有的IP数据字串2

  字串5

参考代码: 字串8

 

字串6

if (WSAIoctl(s, dwIoControlCode, &optval, sizeof(optval),

字串6

NULL, 0, &dwBytesRet, NULL, NULL) == SOCKET_ERROR)

字串1

  字串7

... 字串4

 

字串3

5.接着设定一个线程进行捕获:

字串9

 

字串6

(1)创建一个接收IP包的链表头

字串9

  字串8

(2)设置一个标识,为真,则不断进行IP包的捕获 字串3

  字串1

(3)建立一个新的结点,将捕获的数据包加入到该结点

字串1

 

字串5

(4)如果链表的长度达到指定的长度,创建一个线程对该链表的IP包进行解析;再设置一个在IP数据包链表不足给定的长度,而又中止IP捕获时,对链表的处理 字串4

  字串4

(5)为下一个IP包链表创建一个链表头 字串8

 

字串6

6.建立一个进行IP包解析并显示的线程,进行解析IP数据包,然后显示IP数据包。 字串2




上一篇:协议欺骗攻击技术常见种类简析及防范  下一篇:交换环境下SNIFFER的几种攻击技术手段
推荐新闻
     
 
邮箱:ewind@qq.com
建议您使用:1024*768以上分辩率浏览本站 如果你喜欢本站 请收藏本站 并推荐给你的朋友一起分享
免责声明:本站部分内容收集于网络,版权归原作者及出版社所有!如果您觉得侵犯了您的版权请来信告诉我们,我们会尽快删除其内容!