开发基于winPcap的嗅探器.

合集下载

使用WinPcap编写Sniffer程序

使用WinPcap编写Sniffer程序
经过返回旳构造,我们能够得到探测到旳网卡 设备旳更详尽信息。
typedef struct pcap_if pcap_if_t struct pcap_if {
struct pcap_if *next; char *name; char *description; struct pcap_addr *addresses; bpf_u_int32 flags; /* PCAP_IF_ interface flags */ }; struct pcap_addr { struct pcap_addr *next; struct sockaddr *addr; struct sockaddr *netmask; struct sockaddr *broadaddr; struct sockaddr *dstaddr; };
pcap_compile() 编译一种包过滤器。将一种高级旳、布尔形式表 示旳字符串转换成低档旳、二进制过滤语句,以便被包驱动使用。 pcap_setfilter() 在关键驱动中将过滤器和捕获过程结合在一起。从 这一时刻起,全部网络旳数据包都要经过过滤,经过过滤旳数据 包将被传入应用程序。
过滤设置举例
设备标识 (字符串)
抓包长度
混杂模式
超时时间
捕获数据包(回调机制)
int pcap_loop ( pcap_t * p,
int cnt,
pcap_handler callback,
例如:
u_char * user )
pcap_loop(adhandle, 0, packet_handler, NULL);
打开一种适配器开始捕获数据包
pcap_t * pcap_open_live ( const char * device, int snaplen, int promisc, int to_ms, char * ebuf )

基于Winpcap的网络嗅探器的设计与实现

基于Winpcap的网络嗅探器的设计与实现

性 与可靠 性 日益 受到人们 的重 视 。网络 嗅探 器 可 以有效完 成对 网络 上 传输 数 据 包 的捕 获 , 而收 从 集 与分析 网络 信息 , 网络 流 量监 控 和 故 障 检测 是
所 必 不 可 少 的 工 具 之 一 , 网 络 管 理 与 网 络 安 全 对 具 有重要 的意义 。
Ab t a t Ai n t h e u t wbe fn t r n g me t t ep p r rp ss an t o k s i e t n c p sr c : mi g a es c r y p lmso ewo k ma a e n , a e o o e ew r nf r h Wi p a t i h p wi
a e e o me tp a om n s a sd v l p n lt r a d Viu lC f a e eo me t o l ip a n iu l .T e fn a n a p i cpe o s d v l p n o n c p a d v s a t W C h d me t r i l f u l n
De i n a d I p e e t to f sg n m lm n a i n o
Newo k S i e s d o i p a t r n f r Ba e n W n c p
C HENG 。 n L n I Fa g
( col f o p t cec , agh Istt o eh o g , agh u e 4 5 0 ) Sh o o m ue S i e Hun sin tue f c nl y Hun si b i 3 0 3 C r n i T o H
随着 I e e 的迅 猛发展 , nr t tn 网络 已 1益成 为 工 3

上机:基于WinPcap的网络嗅探器设计与实现

上机:基于WinPcap的网络嗅探器设计与实现
ﻩﻩreturn -1;

ﻩﻩ
ﻩﻩprintf("Enterthe interface number(1-%d):",i);
ﻩscanf("%d",&inum);

