欢迎来到天天文库
浏览记录
ID:57120620
大小:383.00 KB
页数:41页
时间:2020-08-01
《使用WinPcap编写Sniffer程序课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、使用WinPcap编写Sniffer程序内容介绍嗅探器原理Winpcap介绍Winpcap安装Winpcap应用程序结构Sniffer(嗅探器)设计原理通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧,比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包既可以是发给本机的也可以是发往别处的。通过将网络接口设置为混杂模式可以使它接收所有经过它的数
2、据包(例如以太网帧将会到达同一局域网的所有网络接口)。但是,此时操作系统不再行底层的细节操作(协议处理,流量均衡等),而是将拆封解释处理接收到的数据帧(frame)的任务交给应用程序完成,这样应用程序就可以灵活的获取各类信息。什么是Winpcap网络数据包捕获库函数直接访问网络,免费、公用工作于驱动层,网络操作高效为应用程序提供了一组API接口编程容易,源码级移植方便Libpcap(UNIX)库Winpcap(Windows)库Winpcap介绍WinPcap主要功能捕获原始数据包将数据包发送给应用程序之前,按照用户规定的规范过滤数据
3、包将捕获到的数据包输出到文件中,并可以对这些文件进行再分析向网络发送原始数据包搜集网络传输统计数据Winpcap介绍哪些应用适合使用WinPcap网络和协议分析networkandprotocolanalyzers网络监控networkmonitors流量记录trafficloggers流量产生trafficgenerators用户级网桥和路由器user-levelbridgesandrouters网络入侵检测networkintrusiondetectionsystems(NIDS)网络扫描networkscanners安全工具se
4、curitytoolsWinpcap介绍WinPcap不能胜任的事情WinPcap从主机的协议(如TCP/IP)独立收发数据包。这意味着它不能阻塞、过滤或者处理同一主机上其他程序产生的数据包:它仅仅嗅探网线上传输的数据包。所以它不适合应用于流量均衡、QoS调度和个人防火墙。Winpcap介绍Winpcap的安装下载安装包和开发包winpcap.polito.itWinpcap的安装包(Winpcap_3_1.exe)程序员开发包(WpdPack_3_1.zip)运行Winpcap_3_1.exe测试安装结果Winpcap安装编程环境设
5、定1.以Administrator身份登录Windows(2000/XP),运行一次Winpcap自带例程,此后可以一般用户身份使用2.运行VisualC++6.0,打开WpdPack_3_1WpdPackExamples-pcap下的任一项目(本例用basic_dump目录下basic_dump.dsw)3.在“工程->设置->Link->对象/库模块”中加入wsock32.libws2_32.libwpcap.lib在“工具->选择->目录”的includefiles和libraryfiles设置中引入winpcap开发包中
6、的Include和Lib目录4.编译,运行Winpcap安装Winpcap安装例程运行结果:WinPcap的典型应用获得已安装设备的高级信息过滤数据包获得设备列表打开一个适配器回调机制直接方式解析数据包获得网络流量统计数字打开离线数据包文件获得设备列表(一)一个基本的WinPcap应用程序所需的第一步就是获得合适的网络适配器。Libpcap提供pcap_findalldevs()函数完成这个功能。这个函数返回一个相连的pcap_if结构的列表,列表的每一项包含关于适配器的复杂的信息。特别的,name和description域数据包含设
7、备的名称和可读的描述。pcap_if_t*alldevs,*d;inti=0; charerrbuf[PCAP_ERRBUF_SIZE]; if(pcap_findalldevs(&alldevs,errbuf)==-1) {fprintf(stderr,"Errorinpcap_findalldevs:%s",errbuf); exit(1); }for(d=alldevs;d;d=d->next){/*Printthelist*/printf("%d.%s",++i,d->name);
8、 if(d->description)printf("(%s)",d->description); else printf("(Nodescriptionavailable
此文档下载收益归作者所有