sniffer技术原理及应用包括编程方法和工具使用Word格式文档下载.docx

上传人:b****2 文档编号:15373126 上传时间:2022-10-29 格式:DOCX 页数:13 大小:20.46KB
下载 相关 举报
sniffer技术原理及应用包括编程方法和工具使用Word格式文档下载.docx_第1页
第1页 / 共13页
sniffer技术原理及应用包括编程方法和工具使用Word格式文档下载.docx_第2页
第2页 / 共13页
sniffer技术原理及应用包括编程方法和工具使用Word格式文档下载.docx_第3页
第3页 / 共13页
sniffer技术原理及应用包括编程方法和工具使用Word格式文档下载.docx_第4页
第4页 / 共13页
sniffer技术原理及应用包括编程方法和工具使用Word格式文档下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

sniffer技术原理及应用包括编程方法和工具使用Word格式文档下载.docx

《sniffer技术原理及应用包括编程方法和工具使用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《sniffer技术原理及应用包括编程方法和工具使用Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。

sniffer技术原理及应用包括编程方法和工具使用Word格式文档下载.docx

传统的sniffer技术是被动地监听网络通信、用户名和口令。

而新的sniffer技术出现了主

动地控制通信数据的特点,把sniffer技术扩展到了一个新的领域。

Sniffer 

技术除了目前在传统的

网络侦测管理外,也开始被应用在资讯保全的领域。

可以这样说,sniffer技术是一把双刃剑,如何

更好的利用它,了解它的一些特性,将能使这项技术更好的为我们带来便利。

sniffer的编程方法比较通用的有以下几种,

1.winpcap这是一个比较通用的库,相信做过抓包的工具大多数人都不会太陌生

2.rawsocket在2000以后的版本都支持此项功能,2000server有个网络监视器就是基于rawsocket

3.tdi,ndis,spi,hooksocket技术,这种技术比较大的不同是可以将包截取而不是仅仅获得包的一份拷贝。

总的说来,一般以前两者居多。

一)winpcap驱动简介

winpcap(windowspacketcapture)是windows平台下一个免费,公共的网络访问系统。

发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。

它提供了以下的各项

功能:

1>

捕获原始数据报,包括在共享网络上各主机发送/接收的以及相互之间交换的数据报;

2>

在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;

3>

在网络上发送原始的数据报;

4>

收集网络通信过程中的统计信息。

winpcap的主要功能在于独立于主机协议(如TCP-IP)而发送和接收原始数据报。

也就是说,winp

cap不能阻塞,过滤或控制其他应用程序数据报的发收,它仅仅只是监听共享网络上传送的数据报。

因此,它不能用于QoS调度程序或个人防火墙。

RawSocket(原始套接字)实现Sniffer(嗅探)

一.摘要

RawSocket:

原始套接字

可以用它来发送和接收IP层以上的原始数据包,如ICMP,TCP,UDP...

intsockRaw=socket(AF_INET,SOCK_RAW,IPPROTO_RAW);

这样我们就创建了一个RawSocket

Sniffer:

嗅探器

关于嗅探器的原理我想大多数人可能都知道

1.把网卡置于混杂模式;

2.捕获数据包;

3.分析数据包.

但具体的实现知道的人恐怕就不是那么多了.好,现在让我们用RawSocket的做一个自已的Sniffer.

二.把网卡置于混杂模式

在正常的情况下,一个网络接口应该只响应两种数据帧:

一种是与自己硬件地址相匹配的数据帧

一种是发向所有机器的广播数据帧

如果要网卡接收所有通过它的数据,而不管是不是发给它的,那么必须把网卡置于混杂模式.也就是说让它的思维混乱,不按正常的方式工作.用RawSocket实现代码如下:

setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char*)&

flag,sizeof(flag);

//设置IP头操作选项

bind(sockRaw,(PSOCKADDR)&

addrLocal,sizeof(addrLocal);

//把sockRaw绑定到本地网卡上

ioctlsocket(sockRaw,SIO_RCVALL,&

dwValue);

//让sockRaw接受所有的数据

flag标志是用来设置IP头操作的,也就是说要亲自处理IP头:

boolflag=ture;

addrLocal为本地地址:

SOCKADDR_INaddrLocal;

dwValue为输入输出参数,为1时执行,0时取消:

DWORDdwValue=1;

没想到这么简单吧?

三.捕获数据包

你的sockRaw现在已经在工作了,可以在局域网内其它的电脑上用Sniffer检测工具检测一下,看你的网卡是否处于混杂模式(比如DigitalBrain的ARPKiller).

不能让他白白的浪费资源啊,抓包!

recv(sockRaw,RecvBuf,BUFFER_SIZE,0);

//接受任意数据包

#defineBUFFER_SIZE65535

charRecvBuf[BUFFER_SIZE];

越来越发现Sniffer原来如此的简单了,这么一个函数就已经完成抓取数据包的任务了.

四.分析数据包

这回抓来的包和平常用Socket接受的包可就不是一回事儿了,里面包含IP,TCP等原始信息.要分析它首先得知道这些结构.

数据包的总体结构:

----------------------------------------------

|ipheader|tcpheader(orxheader)|data|

IPheaderstructure:

16 

32bit

|--------|--------|----------------|--------------------------------|

|Ver 

|IHL 

|Typeofservice| 

Totallength 

|

|Identification| 

Flags 

Fragmentoffset 

|Timetolive 

Protocol 

Headerchecksum 

Sourceaddress 

Destinationaddress 

Option+Padding 

Data 

TCPheaderstructure:

|--------------------------------|--------------------------------|

Sourceport 

Destinationport 

Sequencenumber 

Acknowledgementnumber 

|Offset|Resrvd|U|A|P|R|S|F| 

Window 

Checksum 

Urgentpointer 

五.实现Sniffer

OK!

现在都清楚了,还等什么.

下面是我用BCB6写的一个SimpleSniffer的代码,仅供参考.

(需要在工程文件里加入WS2_32.LIB这个文件)

//*************************************************************************//

//*CPPFile:

WMain.cpp

//*SimpleSnifferbyshadowstar

//* 

#include<

vcl.h>

#pragmahdrstop

winsock2.h>

ws2tcpip.h>

mstcpip.h>

netmon.h>

#include"

WMain.h"

//----------------------------------------------

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职高对口

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1