ﻩﻩif (inum <1|| inum>i)
ﻩ{
ﻩprintf("\nInterfacenumber outofrange.\n");
ﻩ{
fprintf(stderr,"Error inpcap_findalldevs_ex: %s\n",errbuf);
ﻩﻩexit(1);
ﻩﻩ}

ﻩ/* Printthe list*/
for(d=alldevs;d;d=d->next)
ﻩ{
printf("%d.%s\n",++i,d->name);
ﻩ/*Free thedevicelist*/
ﻩﻩpcap_freealldevs(alldevs);
ﻩﻩreturn -1;
}

/* Jumptothe selectedadapter*/
ﻩfor(d=alldevs, i=0;i<inum-1 ;d=d->next, i++);
ﻩ/*Opentheadapter */
ﻩﻩﻩreturn-1;
ﻩ}
ﻩ}
else
ﻩ{
ﻩﻩ/*Do notcheck fortheswitchtype ('-s') */
ﻩif((fp=pcap_open_live(argv[2],// name ofthe device
ﻩﻩ65536,ﻩﻩﻩﻩﻩ//portion of the packet tocapture.

基于Winpcap嗅探器技术分析与实现

基于Winpcap嗅探器技术分析与实现
全 情 况 ,本 文 提 出 了 Wi n p c a p嗅 探 器 的 算 法 设 计 与 实 断 ,计 算 机 的 中 央处 理 器 并 不 参 与 。 现 。嗅 探 器 最 早 是 为 网络 管 理 人 员 配 备 的 工 具 ,有 了 嗅
网 卡是 网 络 中 节 点 主 机 的关 键 硬 件 设 备 。 对 数 据 的
心 数 据 结 构 设 计 ,函 数 及 Wi n p c a p包获 取 流 程 ,并 最后 给 出了 实验 结果 。
关 键 词 :嗅探 器 ; 网络 安 全 ;数 据 结 构 ;动 态链 接 库 ;函数
随着计算 机技术 和 I n t e r n e t 网 络 技 术 在 生 产 和 生 活 是 否 接 收处 理数 据 ,如 果 认 为 应 该 处 理 ,则 网 卡 就 会 产
可 以通 过 嗅探 器 分 析 网络 流 量 ,找 出 网络 阻 塞 的来 源 。
模 式 :只有 匹配 的 目的 网卡 才 能 接 收 数 据 信 息 。 混 杂 模 式 :网 卡能 够 可 以接 收一 切 通 过 它 的数 据 信 息 。
为 实 现 接 收 网 络 中经 过 网卡 的所 有 数 据 ,需 要 把 网
温 乃 宁 ,龚 尚福
( 西 安科 技大 学 计算 机学 院 ,陕西 西安 7 1 0 0 5 4 )
摘 要 :嗅探 器技 术在 网络 安 全技 术 中 处 于 非 常 重 要 的 作 用 ,直 接 关 系到 网络 中数 据 传 输 的安 全 性 和 可 靠 性 。 本 文 分析 了嗅探 器 的概 念 和 工 作 原 理 、Wi n p c a p嗅探 器 的 功 能 和 组 成 , 阐述 了 Wi n p c a p嗅 探 器 的 核

嗅探器的实现

嗅探器的实现

通信网络编程实验嗅探器的实现班级:学号:姓名:一、实验目的掌握基于Winpcap的协议分析器的设计方法二、原理介绍嗅探器程序一般包括内核部分和用户分析部分。

1)内核部分负责从网络中捕获和过滤数据。

2)用户分析部分负责界面、数据转化与处理、格式化、协议分析,如果在内核没有过滤数据包,在这里还要对数据进行过滤。

一个较为完整的基于网络监听和过滤的程序一般包括以下步骤:1)数据包捕获2)数据包过滤与分解3)数据分析数据包捕获常用的方法有两种:1)通过设置硬路由器的监听端口;2)利用以太网络的广播特性。

这种方式必须将网卡设置为混杂(promiscuous)模式。

监听程序工作在网络环境的底三层,可以拦截所有经过该机器的网络上传送的数据,然后将这些数据做相应处理,可以实时分析这些数据的内容,进而分析网络当前状态和整体布局。

基于windows的数据包捕获方案有以下几种:1)使用原始套接字(row socket)机制。

方法简单,但功能有限,只能捕获较高层的数据包;2)直接连接调用NDIS库函数,这种方法功能非常强大,但是比较危险,很可能导致系统崩溃和网络瘫痪;基于windows的数据包捕获方案有以下几种:1)使用或者自行编写中间层驱动程序,这是微软公司推荐使用的一种方法,微软提供的win2000 DDK中也提供了几个这样的驱动程序。

在具体的实现方式上可分为用户级和内核级两类。

其中内核级主要是TDI捕获过滤驱动程序,NDIS中间层捕获过滤驱动程序,NDIS捕获过滤钩子驱动程序等,它们都是利用网络驱动来实现的;而用户级的包括SPI接口,Windows2000包捕获过滤接口等;2)使用或自行编写协议驱动程序;3)使用第三方捕获组件或者库,比如Winpcap。

