局域网电子邮件监控系统的设计与实现(一)

今天电子邮件 由于它的廉价和便捷 已成为人们广泛使用的通讯手段之一。正是因为如此,其 内容也非常复杂,合理、有效地监控 电子邮件成为一个迫切的需要。而 Sniffer(嗅探器)技术在网络 中的应用已非常广泛。Snffier在网络管理、维护、安全方面发挥了重要作用。

本文实现了一种基于 Sniffer思想的电子邮件监控系统,捕获共享式局域网中经电子邮件客户端发送的电子邮件,并将其转存为文件,从而实现监控共享式局域网中经电子邮件途径传输的内容,使得管理人员能够根据这些信息进行必要的控制管理。

1 系统的基本工作原理及其相关技术

1.1 系统的逻辑功能结构

系统建立在 WinPcap体系结构的基础上,设计为三层结构:底层是对数据包的捕获,其上层是数据包的过滤保存,最上层是对过滤后的有用数据包进行分析显示。系统功能结构如图1所示 。

图 l 电子 邮件监控系统功能框 图

1.2 数据包的捕获及过滤技术

Windows操作系统没有提供 内置的包捕获机制。但它提供了一个用来捕获数据包的开放系统软件包 WinPcap(Windows Packet Capture)。

1.2.1 WinPcap的功能与结构

(1)WinPcap的功能

WinPcap是Windows平台下一个免费、公共的网络访问系统。它为Win32应用程序提供访问网络底层的能力。主要功能包括:能够捕获原始数据报,包括在共享网络上各主机发送(接收)的以及相互之间交换的数据报;在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;在网络上发送原始的数据报;收集网络通信过程中的统计信息。

WinPcap的主要特点在于独立于主机协议 (如TCP/IP)而发送和接收原始数据报。也就是说,WinPcap不能阻塞和控制其他应用程序数据报的发收,它仅仅只是监听共享网络上传送的数据报。因此,它不能用于QoS调度程序或个人防火墙。

(2)WinPcap的体系结构

WinPcap主要由三个模块组成,一个在 内核级 ,另外两个以DLL的形式处于用户级。主要模块包括:过滤器、内核级和用户级的缓存、用户级上的两种库。

①内核级的网络组包过滤器(NPF)。在 内核级的部分即NPF是一个经过优化的内核模式驱动器,用于对数据包进行过滤,将接受的数据包送交用户级,并含有与操作系统相关的代码部分,如时间戳管理等 。

②数据包低级驱动程序库(packet.du)。数据包驱动程序库是与 Libpcap相兼容的一组用户级的函数库。packet.du用于在 Win32平台上为数据包驱动程序提供一个公共的接 口。由于不同的Windows版本在用户级和内核级之间提供各不相同的接 口,而packet.du可以屏蔽这些区别,提供一个与系统无关的API。基于packet.dll开发的数据包截获程序可以运行于不同的Win32平台而不必重新进行编译。packet.dll可以执行如获取网卡名或者机器掩码等低级的操作。packet.du和 BPF均与所用的操作系统有关。

③数据包高级驱动程序库(wpcap.du)。wpcap.dll是与操作系统无关的,它含有诸如产生过滤器、用户级缓冲以及包注入等高级功能。所以,编程人员既可以使用包含在 packet.du中的低级函数直接进入内核级调用,也可以使用由wl~ap.du提供的高级函数,并可能被转换成若干个 NP系统调用。基级函数调用,这样 功 能更 强,使用也更方便。wpcap.dll的函数调用会 自动调用 packet.du中的低于Windows操作平台的系统,可直接调用 WinPcap所提供的API接 口函数以实现各种网络数据报文的捕获。数据报文捕获及过滤程序流程如图2所示。

数据报文捕获及过滤技术

图2:数据报文捕获及过滤技术