欢迎来到天天文库
浏览记录
ID:9298928
大小:342.50 KB
页数:4页
时间:2018-04-27
《lan中sniffer的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、LAN中Sniffer的设计与实现靳风荣郑雪峰黄丽娟(北京科技大学信息学院100083)摘要:本文阐述了Sniffer基本原理,并给出了在Linux平台下Sniffer的设计过程与实现方法。关键词:Sniffer、LAN、TCP、IP、ICMP、UDP随着INTERNET的发展,网络安全系统的要求也与日俱增,LAN数据监听系统的研究,对于更好的维护计算机网络及解决网络安全问题有着重要的意义。它可以用来帮助诊断网络中的路由设备,查看网上数据报的传送情况,有利于网络管理员的管理与维护。在防范网络攻击方面,通过数据截取及其分析输出结果可以捕获到透过防火墙而进入网络的非法数据,成功的
2、监视和记录黑客的入侵过程,保障网络的安全。1.Sniffer(嗅探器)基本原理以太网是最流行的组网方法,对于每一个网络接口(网卡)来说,同一个网段的所有网络卡都有访问在物理媒体上传输的所有数据的能力,而每个网络卡都有一个硬件地址,即MAC地址,该硬件地址是唯一的,同网络中存在的其他网络卡的硬件地址不会相同。网卡工作模式有4种,分别是:广播(Broadcast)模式、多播(Multicast)模式、直接模式(Unicast)和混杂模式(Promiscuous)。在混杂模式下的网卡能够接收一切通过它的数据,而不管该数据目的地址是否是它。如果通过程序将网卡的工作模式设置为“混杂模式
3、”,那么网卡将接受所有流经它的数据帧,这实际上就是Sniffer工作的基本原理:让网卡接收一切他所能接收的数据。Sniffer就是一种能将本地网卡状态设成混杂(promiscuous)状态的软件,当网卡处于这种"混杂"方式时,该网卡具备"广播地址",它对所有遇到的每一个数据帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。可见,Sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。在实际应用中,存在许多非以太网接入的情况,如通过DDN专线或者光纤接入
4、等。在这些情况下,必须在路由器/网关中设置监听端口,将流经路由器/网关的所有信息流量通过一个特定的监听端口输出,从而实现信息的监听。2局域网中Sniffer设计2.1基于Libpcap库函数的解决方案Libpcap实质上是一个系统独立的API函数接口,用于用户层次的数据包截获工作。libpcap库功能强大,它可以支持实现从获取本机网络接口地址,设置网络接口工作模式到读取数据包,设置过滤规则(即设定要分析的协议和端口号)。总之,有libpcap的支持,一切都可以简单化。2.2基于pcap的系统流程pcap的数据监听系统程序的总体布局设计如图2所示。1.首先要确定从哪个网络接口截
5、取数据,在Linux系统中一般使用“ether0”接口。可以用一个字符串来定义这个设备, 或者采用pcap提供的接口名来工作。2.初始化pcap。根据上面给出的网络接口设备进行嗅探,那么用pcap打开一个文件句柄,并为其命名,作为嗅探会话句柄。3.创建嗅探规则(即数据包分析的规则)。Pcap的过滤器功能非常强大,它直接使用BPF。因为本方案只要对IP、ICMP、UDP、TCP数据包和部分的端口进行分析,所以要创建一个规则集合,编译并且使用。4.实际的窥探(即获取所需的数据包)。根据规则进入截取数据包程序的循环体。每收到一个数据包,就调用另外一个程序做相应的处理。当做完上面的处
6、理后,关闭会话,结束。图2基于pcap的系统流程3具体实现3.1数据包的数据结构需要定义数据包的数据结构,在定义该结构时分别要用到以太帧头、IP数据报头以及TCP报文头结构,结构定义如下:下面为以太帧头的格式;#includestructetherhdr{unsignedcharh_dest[ETH_ALEN];/*destinationethaddr*/unsignedcharh_source[ETH_ALEN];/*sourceetheraddr*/unsignedshorth_proto;/*packettypeIDfield*/};
7、根据TCP、IP协议格式和具体实现要求,容易定义出TCP和IP数据报头的格式,限于篇幅,这里不再赘述。ICMP协议头结构和UDP协议头结构用etherpkt来定义如下:structetherpkt{structetherhdreth;structiphdrip;union{structtcphdrtcp;structicmphdricmp;structudphdrudp;}proto;charbuff[8129];}ep;3.2主体程序框架下面是用pcap库来实现网络数据截取和分析的主体程序框架:#in
此文档下载收益归作者所有