捕获数据包后要进行的工作是对其进行包过滤与分解,就是在海量的数据里面找我们感兴趣的内容。

一些基础的过滤规则如下:1)站过滤:专门筛选出来自一台主机或者服务器的数据;2)协议过滤:根据不同的协议来筛选数据,例如:选择TCP数据而非UDP数据;3)服务过滤:根据端口号来选择特定数据包;4)通用过滤:通过数据包中某一特定位置开始,选择具有某些共同数据特征的数据包;过滤完成后,必须进行数据分析,这一部分就是对已经捕获的数据包进行各种分析,比如:网络流量分析、数据包中信息、分析敏感信息提取分析等,功能取决于系统要达到的目的。

基于WinPcap 的网络嗅探器设计与实现

基于WinPcap 的网络嗅探器设计与实现

基于WinPcap 的网络嗅探器设计与实现作者:赵钢来源:《电脑知识与技术》2013年第15期摘要:针对安全问题在网络管理中的日益突出,基于Winpcap开发平台,使用Visual C + +作为开发工具,设计并开发了一个网络嗅探器。

该文设计了一个GUI程序,实现IP、TCP、UDP数据包捕获和分析。

同时分析了网络嗅探器的基本工作原理,并阐述了应用捕获数据包流,根据Winpcap关键功能给出了其具体实现。

结果表明,该网络嗅探器结构简单,捕获数据快速,对网络安全管理具有重要意义。

关键词:WinPcap;MFC;嗅探器;计算机网络中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)15-3506-031 嗅探协议原理1.1 IP协议IP是英文Internet Protocol(网络互连的协议)的缩写,中文简称为“网协”,也就是为计算机网络相互连接进行通信而设计的协议。

在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。

任何厂家生产的计算机系统,只要遵守 IP协议就可以与因特网互连互通。

1.2 TCP协议TCP:Transmission Control Protocol (传输控制协议)TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议。

在OSI/RM模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输协议。

1.3 UDP协议UDP的全称是用户数据报协议,在网络中该协议用于处理数据包。

它处在OSI模型中的第四层,即传输层,它处在TCP协议的更高一层。

UDP不提供数据报分组、装配,不能将退回的数据包进行排序。

也就是说,在消息发送后,不知道是否它是安全完整无损地运到了。

UDP是用来支持那些需要相互传递数据的计算机网络应用程序。

许多系统,包括网络视频会议系统,客户端/服务器模式的网络应用程序,都需要使用UDP协议。

基于WinPcap的网络嗅探器设计

基于WinPcap的网络嗅探器设计

结课论文题目名称:端口扫描程序的设计和实现院系名称:计算机学院班级:网络124学号:201200824426学生姓名:张继杰授课教师:孙飞显2014 年12月15目录1 引言 (3)1.1 课题的背景及意义 (3)1.2 端口扫描现状 (3)2 系统设计 (3)2.1 系统主要目标 (3)2.2 开发环境及工具 (4)2.3 功能模块与系统结构 (4)3 系统功能程序设计 (5)3.1、TCP端口扫描的工作原理: (5)3.2 TCP端口扫描的关键问题: (6)3.3TCP端口扫描程序代码分析 (7)4 设计步骤与实现 (7)4.1使用vc++6.0创建一个工程 (7)4.2 设计程序对话框 (10)4.3在的初始化对话框函数OnInitDialog()中添加列表控件的初始化: (11)4.4TCP connect() 扫描 (13)4.4UDP扫描: (14)4.41UDP相关代码截图: (15)5运行结果 (16)结论 (18)参考文献 (18)摘要计算机信息网络的发展加速了信息化时代的进程,但是随着社会网络化程度的增加,对计算机网络的依赖也越来越大,网络安全问题也日益明显。

端口扫描技术是发现安全问题的重要手段之一。

本程序是在Windows系统中使用C语言用MFC完成的一个端口扫描程序。

