反垃圾邮件系统的内容过滤模块设计与实现Word文件下载.docx
- 文档编号:1374944
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:7
- 大小:21.60KB
反垃圾邮件系统的内容过滤模块设计与实现Word文件下载.docx
《反垃圾邮件系统的内容过滤模块设计与实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《反垃圾邮件系统的内容过滤模块设计与实现Word文件下载.docx(7页珍藏版)》请在冰点文库上搜索。
用户平均每周收到垃圾邮件数量为封,与2006年3月的每周封相比减少封。
这即说明,反垃圾邮件仍是一个持续又长久的过程。
尽管《互联网电子邮件服务管理办法》规定业已出台,但仍要采取各种必要的措施进行预防及使用,这如同法律一样不可缺,既要打击犯罪,又要教育以预防犯罪。
对邮件进行适时处理,阻止垃圾邮件的泛滥成灾,通过总结策略,一般采用的是关键字内容过滤技术,采取“截获样本、解析特征、生成规则、规则下发、内容过滤”这种类似传统杀病毒系统的原理。
下面,就对邮件的内容过滤模块作一简单研究分析。
2内容过滤模块的总体设计邮件过滤系统设计思想主要是用来监控和拦截网络上传输的含有有害信息的邮件数据报。
针对这一设计思想,可以把网络邮件过滤系统的主要功能概括为以下几个模块。
(1)抓取数据报文,即数据的分离过程;
(2)对数据报文进行过滤分析,对邮件数据包进行组合;
(3)查找设定的邮件地址、IP地址等过滤条件,对邮件内容中的MIME编码进行解码,还原出原始邮件内容,对内容进行分析,检索关键字,对可疑邮件进行记录;
(4)有关人员通过专用的客户端软件查看可疑邮件,并远程对软件的运行进行配置和管理。
图1普通电子邮件系统的SMTP服务过程垃圾邮件有很强的繁殖力,如果不加以整治,就会对合法邮件造成危害,干扰互联网络的正常工作。
电子邮件过滤技术是目前反垃圾邮件用到的主要技术。
电子邮件过滤通常可以从两方面实现:
一种是基于客户端的垃圾邮件过滤,一种是基于服务器端的垃圾邮件过滤。
而在网络中对可疑邮件进行过滤、堵截的最佳方法是基于服务器端的垃圾邮件过滤,即通过在邮件服务器上加设邮件过滤器来实现邮件过滤。
普通电子邮件系统的SMTP服务过程如图1。
加了垃圾邮件过滤模块的电子邮件系统的服务过程如图2:
图2.加了垃圾邮件过滤模块的电子邮件系统的服务过程主要在于增添一个邮件数据提取接口。
当来自于Internet的邮件被通过POP3等系统接收时,邮件数据提取接口将提取到的邮件数据内容送交邮件过滤服务器,用户暂时不阅览该邮件,而是等待邮件过滤服务器的控制命令。
内容过滤模块对邮件信息中的文本内容进行检查与过滤。
检查的对象具体为邮件的其他部分内容、正文内容与文本附件内容。
邮件过滤服务器根据预定义的策略和规则对邮件内容进行检查,并采用多线程同时处理多封邮件,实现对邮件内容快速扫描,并利用关键词库完成匹配,确定该邮件是否为合法邮件。
3内容过滤模块中关键技术——多文档文本提取多文档文本提取技术,主要见图_To_Txt模块所描述的文档模块流程情况,从文档中提取出纯文本流,再结合自动分词、词频统计、关键词提取等过程完成文本的提取。
图3.All_To_Txt模块
HTML文档的文本提取技术超文本标记语言HTML是Web的通用语言,是创建Web页和发布Web信息的格式,是Web设计的基础,是控制Web浏览器在屏幕上显示内容的核心技术。
HTML用于编制可以在不同的平台上实施链接的超文本文件。
HTML的标记可以表达超文本的新闻、邮件、文档及超媒体——包含在线的图形、视像的信息体。
HTML文档具有最基本的结构框架“头”和“体”。
HTML文档均用于在浏览器上显示,而支持HTTP的浏览器均为WINDOWS式的图形用户接口界面,因此HTML文档的基本结构是依据这一要求而设计确定的。
一个GUI的视窗通常由标题栏和窗口体作为其最基本的构成。
HTML文档结构的“头”和“体”正应于这一要求。
HTML容器标记HTML文档的第一个标记HTML是HTML的容器标记,它向浏览器指示,其后的代码应使用由HTML制定的语法和结构规则来处理。
相应的结束标记/HTML出现在文件的结尾处。
注意:
不要把HTML文档的任何文本放置在这两个标记的外面,否则其结果是不可预见的。
头标记 HEAD和/HEAD是一对头标签,是标记文件头区域的分界线,它包含着不在网页上直接实施或显示的项目。
有在浏览器的标题栏中显示的文档标题名称和该文档有关的属性参数。
它是HTML文档的第一个部分,是一个可选项。
在文档头中能用于浏览显示的元素仅有标题,其他的元素均不显示。
TITLE也是一个可选元素,用一对标签(TITLE…/TITLE)标记定义了在浏览器的标题栏中显示的内容。
标题元素总是嵌套在头元素中的。
体标记体是HTML文档中的主体,反映在浏览器的屏幕的正文区域,它包含了文档的内容——即在网页上可见的资料。
BODY和/BODY是一对体标签,用于标记除了头以外的其余的文档内容。
与头元素一样是一个复合元素,可在体标签内嵌套其他的字符和元素。
一个最简单的HTML文档的组成头和体结合就能组成一个HTML文档。
PDF文档的文本提取技术PDF的文件结构(即物理结构)包括四个部分:
文件头、文件体、交叉引用表和文件尾。
文件头(Header)指明了该文件所遵从PDF规范的版本号,它出现在PDF文件的第一行。
如%表示该文件格式符合规范。
文件体(Body)由一系列的PDF间接对象组成。
这些间接对象构成了PDF文件的具体内容如字体、页面、图像等等。
交叉引用表(Cross-referenceTable)则是为了能对间接对象进行随机存取而设立的一个间接对象地址索引表。
文件尾(Trailer)声明了交叉引用表的地址,指明文件体的根对象(Catalog),还保存了加密等安全信息。
根据文件尾提供的信息,PDF的浏览器可以找到交叉引用表和整个PDF文件的根对象,从而实现整个PDF文件的随机存取。
PDF文件主体文档架构反映了文件体中间接对象间的等级层次关系。
PDF的文档结构是一种树型结构。
树的根节点就是PDF文件的根对象(Catalog)。
根节点下有四个子树:
页面树(PagesTree)、书签树(OutlineHierarchy)、线程树(ArticleThreads)、名字树(NamedDestination)。
PDF文本的物理格式主要描速文字如何显示在页面上,包括文字的字体、大小、颜色、位置等属性,在多数的PDF文件中一般为了减少文件的大小,都会对文本流进行压缩编码,常见是deflate压缩编码。
压缩的文本流需要先进行解码,然后才可以得到便于理解的文本流。
PDF文件文本内容的基本提取过程为:
先读取PDF文件,可以根据查找、匹配特征标识符来查找到文本对象,分离出文本流,进行Deflate解码,得到含有文本内容的文本流,根据语法分析,生成正确的text格式。
PDF文件的版本一般存放在文件的头部,PDF文件的其他一些信息,可以根据交叉应用表,也可以根据特征标识符,定位该部分信息。
文件信息的提取,主要是通过文件结构找出文件信息所在的位置,然后通过语法分析分离出我们需要的部分,在通过编码或语法转换,使生成正确的格式。
由于文件的交叉引用表可能会出现损害,可以根据特征标识符来定位文件的信息存放的位置。
MS-Word/PowerPoint文档的文本提取技术Microsoft的Office产品中,都提供了OLEAutomation自动化程序的接口。
如果你使用VB,VBA和Script脚本调用Office功能的话,其实比使用VC调用要简单的多。
比如在WORD中,调出菜单“工具(T)宏(M)录制新宏(R)”,这时候它开始记录你在WORD中任何菜单和键盘的操作,把你的操作过程保存起来,以便再次重复调用。
而保存这些操作的记录,其实就是使用了VBA程序。
而我们下面要实现的功能,也同样要参考VBA的方法。
为了更有逻辑,更有层次地操作Office,Microsoft把应用(Application)按逻辑功能划分为树形结构,只有了解了逻辑层次,我们才能正确的操纵Office。
举例来讲,如果给出一个VBScript语句是:
"
c:
"
。
那么,我们就知道了,这个操作的过程是:
第一步,取得Application;
第二步,从Application中取得ActiveDocument;
第三步,调用Document的函数SaveAs,参数是一个字符串型的文件名。
使用的基本步骤为:
创建一个MFC的程序工程。
按照VC6操作,Ctrl+W执行ClassWizard;
AddClass...FromatypeLibrary...在Office目录中,找到你想使用的类型库,也可根据使用的Office版本,从有关表中查得相应的类型库文件。
选择类型库文件后,在弹出的对话窗中继续选择要添加的类。
初始化COM:
方法一,找到App的InitInstance()函数,在其中添加AfxOleInit()函数的调用;
方法二,在需要调用COM功能的地方CoInitialize(NULL),调用完毕后CoUninitialize()。
在你需要调用Office功能函数的cpp文件中为了方便操作VARIANT类型变量,使用CComVariant模板类。
CHM文档的文本提取技术CHM格式有一个初始化头,占38H字节,后面是headersection和到正文段的偏移量。
加在一起,这些被称为文件头。
headersection一共有两个section,一个是文件目录,另一个包含着文件长度和一些未知信息。
初始化头,headersection0及headersection1,本段共84个字节,从这里开始往后都是数据块,分为两种,一种是列表块(listingchunks),一种是索引块(indexchunks)其中列表块的格式开始是四个字节PMGL,然后的四个字节是目录块尾部的空白区的长度或是quickref区域的长度,第三双字恒为0,第四双字是前一个列表块的块号,如果这是第一个块,该值为-1,第五双字是后一个列表块的块号,如果这是最后一块,该值为-1,从这里开始是目录列表项,按文件名排序,并且大小写不分,quickref区是从数据块的后面向前写,每隔n个项出现一个quickref,且n的值为1+(1“密度”),其格式从后至前为;
第一个字:
整个数据块中的项数,第二个字:
从第0项到第n项之间的偏移量,第三个字:
从第0项到第2n项之间的偏移量,以此类推;
目录列表的每一项的格式encint型名字长度,后面是UTF-8编码的名称,encint型正文段,encint型偏移量,encint型长度,其中偏移量是从解压缩之后的正文段的开始来计算的,同样长度也是表示解压缩之后的长度。
在目录中存在两种文件,用户数据文件和格式信息文件,格式信息文件以两个连续的冒号“:
:
”开头,用户数据文件以“/”开头。
索引块:
前四个字节为PMGI,后面四个字节是块尾部的quickref或是空白区的长度。
从这里开始是目录索引项的开始,每一个目录索引项的结构encint型的名称长度,UFT-8编码的名称,以此名称开始的列表块的块号。
quickref的格式和排列与列表块中相同。
当有索引块的层次较多时,将不再存储数据块号而是存储下一层的索引号。
正文:
在版本3中,正文一般紧跟着文件头,而且在文件头表之后有一个双字用来指定其位置。
在版本2中,正文部分紧跟着文件头,而且所有此类文件中的正文部分的第0段都放在这个位置上,其它的正文段都放在withincontentsection0名称列表文件:
contentsection0中,文件名为"
:
DataSpace/NameList"
,其中包含着所有正文段的名称,其格式第一个字:
以字计数的文件长度;
第二个字:
文件中的entry数;
对于每一个entry格式为:
第一个字:
以字计数的名字长度,不包括最后的NULL结尾符,以word0表示所有entry的结束。
名称的编码类似于UFT-16。
段的名称目前为止只有两种,Uncompressed和MSCompressed,分别表示自解释文件和MicrosoftLZX压缩算法压缩的文件。
sectiondata:
对于段号不为0的段,还有一个文件为:
DataSpace/Storage/SectionName/Content,里面存放着该段的压缩信息,所以,当解析非0段时,需要两步工作,第一步,取得第0段并将其解圧,取得段名,第二步才能利用段名找到相应的段。
其余与格式相关的文件:
DataSpace/Storage/SectionName/ControlData共0x20个字节,存储关于压缩的信息;
压缩段:
这一段用LZX压缩,要进行解压缩,先要读取:
DataSpace/Storage/SectionName/Transform/{7FC28940-9D31-11D0-9B27-00A0C91E9C7C}/InstanceData/ResetTable。
压缩文件中的文档处理技术RAR文档的处理方法
(1)RAR文档的格式简介Rar文件由许多不定长度的数据区组成,这些数据区的顺序是可变的,但是第一个数据区一定是由一个标志块和文档头组成的。
如下图为一个rar文件的基本格式,该rar文件中压缩了多个文档:
标志块文档头文件头一数据区一文件头二数据区二文件头三数据区三……其中标志块的内容是固定的:
0x520x610x720x210x1a0x070x00;
文档头格式内容HEAD_CRCHEAD_TYPEHEAD_FLAGSHEAD_SIZERESERVED1RESERVED2长度212224意义数据CRC类型:
0x73标志数据区大小保留保留数据CRC是对文档头的CRC校验和,可以用其判断文档头是否错误;
数据区类型:
0x73表示该数据结构是文档头;
数据区大小是指文档头的长度。
文件头格式HEAD_CRCHEAD_TYPEHEAD_FLAGSHEAD_SIZEPACK_SIZEUNP_SIZEHOST_OS2122441数据CRC类型:
0x74标志数据区大小压缩后大小压缩前大小操作系统FILE_CRCFTIMEUNP_VERMETHODNAME_SIZEATTRFILE_NAME441124不定长文件CRC压缩时间解压需版本压缩方法文件名长度文件属性文件名数据CRC是对文档头的CRC校验和,可以用其判断文件头是否错误;
0x74表示该数据结构是文件头;
数据区大小是指文件头的长度。
文件压缩前后大小对解压数据区十分重要,如果错误就无法对数据区进行定位。
操作系统:
0-MSDOS;
1-OS/2;
2-Win32;
3-Unix文件CRC是对文件数据区的CRC校验和,可以用其判断文件数据区是否错误。
RAR文档的解压RAR文件的解压主要是调用中的函数。
ZIP文件格式的处理方法ZIP文件格式分析如下图为一个zip文件的基本格式,该zip文件中压缩了多个文档.图4zip文件格式在压缩了多个文档的zip文件中,每个被压缩的文档都带有一个本地文件头,中央目录和数据区,这三个结构是一一对应的。
其中本地文件头和中央目录区包含了对应压缩文档的基本信息,数据区则存储该文档压缩后的数据。
zip文件尾部包含了整个zip文件的基本信息。
ZIP文件格式的解压ZIP文件的解压主要是调用中的函数。
4总结以上主要介绍了一种反垃圾邮件系统的内容过滤模块的多文档文本提取技术,涉及HTML文档、PDF文档、MS-WORD文档、CHM文档的文本提取技术,及压缩文件中的文档处理技术,更好地运用于反垃圾邮件过滤系统中,不断完善反垃圾邮件系统,以提高垃圾邮件识别率、拦截率,降低资源的消耗。
参考文献1孟莉,全红艳.电子邮件过滤系统的设计与实现.管理信息系统.周勇生.电子邮件是如何工作的.新潮电子,(总第54期):
993冯晓芳.反垃圾邮件仍需继续12321举报电话启用http:
///2006-06-2213:
414落红卫,刘建毅,王枞,钟义信.智能邮件过滤系统的研究与实现.机电产品开发与创新.胡金初.计算机网络.北京:
清华大学出版社,20046杨锦川,张熙等.电脑安全X档案.昆明:
云南人民出版社,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 垃圾邮件 系统 内容 过滤 模块 设计 实现