LAN中Sniffer的设计与实现
靳风荣郑雪峰黄丽娟
(北京科技大学信息学院100083)
摘要:本文阐述了Sniffer基本原理,并给出了在Linux平台下Sniffer的设计过程与实现方法。
关键词:Sniffer、LAN、TCP、IP、ICMP、UDP
的发展,网络安全系统的要求也与日俱增,LAN数据监听系统的研究,对于更好的维护计算机网络及解决网络安全问题有着重要的意义。它可以用来帮助诊断网络中的路由设备,查看网上数据报的传送情况,有利于网络管理员的管理与维护。在防范网络攻击方面,通过数据截取及其分析输出结果可以捕获到透过防火墙而进入网络的非法数据,成功的监视和记录黑客的入侵过程,保障网络的安全。
Sniffer(嗅探器)基本原理
以太网是最流行的组网方法,对于每一个网络接口(网卡)来说,同一个网段的所有网络卡都有访问在物理媒体上传输的所有数据的能力,而每个网络卡都有一个硬件地址,即MAC地址,该硬件地址是唯一的,同网络中存在的其他网络卡的硬件地址不会相同。
网卡工作模式有4种,分别是:广播(Broadcast)模式、多播(Multicast)模式、直接模式(Unicast)和混杂模式(Promiscuous)。
在混杂模式下的网卡能够接收一切通过它的数据,而不管该数据目的地址是否是它。如果通过程序将网卡的工作模式设置为“混杂模式”,那么网卡将接受所有流经它的数据帧,这实际上就是Sniffer工作的基本原理:让网卡接收一切他所能接收的数据。Sniffer就是一种能将本地网卡状态设成混杂(promiscuous)状态的软件,当网卡处于这种"混杂"方式时,该网卡具备"广播地址",它对所有遇到的每一个数据帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。可见,Sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。
在实际应用中,存在许多非以太网接入的情况,如通过DDN专线或者光纤接入等。在这些情况下,必须在路由器/网关中设置监听端口,将流经路由器/网关的所有信息流量通过一个特定的监听端口输出,从而实现信息的监听。
2局域网中Sniffer设计
Libpcap 实质上是一个系统独立的API函数接口,用于用户层次的数据包截获工作。libpcap库功能强大,它可以支持实现从获取本机网络接口地址,设置网络接口工作模式到读取数据包,设置过滤规则(即设定要分析的协议和端口号)。总之,有libpcap的支持,一切都可以简单化。
基于pcap的系统流程
pcap的数据监听系统程序的总体布局设计如图2所示。
首先要确定从哪个网络接口截取数据,在Linux系统中一般使用“ether0”接口。可以用一个字符串来定义这个设备, 或者采用pcap提供的接口名来工作。
初始化pcap。根据上面给出的网络接口设备进行嗅探,那么用pcap打开一个文件句柄,并为其命名,作为嗅探会话句柄。
创建嗅探规则(即数据包分析的规则)。Pcap的过滤器功能非常强大,它直接使用BPF。因为本方案只要对IP、ICMP、UDP、TCP数据包和部分的端口进行分析,所以要创建一个规则集合,
LAN中Sniffer的设计与实现 来自淘豆网www.taodocs.com转载请标明出处.