此程序主要完成了TCP connect()扫描和UDP扫描功能。

TCP扫描支持多线程,能对单个指定的主机进行扫描或对指定网段内的主机进行逐个扫描。

能扫描特定的部分端口号或对指定的端口段内的端口进行逐个扫描。

此端口扫描程序能快速地进行TCP扫描,准确地检测出对TCP协议开放的端口。

而对于UDP扫描只支持单线程,速度较慢。

扫描结果以列表的形式直观地展现出来。

关键词:端口扫描、TCP、UDP扫描1引言1.1 课题的背景及意义网络中每台计算机犹如一座城堡,这些城堡中,有些是对外完全开放的,有些却是大门紧闭的。

入侵者们是如何找到,并打开它们的城门呢?这些城门究竟通向何处?在网络中,把这些城堡的“城门”称之为计算机的“端口”。

基于Winpcaplibpcap自主开发SnifferAnalyzer

基于Winpcaplibpcap自主开发SnifferAnalyzer

基于Winpcap/libpcap自主开发Sniffer/Analyzer——《网络攻防技术与实践》项目实践姓名:王新平学号:10948257 1 基本描述1.1 Libpcap/WinpcapLibpcap(Winpcap是其windows版本)可以提供与平台无关的接口,而且操作简单,它是基于改进的BPF(Berkeley Packet Filter),该软件来自Berkeley的Lawrence National Laboratory研究院。

Winpcap是Libpcap的windows版本,linux用户使用Libpcap,Windows用户使用Winpcap。

使用Winpcap包过程比较规范,在密码学协议分析中,我们常用它来实现协议攻击。

基于Libpcap/Winpcap库的基本使用流程比较规范,一般为:step1:使用pcap_lookupdev获取设备;step2:使用pcap_lookupnet获取网络地址和子网掩码;step3:使用pcap_open_live打开设备;step4:使用pcap_complile编译过滤规则;step5:使用pcap_setfilter设置过滤规则;step6:使用pcap_loop循环捕获数据包,在其中调用相应处理函数;step7:使用pcap_close关闭设备句柄。

1.2 Sniffer/Analyzersniffer,即网络嗅探器,可以监听网络流。

Sniffer程序是一种利用以太网的特性把网络适配卡(NIC,一般为以太网卡)置为杂乱(promiscuous)模式状态的工具,一旦网卡设置为这种模式,它就能接收传输在网络上的每一个信息包。

Sniffer是一种常用的收集数据的方法。

它的一般用处主要是分析网络的流量,以便找出网络中潜在的问题。

Sniffer程序被广泛应用于网络维护和管理方面,网络管理员可以深入了解网络当前的运行状况,是网络管理员的好帮手。

基于winpcap的嗅探器设计及实现

基于winpcap的嗅探器设计及实现

计算机与信息学院《计算机网络系统实践》报告2013 年 9 月 25设计题目:嗅探器的设计与实现 学生姓名:*** 学 号:2010**** 专业班级:信息安全****一、设计要求1.不限平台,可以使用Libpcap、WinPcap 或 Linux的原始套接字;2.实现一个功能比较简单的、具有图形界面的Sniffer,主线程响应用户界面操作,工作线程完成抓包等工作;3.能够解析出IP层和传输层的协议头,能够过滤TCP、UDP等数据包;4.能够输出文本方式传送的数据包的内容;5.能够进行简单的流量统计。

二、开发环境与工具操作系统:windows7开发工具:visual studio开发语言:C++附加库:Winpcap三、设计原理网络嗅探器是一种常用的监听网络的工具。

所谓嗅探器( Sniffer) ,是一种利用计算机网络接口截获网络数据的软件或硬件,可用于网络管理、网络协议分析以及网络安全等众多方面。

嗅探器不同于一般的键捕获工具,后者只能捕获当地终端控制台上的按键内容,而嗅探器所“嗅”到的是动态的以信息包形式( 如IP 数据包或者以太网包) 封装的信息流。

其中可能携带了重要数据或敏感信息。

可以将这些捕获到的信息包存档,以利用相应工具可以作进一步分析。

