# 局域网电子邮件监控系统的实现

Canonical: https://www.nsecsoft.com/technet/%E5%B1%80%E5%9F%9F%E7%BD%91%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E7%9B%91%E6%8E%A7%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%AE%9E%E7%8E%B0.html

Language: zh-CN

Updated: 2020-10-26T09:45:01Z

作者：张晋，于磊整理：Ping32电脑监控软件在监听电子邮件时，设计有4种工作方式：监听SMTP和POP3协议 \[…\]

作者：张晋，于磊 整理：Ping32

[电脑监控软件](https://www.nsecsoft.com/)

在监听电子邮件时，设计有4种工作方式：监听SMTP和 POP3协议的E-mail；监听SMTP协议的E-mail；监听POP3协议的E-mail；监听所有网络流量。

2．1 系统的程序结构

按照先监听、捕获网络封包，再分析处理的流程工作。系统程序从下到上依次是winPcap驱动、Win32控制台程序、图形用户界面GUI，结构如图3所示。其中Win32控制台程序是系统程序的核心。

图3 系统程序结构

2.2 Win32控制台程序

Win32控制台包含五个部分，base64.exe程序是一个 BASE64编码/解码器；dev.exe是网络设备接口探测器，探测网络接口设备名称及说明；sn.exe是监听/捕获/过滤器 ；listip.exe列出捕获的封包中的 IP地址；pickmail.exe对sn.exe提取的封包进行分析，并按SMTP和PoP3分别进行输出。控制台程序的核心程序是sn.exe。此程序有两个功能，一个是监听并捕获指定的某网络接口设备的网络封包并转存为文件。第二个是从捕获的封包中提取某IP的所有封包并存储为文件。使用WinPcap开发包中的pcap.h头文件实现。主要使用的函数有pcap\_open，pcap\_compile，pcap\_ sedilter，pcap\_Next\_ex ，pcap\_dump。它是捕获网络封包的核心程序。

由于WinPcap驱动是工作在NDIS层，所以能保证捕获数据链路层的原始数据，包括以太头、IP头、TCP头以及其他协议的头信息。我们可以从中获得MAC地址、IP地址等信息，再根据这些信息做进一步的分析。

sn.exe以计算机上的某网络设备作为监听(捕获)的对象，可以对已经捕获的封包(即Dump文件) 进行过滤 (或者说是 “筛选”)。也就是我们可以从Dump文件中筛选出需要的信息。有一点需要说明的是虽然sn.exe可以设置过滤参数，但此时的过滤意味着 “筛选”，并非阻塞式的过滤。在WinPeap开发包中的pcap.h头文件中声明的pcap\_open，pcap\_next\_ex和pcap\_dmup函数实现有关打开网络设备接口、捕获封包和Dump到文件的功能。pcap\_com\_pile和pcap\_sedilte函数实现过滤功能。

使用基于WinPcap的库函数可以捕获数据链路层的网络封包 。但是在将网络封包Dump时，Win-Pcap库函数在每个封包信息的前面加了自己的头信息。头信息包括三个内容，共16字节(每字节 8bit)：捕获封包的时间戳、捕获的长度、封包的长度。

(1)时间戳

时间戳 占8字节，共64bit。前 四字节时间从1970年的1月1日0时整开始计算，(类似UNIX的计时系统)单位是秒。后四字节是更小的计时单位。

(2)捕获的长度

捕获的长度 占4字节 (共32bit)。在时间戳后，表示已捕获到的长度。已捕获的长度并不总是等于封包的原始长度，因为有一种可能性是在捕获完成之前就停止了捕获。

(3)封包的长度

封包的长度 占4字节 (共 32bit)。它表示封包的原始长度。

3 结束语

本系统是基于WinPcap 3.1 beta4开发的。主要功能是监控共享式以太网中的网络流量，从中提取电子邮件的原始信息并转存为文件。可以应用在小规模的共享式以太网中监控电子邮件，能够保证在监听网络时不会有漏包的情况发生。在中小企业、组织团体、个人等安全相关领域有一定的应用前景。

它目前的功能只是监听，不能阻塞网络流量。在此基础上可进一步完善其功能 ，如实现实时分析处理电子邮件数据封包、用户权限管理、根据捕获的信息识别客户机、网络其它类型封包处理等。