计算机网络的设计为嗅探器的使用创造了最基本的条件。

在目前的网络环境中,所有计算机节点都是共享传输介质,任意节点发出或发往任意节点的数据帧必将经过网内每一个节点的网络接口,此时只需对嗅探节点的网络接口( 网卡) 进行适当的设置便可为实现嗅探的做好准备工作。

在计算机网络系统中,网卡是用来接收网络上其他节点发来的数据帧,其内嵌的单片处理程序会检测数据帧来源的MAC 地址,并根据网卡所设置的接收方式来是否接收处理数据,如果认为应该处理,则网卡就会产生中断信号通知中央处理器,接收该数据帧并传输给操作系统处理。

否则就简单丢弃,所对应节点的网卡就截断,计算机的中央处理器并不参与。

基于WinPcap的网络嗅探器设计与实现

基于WinPcap的网络嗅探器设计与实现

基于WinPcap的网络嗅探器设计与实现赵钢【期刊名称】《电脑知识与技术》【年(卷),期】2013(000)015【摘要】@@@@Security problem in network management becomes increasinglyserious, a network sniffer was designed and devel oped based on Winpcap development platform, with Visual C + + as a development tool to solve the problem. This paper introduces the design of a GUI program which uses IP, TCP, UDP to capture and analyze data packets At the sametime, we analyze the basic working principle of network sniffer, and expound the application of capture data packet flow, according to theWin pcap key function give the concrete realization. The results show that, the network structure is simple and the speed of cap ture of data is quick. Hence it is of the vital significance to the network security management.%针对安全问题在网络管理中的日益突出,基于Winpcap开发平台,使用Visual C ++作为开发工具,设计并开发了一个网络嗅探器.该文设计了一个GUI程序,实现IP、TCP、UDP数据包捕获和分析.同时分析了网络嗅探器的基本工作原理,并阐述了应用捕获数据包流,根据Winpcap关键功能给出了其具体实现.结果表明,该网络嗅探器结构简单,捕获数据快速,对网络安全管理具有重要意义.【总页数】3页(P3506-3508)【作者】赵钢【作者单位】西安航空职业技术学院,陕西西安 710089【正文语种】中文【中图分类】TP393【相关文献】1.基于Winpcap的网络嗅探器软件设计 [J], 陆进华;2.基于WinPcap库的网络封包嗅探器实现 [J], 康晓东;裴昌幸3.基于Winpcap的网络嗅探器的设计与实现 [J], 成俊;李芳4.基于共享网络下的网络嗅探器的设计与实现 [J], 张腾;叶晨5.基于windows平台的网络嗅探器系统的设计与实现 [J], 于鹏飞;孙春静;薄红岩;彭斌因版权原因,仅展示原文概要,查看原文内容请购买。

基于WinPcap开发嗅探器程序

基于WinPcap开发嗅探器程序

基于WinPcap开发嗅探器程序
一、实验环境
Visual Studio 2010专业版
WinPcap 4.1.2
WinPcap 4.1.2 Developer’s Pack
二、实验原理
三、实验过程
首先先下载Visual Studio 2010、WinPcap 4.1.2、WinPcap 4.1.2 Developer’s Pack这三个软件,安装好WinPcap后,解压开发包文件WpdPack_4_1_2.zip,并把下面的Include 文件夹以及Lib文件夹复制到工程目录下,配置工程设置,为“附加包含目录”添加Include 文件夹相对路径,为“附加库目录”添加Lib文件夹相对路径,同时给“附加依赖项”添加“Packet.lib”、“wpcap.lib”选项,给“预处理器定义”添加“HAVE_REMOTE”、“WPCAP”选项,在stdafx.h头文件中增加对pcap.h头文件的包含。

Include文件:
Lib文件:
安装好环境之后,打开VS新建工程进行代码的编写和编译
嗅探器程序运行如下:
心得:
本次实验是基于WinPcap开发的一个简单的嗅探器。

Wincap能够捕获原始数据包,包括在共享网络上各主机发送/接收的以及相互之间交换的数据包;安装完Winpcap4.1.3之后必须重启电脑,否则在运行嗅探器程序无法正常运行。

开发基于winPcap的嗅探器

开发基于winPcap的嗅探器

网络安全课程设计报告(2015-2016 第一学期)题目开发基于winPcap的嗅探器专业学号姓名指导教师日期评分分细评分项优秀良好中等差遵守机房规章制度实验原理分析与设计课题功能实现情况设计验收与答辩课程设计报告书写简短评语教师签名:年月日评分等级备注开发基于winPcap的嗅探器一、实验目的开发一个winpcap的嗅探器,用它来捕获所有流经网卡的数据包,并进行分析。

二、实验环境操作系统:Windows 2000/XP编程环境:Visual c++6.0附加库:Winpcap三、实验内容和要求内容:所开发的程序可以输出本机所有网卡的信息和捕获流经网卡的数据包并能够过滤出IP、TCP、UDP、ICM P等数据包要求:掌握基于WinPcap的网络编程模式。

理解并能应用WinPcap设计并实现网络数据包的捕获与解析。

四、实验原理和步骤原理:我们所要做的嗅探器是一种常用的网络数据收集软件,它是在广播式网络环境下利用计算机网络接口截获目的地为其它计算机的数据报文的一种工具。

在以太网中,信息是以明文的形式在网络上传输 ,当将网络适配器设置为混杂模式时,由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。

IEEE802.3标准的以太网采用的是持续CSMA的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。

运用这一原理使信息捕获系统能够拦截我们所要的信息,这是捕获数据包的物理基础。

首先,抓包系统必须绕过操作系统的协议栈来访问在网络上传输的原始数据包,这就要求一部分运行在操作系统核心内部,直接与网络接口驱动交互。

这个部分是系统依赖的,在Winpcap的解决方案里它被认为是一个设备驱动,称作NPF(Netgroup PacketFilter)。

Winpcap提供了两个不同的库:Packet.dll和Wpcap.dll。

基于Winpcap的网络嗅探器的设计与实现

基于Winpcap的网络嗅探器的设计与实现

收稿日期:2008-11-053基金项目:黄石理工学院2008年科研项目(08yjz18B )作者简介:成俊(1980— ),男,湖北大冶人,助教,本科。

文章编号:1008-8245(2008)06-0022-04基于W inpcap 的网络嗅探器的设计与实现3成 俊 李 芳(黄石理工学院计算机学院,湖北黄石435003)摘 要:针对网络管理中的安全问题,以W inpcap 为开发平台,使用V isual C ++为开发工具,设计了一个网络嗅探器。

分析了网络嗅探器的基本工作原理,描述了W inpcap 捕获数据包的程序流程,最后给出具体实现的关键函数。

结果表明,这种网络嗅探器结构简单,捕获数据快,对网络的安全管理具有重要意义。

关键词:数据包捕获;嗅探;W inpcap 中图分类号:TP393.09 文献标识码:ADesi gn and I mple ment ati on ofNetwork Sn i ffer Based on W i n pcapCHENG Jun L I Fang(School of Computer Science,Huangshi I nstitute of Technol ogy,Huangshi Hubei 435003)Abstract:A i m ing at the security p r oble m s of net w ork management,the paper p r oposes a net w ork sniffer with W inpcap as devel opment p latfor m and V isual C++as devel opment t oolW inpcap and visual C++.The funda mental p rinci p le ofthe net w ork sniffer is analyzed and the p r ocedure during which W inpcap cap tures the packet is intr oduced .The key functi on is finally given.The results show that the net w ork sniffer has such advantages as si m p le structure and fast data cap ture,which is signifant t o the net w ork security and manage ment .Key words:packet cap ture;sniffer;W inpcap 随着I nternet 的迅猛发展,网络已日益成为工作和生活中不可或缺的工具。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

网络安全课程设计报告(2015-2016 第一学期)题目开发基于winPcap的嗅探器专业学号姓名指导教师日期评分分细评分项优秀良好中等差遵守机房规章制度实验原理分析与设计课题功能实现情况设计验收与答辩课程设计报告书写简短评语教师签名:年月日评分等级备注开发基于winPcap的嗅探器一、实验目的开发一个winpcap的嗅探器,用它来捕获所有流经网卡的数据包,并进行分析。

二、实验环境操作系统:Windows 2000/XP编程环境:Visual c++6.0附加库:Winpcap三、实验内容和要求内容:所开发的程序可以输出本机所有网卡的信息和捕获流经网卡的数据包并能够过滤出IP、TCP、UDP、ICM P等数据包要求:掌握基于WinPcap的网络编程模式。

理解并能应用WinPcap设计并实现网络数据包的捕获与解析。

四、实验原理和步骤原理:我们所要做的嗅探器是一种常用的网络数据收集软件,它是在广播式网络环境下利用计算机网络接口截获目的地为其它计算机的数据报文的一种工具。

在以太网中,信息是以明文的形式在网络上传输 ,当将网络适配器设置为混杂模式时,由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。

IEEE802.3标准的以太网采用的是持续CSMA的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。

运用这一原理使信息捕获系统能够拦截我们所要的信息,这是捕获数据包的物理基础。

首先,抓包系统必须绕过操作系统的协议栈来访问在网络上传输的原始数据包,这就要求一部分运行在操作系统核心内部,直接与网络接口驱动交互。

这个部分是系统依赖的,在Winpcap的解决方案里它被认为是一个设备驱动,称作NPF(Netgroup PacketFilter)。

Winpcap提供了两个不同的库:Packet.dll和Wpcap.dll。

Wpcap.dll提供了更加友好、功能更加强大的函数调用。

WinPcap的优势在于提供了一套标准的抓包接口,与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来,便于开发各种网络分析工具,充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持,支持内核态的统计模式,提供了发送数据包的能力。

前者提供了一个底层API,伴随着一个独立于Microsoft操作系统的编程接口,这些API可以直接用来访问驱动的函数;后者导出了一组更强大的与libpcap一致的高层抓包函数库(captureprimitives)。

这些函数使得数据包的捕获以一种与网络硬件和操作系统无关的方式进行。

网络嗅探器工作在网络环境的底层,拦截所有正在网络上传送的数据,并且通过相应的解析处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体拓扑布局。

步骤:程序所实现嗅探器的总体结构本机网卡信息描述跳转到选择的网卡选择过滤包类型(ip/tcp/udp/icmp)开始嗅探嗅探内容显示并分析1.获得本地网络网卡列表获取一个已经绑定的网卡列表,然后Winpcap对捕获网络数据端口进行设定。

通过pcap引擎找出并设定监听的网络接口。

Winpcap提供了pcap_findalldevs_ex()函数,这个函数返回一个指向pcap_if结构的链表,其中的每一项都包含了一个己经绑定的适配器(网卡)的全部信息。

其中name和description这两项分别包含了相应设备的名称和描述。

取得网卡列表后就在屏幕上显示出来,如果网卡没有被发现就显示有关错误,pcap_findalldevs()同其他的libpcap函数一样有一个errbuf参数,当有异常情况发生时,这个参数会被pcap填充为某个特定错误字串。

部分主要程序示意如下:①主函数部分:// 获取网卡列表if(pcap_findalldevs(&alldevs, errbuf) == -1){ fprintf(stderr,"pcap_findalldevs发生错误: %s\n", errbuf);exit(1);}// 输出网卡信息for(i=0,d=alldevs; d; d=d->next,i++){ ifprint(d,i+1)}if(i==0){ printf("\n没有找到任何网卡,请确认Winpcap已经安装.\n");return -1;}②调用函数部分:// 输出网卡信息void ifprint(pcap_if_t *d, int num){pcap_addr_t *a;printf("\n\n************网卡%d信息************\n",num);// 输出网卡名称printf("网卡名: %s \n",d->name);// 网卡描述信息if (d->description){ printf("网卡描述: %s \n",d->description);}// 反馈printf("反馈: %s \n",(d->flags & PCAP_IF_LOOPBACK)?"yes":"no"); // IP地址for(a=d->addresses;a;a=a->next){ switch(a->addr->sa_family){ case AF_INET:printf("IP地址类型: AF_INET\n");//打印网络地址类型if (a->addr)//打印IP地址printf("IP地址: %s\n",iptos(((struct sockaddr_in *)a->addr)->sin_addr.s_addr));if (a->netmask)//打印掩码printf("掩码: %s\n",iptos(((struct sockaddr_in *)a->netmask)->sin_addr.s_addr));if (a->broadaddr)//打印广播地址printf("广播地址: %s\n",iptos(((struct sockaddr_in *)a->broadaddr)->sin_addr.s_addr));if (a->dstaddr)//目的地址printf("Destination Address: %s\n",iptos(((struct sockaddr_in *)a->dstaddr)->sin_addr.s_addr));break;default:printf("Address Family Name: Unknown\n");break; }}}2.选择一个网卡准备获取数据包:获得网卡的信息后就可以算则其中一个网卡打开准备接受数据包。

打开网卡的功能是通过pcap_open_ live()来实现的。

它的函数原型定义如下: pcap_t3pcap_open_live(char3device,intsnaplen,intpromisc,intto_ms,char3ebuf) 在正常情况下网卡只接受去往它的包而去往其他主机的数据包则被忽略,相反当网卡处于混杂模式时它将接收所有的流经它的数据包,这就意味着在共享介质的情况下可以捕获到其它主机的数据包。

大部分的包捕获程序都将混杂模式设为默认。

部分主要代码如下:// 打开网卡设备if ((adhandle= pcap_open_live(d->name,// 设备名称65536,// 捕获全部的数据包1,// 设置网卡为混杂模式1000,// 读超时为1秒errbuf// 错误缓存)) == NULL){fprintf(stderr,"\n不能打开网卡. %s 不被Winpcap支持\n");// 释放设备列表pcap_freealldevs(alldevs);return -1;}// 检测链接层,只支持以太网模式if(pcap_datalink(adhandle) != DLT_EN10MB){fprintf(stderr,"\n此程序只能运行在以太网上.\n");// 释放设备列表pcap_freealldevs(alldevs);return -1;}if(d->addresses != NULL){// 返回接口的第一个地址的掩码netmask=((struct sockaddr_in *)(d->addresses->netmask))->sin_addr.S_un.S_addr;}else{// 如果没有掩码,则默认设置为C类netmask=0xffffff;}3.选择一个过滤包类型(数据包的过滤设定)通过设置数据流过滤规则(filter)来实现。

数据包过滤处理是嗅探技术中的难点和重点,Win2 pcap提供了最强大的数据流过滤引擎。

它采用了一种高效的方法来捕获网络数据流的某些数据且常常和系统的捕获机制相集成。

过滤数据的函数是pcap-compile()和pcap_setfilter()来实现的。

部分主要程序代码如下;// 选择过滤包类型int protocol_type; // 0->ip 1->tcp 2->udp 3->icmpprintf("\n请选择监听的数据包协议类型(0->ip 1->tcp 2->udp 3->icmp) : ");scanf("%d",&protocol_type);switch(protocol_type){case 0:strcpy(packet_filter,"ip");break;case 1:strcpy(packet_filter,"ip and tcp");break;case 2:strcpy(packet_filter,"ip and udp");break;case 3:strcpy(packet_filter,"ip and icmp");break;default:break;}// 编译过滤器if (pcap_compile(adhandle, &fcode, packet_filter, 1, netmask) <0 ){ fprintf(stderr,"\n不能编译过滤器. 请检测语法.\n");// 释放设备列表pcap_freealldevs(alldevs);return -1;}//设置过滤器if (pcap_setfilter(adhandle, &fcode)<0){ fprintf(stderr,"\n设置过滤器出错.\n");pcap_freealldevs(alldevs);return -1;}4.捕获所选择的数据包使用pcap_next_ex()从网络接口中读取一个数据包,该函数第一个参数是接口句柄,后两个参数由函数返回,分别为数据包的相关信息和数据包本身。

相关文档
最新文档