Swf文件批量加密方法及装置的制作方法

文档序号:6401786阅读:177来源:国知局
专利名称:Swf文件批量加密方法及装置的制作方法
技术领域
本发明涉及视频播放技术,尤其涉及一种SWF文件批量加密方法及装置。
背景技术
SffF文件是Flash的专用格式,是一种支持矢量和点阵图形的动画文件格式,被广泛应用于网页设计,动画制作等领域,SWF文件通常也被称为Flash文件。通常游戏开发者为了保护自己的编写的SWF文件不被随便盗用修改,通常会对SWF文件进行加密。
在传统技术中,对SWF文件进行加密的手段为从网上下载可以进行加密的软件,对单个SWF文件进行加密。但上述方法只能对单个SWF文件加密,效率低下,而且需要用户自己从网上下载应用文件,占用硬盘空间。发明内容
针对传统技术的上述缺陷,本发明实施例提供一种SWF文件批量加密方法及装置,使得用户可以通过批量上传SWF文件至SWF文件批量加密装置,对大量SWF文件进行批量加密,从而大大提高了加密效率,且不占用客户端的硬盘资源。
本发明实施例提供一种SWF文件批量加密方法,包括:
获取用户上传的源SWF文件;
通过二进制流读取所述源SWF文件,解析所述源SWF文件获取文件头信息,根据所述文件头信息判断所述源SWF文件的版本类型属于AVMl类型或AVM2类型;
若所述源SWF文件的版本类型为AVMl类型,则根据所述文件头信息,定位到DOACTION标签和DOINITACTION标签,对所述DOACTION标签和所述DOINITACTION标签进行混淆加密;
若所述源SWF文件的版本类型为AVM2类型,则根据所述文件头信息,定位到DoABC标签和SYMBOLCLASS标签,对所述DoABC标签和所述SYMBOLCLASS标签进行混淆加密;
重组加密后的所有标签,生成加密SWF文件。
优选的,在根据所述文件头信息判断所述源SWF文件的版本类型属于AVMl类型或AVM2类型步骤之前,还包括:
根据所述文件头信息判断所述源SWF文件是否是压缩文件,若是则解压所述源SWF文件。
优选的,若所述源SWF文件的版本类型为AVMl类型,则根据所述文件头信息,定位到DOACTION标签和DOINITACTION标签,对所述DOACTION标签和所述DOINITACTION标签进行混淆加密步骤,包括:
根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述DOACTION标签之前的各个标签的长度值,并进行求和计算,获得所述DOACTION标签的位置值,根据所述DOACTION标签的位置值直接定位到所述DOACTION标签;
根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述DOINITACTION标签之前的各个标签的长度值,并进行求和计算,获得所述DOINITACTION标签的位置值,根据所述DOINITACTION标签的位置值直接定位到所述DOINITACTION标签;解析所述DOACTION标签和所述DOINITACTION标签,获得所述源SWF文件中的类名、变量名以及函数名,将所述源SWF文件中的类名、变量名以及函数名进行混淆加密。优选的,若所述源SWF文件的版本类型为AVM2类型,则根据所述文件头信息,定位到DoABC标签和SYMBOLCLASS标签,对所述DoABC标签和所述SYMBOLCLASS标签进行混淆加密步骤,包括:根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述DoABC标签之前的各个标签的长度值,并进行求和计算,获得所述DoABC标签的位置值,根据所述DoABC标签的位置值直接定位到所述DoABC标签;根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述SYMBOLCLASS标签之前的各个标签的长度值,并进行求和计算,获得所述SYMBOLCLASS标签的位置值,根据所述SYMBOLCLASS标签的位置值直接定位到所述SYMBOLCLASS标签;解析所述DoABC标签和所述SYMBOLCLASS标签,获得所述源SWF文件中的类名、变量名以及函数名,将所述源SWF文件中的类名、变量名以及函数名进行混淆加密。本发明实施例提供一种SWF文件批量加密装置,包括:接收模块,用于获取用户上传的源SWF文件;第一判断模块,解析所述源SWF文件获取文件头信息,根据所述文件头信息判断所述源SWF文件的版本类型属于AVMl类型或AVM2类型;第一加密模块,用于若所述源SWF文件的版本类型为AVMl类型,则根据所述文件头信息,定位到DOACTION标签和DOINITACTION标签,对所述DOACTION标签和所述DOINITACTION标签进行混淆加密;第二加密模块,用于若所述源SWF文件的版本类型为AVM2类型,则根据所述文件头信息,定位到DoABC标签和SYMBOLCLASS标签,对所述DoABC标签和所述SYMBOLCLASS标签进行混淆加密;重组模块,用于重组加密后的所有标签,生成加密SWF文件。优选的,该装置还包括:第二判断模块,用于根据所述文件头信息判断所述源SWF文件是否是压缩文件,若是则解压所述源SWF文件。优选的,第一加密模块包括:第一定位单元,用于根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述DOACTION标签之前的各个标签的长度值,并进行求和计算,获得所述DOACTION标签的位置值,根据所述DOACTION标签的位置值直接定位到所述DOACTION标签;第二定位单元,用于根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述DOINITACTION标签之前的各个标签的长度值,并进行求和计算,获得所述DOINITACTION标签的位置值,根据所述DOINITACTION标签的位置值直接定位到所述DOINITACTION 标签;第一混淆单元,用于解析所述DOACTION标签和所述DOINITACTION标签,获得所述源SWF文件中的类名、变量名以及函数名,将所述源SWF文件中的类名、变量名以及函数名进行混淆加密。
优选的,第二加密模块包括:
第三定位单元,用于根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述DoABC标签之前的各个标签的长度值,并进行求和计算,获得所述DoABC标签的位置值,根据所述DoABC标签的位置值直接定位到所述DoABC标签;
第四定位单元,用于根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述SYMBOLCLASS标签之前的各个标签的长度值,并进行求和计算,获得所述SYMBOLCLASS标签的位置值,根据所述SYMBOLCLASS标签的位置值直接定位到所述SYMBOLCLASS 标签;
第二混淆单元,用于解析所述DoABC标签和所述SYMBOLCLASS标签,获得所述源SffF文件中的类名、变量名以及函数名,将所述源SWF文件中的类名、变量名以及函数名进行混淆加密。
本实施例的技术方案中,用户通过批量上传SWF文件至SWF文件批量加密装置,对大量SWF文件进行批量加密,从而大大提高了加密效率,且不占用客户端的硬盘资源。


图1为本发明SWF文件批量加密方法第一实施例的流程图2为本发明SWF文件批量加密装置第一实施例的结构示意图3为本发明SWF文件批量加密装置第二实施例的结构示意图。
具体实施方式
图1为本发明SWF文件批量加密方法第一实施例的流程图,如图1所示,本实施例所提供的SWF文件批量加密方法由SWF文件批量加密装置执行,该装置设于网络侧的服务器上,该装置获取用户从终端侧批量上传源SWF文件,分别对每个源SWF文件进行加密,并将加密的源SWF文件压缩发送至终端的本地目录。该装置可以采用软件和/或硬件的形式来实现,该方法包括:
步骤S100,获取用户上传的源SWF文件;
步骤S102,解析所述源SWF文件获取文件头信息,根据所述文件头信息判断所述源SWF文件的版本类型属于AVMl类型或AVM2类型,若所述源SWF文件的版本类型为AVMl类型,则进入步骤S104 ;若所述源SWF文件的版本类型为AVM2类型,则进入步骤S106 ;
步骤S104,根据所述文件头信息,定位到DOACTION标签和DOINITACTION标签,对所述DOACTION标签和所述DOINITACTION标签进行混淆加密;
步骤S106,根据所述文件头信息,定位到DoABC标签和SYMBOLCLASS标签,对所述DoABC标签和所述SYMBOLCLASS标签进行混淆加密;
步骤S108,重组加密后的所有标签,生成加密SWF文件。
具体地,SWF文件由文件头和数据体组成;其中,数据体由多个不同种类的标签定义得到。例如:形状定义标签、声音定义标签和结束标签等。当SWF文件由as2.0代码编写生成时,存储as2.0代码的标签为DOACTION标签和DOINITACTION标签。当SWF文件由as3.0代码编写生成时,存储as3.0代码的标签为DoABC标签和SYMBOLCLASS标签。当SWF文件批量加密装置接收用户上传的批量源SWF文件后,首先需要对每个源SffF文件进行解析,具体的解析方法可以为通过二进制流读取每个源SWF文件,解析源SWF文件中的文件头信息,其中包括该源SWF文件的版本信息,例如0x06表示版本6。根据版本信息判断源SWF文件的版本类型属于AVMl类型或AVM2类型,AVMl类型是由as2.0代码编写生成的,AVM2类型是由as3.0代码编写生成,不同类型的SWF文件,其文件头中的版本信息不同。进一步地,用户在上传源SWF文件时,源SWF文件可能是压缩过的文件,因此在对该文件进行加密之前需要判断该文件是否被压缩,若是则需要先解压缩。源SWF文件的文件头以三个标识符开始,所述的三个标志符是0x46、0x57和0x53或0x46、0x57和0x43,若源SWF文件的文件头的三个标识符是0x46、0x57和0x53,则为未压缩文件;若原swf文件的文件头的三个标识符是0x46、0x57和0x43,则为压缩文件。进一步地,步骤S104的具体实现方法为:根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述DOACTION标签之前的各个标签的长度值,并进行求和计算,获得所述DOACTION标签的位置值,根据所述DOACTION标签的位置值直接定位到所述DOACTION标签;根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述DOINITACTION标签之前的各个标签的长度值,并进行求和计算,获得所述DOINITACTION标签的位置值,根据所述DOINITACTION标签的位置值直接定位到所述DOINITACTION标签;解析所述DOACTION标签和所述DOINITACTION标签,获得所述源SWF文件中的类名、变量名以及函数名,将所述源SWF文件中的类名、变量名以及函数名进行混淆加密。具体地,由于DOACTION标签和DOINITACTION标签为控制标签,用于存储具体的代码信息,因此其中包含大量重要的包名、类名、方法名、属性名和参数名等字符信息,通过将这些重要字符信息替换为乱码的方式对其进行加密,从而达到保护源SWF文件的作用。进一步地,步骤S106的具体实现方法为:根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述DoABC标签之前的各个标签的长度值,并进行求和计算,获得所述DoABC标签的位置值,根据所述DoABC标签的位置值直接定位到所述DoABC标签;根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述SYMBOLCLASS标签之前的各个标签的长度值,并进行求和计算,获得所述SYMBOLCLASS标签的位置值,根据所述SYMBOLCLASS标签的位置值直接定位到所述SYMBOLCLASS标签;解析所述DoABC标签和所述SYMBOLCLASS标签,获得所述源SWF文件中的类名、变量名以及函数名,将所述源SWF文件中的类名、变量名以及函数名进行混淆加密。具体地,由于DoABC标签和SYMBOLCLASS标签为控制标签,用于存储具体的代码信息,因此其中包含大量重要的包名、类名、方法名、属性名和参数名等字符信息,通过将这些重要字符信息替换为乱码的方式对其进行加密,从而达到保护源SWF文件的作用。本实施例的技术方案中,用户通过批量上传SWF文件至SWF文件批量加密装置,对大量SWF文件进行批量加密,从而大大提高了加密效率,且不占用客户端的硬盘资源。图2为本发明SWF文件批量加密装置第一实施例的结构示意图,如图2所示,该装置设于网络侧的服务器上,获取用户从终端侧批量上传源SWF文件后,分别对每个源SWF文件进行加密,并将加密的源SWF文件压缩发送至终端的本地目录。该装置可以采用软件和/或硬件的形式来实现,该方法包括:
接收模块10,用于获取用户上传的源SWF文件;
第一判断模块11,解析所述源SWF文件获取文件头信息,根据所述文件头信息判断所述源SWF文件的版本类型属于AVMl类型或AVM2类型;
第一加密模块12,用于若所述源SWF文件的版本类型为AVMl类型,则根据所述文件头信息,定位到DOACTION标签和DOINITACTION标签,对所述DOACTION标签和所述DOINITACTION标签进行混淆加密;
第二加密模块13,用于若所述源SWF文件的版本类型为AVM2类型,则根据所述文件头信息,定位到DoABC标签和SYMBOLCLASS标签,对所述DoABC标签和所述SYMBOLCLASS标签进行混淆加密;
重组模块14,用于重组加密后的所有标签,生成加密SWF文件。
本发明实施例提供的SWF文件批量加密装置用于执行本发明实施例提供的SWF文件批量加密方法,具备相应的功能模块,在此不再赘述。
本实施例的技术方案中,用户通过批量上传SWF文件至SWF文件批量加密装置,对大量SWF文件进行批量加密,从而大大提高了加密效率,且不占用客户端的硬盘资源。
图3为本发明SWF文件批量加密装置第二实施例的结构示意图,本实施例是基于图2所示实施例的进一步细化,如图3所示,该装置还包括:
第二判断模块15,用于根据所述文件头信息判断所述源SWF文件是否是压缩文件,若是则解压所述源SWF文件。
其中第一加密模块12包括:
第一定位单元121,用于根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述DOACTION标签之前的各个标签的长度值,并进行求和计算,获得所述DOACTION标签的位置值,根据所述DOACTION标签的位置值直接定位到所述DOACTION标签;
第二定位单元122,用于根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述DOINITACTION标签之前的各个标签的长度值,并进行求和计算,获得所述DOINITACTION标签的位置值,根据所述DOINITACTION标签的位置值直接定位到所述DOINITACTION 标签;
第一混淆单元123,用于解析所述DOACTION标签和所述DOINITACTION标签,获得所述源SWF文件中的类名、变量名以及函数名,将所述源SWF文件中的类名、变量名以及函数名进行混淆加密。
第二加密模块13包括:
第三定位单元131,用于根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述DoABC标签之前的各个标签的长度值,并进行求和计算,获得所述DoABC标签的位置值,根据所述DoABC标签的位置值直接定位到所述DoABC标签;
第四定位单元132,用于根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述SYMBOLCLASS标签之前的各个标签的长度值,并进行求和计算,获得所述SYMBOLCLASS标签的位置值,根据所述SYMBOLCLASS标签的位置值直接定位到所述SYMBOLCLASS 标签;第二混淆单元133,用于解析所述DoABC标签和所述SYMBOLCLASS标签,获得所述源SWF文件中的类名、变量名以及函数名,将所述源SWF文件中的类名、变量名以及函数名进行混淆加密。本发明实施例提供的SWF文件批量加密装置用于执行本发明实施例提供的SWF文件批量加密方法,具备相应的功能模块,在此不再赘述。本实施例的技术方案中,用户通过批量上传SWF文件至SWF文件批量加密装置,对大量SWF文件进行批量加密,从而大大提高了加密效率,且不占用客户端的硬盘资源。应说明的是:以上实施例仅用以说明本发明而非限制,本发明也并不仅限于上述举例,一切不脱离本发明的精神和范围的技术方案及其改进,其均应涵盖在本发明的权利要求范围中。
权利要求
1.一种SWF文件批量加密方法,其特征在于,包括: 获取用户上传的源SWF文件; 解析所述源SWF文件获取文件头信息,根据所述文件头信息判断所述源SWF文件的版本类型属于AVMl类型或AVM2类型; 若所述源SWF文件的版本类型为AVMl类型,则根据所述文件头信息,定位到DOACTION标签和DOINITACTION标签,对所述DOACTION标签和所述D0INITACT10N标签进行混淆加密; 若所述源SWF文件的版本类型为AVM2类型,则根据所述文件头信息,定位到DoABC标签和SYMBOLCLASS标签,对所述DoABC标签和所述SYMBOLCLASS标签进行混淆加密; 重组加密后的所有标签,生成加密SWF文件。
2.根据权利要求1所述的SWF文件批量加密方法,其特征在于,所述根据所述文件头信息判断所述源SWF文件的版本类型属于AVMl类型或AVM2类型之前,还包括: 根据所述文件头信息判断所述源SWF文件是否是压缩文件,若是则解压所述源SWF文件。
3.根据权利要求1所述的SWF文件批量加密方法,其特征在于,所述若所述源SWF文件的版本类型为AVMl类型,则根据所述文件头信息,定位到DOACTION标签和DOINITACTION标签,对所述DOACTION标签和所述DOINITACTION标签进行混淆加密,包括: 根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述DOACTION标签之前的各个标签的长度值,并进行求和计算,获得所述DOACTION标签的位置值,根据所述DOACTION标签的位置值直接定位到所述DOACTION标签;根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述DOINITACTION标签之前的各个标签的长度值,并进行求和计算,获得所述DOINITACTION标签的位置值,根据所述DOINITACTION标签的位置值直接定位到所述DOINITACTION标签;解析所述DOACTION标签和所述DOINITACTION标签,获得所述源SWF文件中的类名、变量名以及函数名,将所述源SWF文件中的类名、变量名以及函数名进行混淆加密。
4.根据权利要求1所述的SWF文件批量加密方法,其特征在于,所述若所述源SWF文件的版本类型为AVM2类型,则根据所述文件头信息,定位到DoABC标签和SYMBOLCLASS标签,对所述DoABC标签和所述SYMBOLCLASS标签进行混淆加密,包括: 根据所述文件头信息,获 取所述源SWF文件中文件头的长度值以及位于所述DoABC标签之前的各个标签的长度值,并进行求和计算,获得所述DoABC标签的位置值,根据所述DoABC标签的位置值直接定位到所述DoABC标签; 根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述SYMBOLCLASS标签之前的各个标签的长度值,并进行求和计算,获得所述SYMBOLCLASS标签的位置值,根据所述SYMBOLCLASS标签的位置值直接定位到所述SYMBOLCLASS标签; 解析所述DoABC标签和所述SYMBOLCLASS标签,获得所述源SWF文件中的类名、变量名以及函数名,将所述源SWF文件中的类名、变量名以及函数名进行混淆加密。
5.一种SWF文件批量加密装置,其特征在于,包括: 接收模块,用于获取用户上传的源SWF文件; 第一判断模块,解析所述源SWF文件获取文件头信息,根据所述文件头信息判断所述源SWF文件的版本类型属于AVMl类型或AVM2类型; 第一加密模块,用于若所述源SWF文件的版本类型为AVMl类型,则根据所述文件头信息,定位到DOACTION标签和DOINITACTION标签,对所述DOACTION标签和所述DOINITACTION标签进行混淆加密; 第二加密模块,用于若所述源SWF文件的版本类型为AVM2类型,则根据所述文件头信息,定位到DoABC标签和SYMBOLCLASS标签,对所述DoABC标签和所述SYMBOLCLASS标签进行混淆加密; 重组模块,用于重组加密后的所有标签,生成加密SWF文件。
6.根据权利要求5所述的SWF文件批量加密装置,其特征在于,所述装置还包括: 第二判断模块,用于根据所述文件头信息判断所述源SWF文件是否是压缩文件,若是则解压所述源SWF文件。
7.根据权利要求5所述的SWF文件批量加密装置,其特征在于,所述第一加密模块包括: 第一定位单元,用于根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述DOACTION标签之前的各个标签的长度值,并进行求和计算,获得所述DOACTION标签的位置值,根据所述DOACTION标签的位置值直接定位到所述DOACTION标签; 第二定位单元,用于根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述DOINITACTION标签之前的各个标签的长度值,并进行求和计算,获得所述DOINITACTION标签的位置值,根据所述DOINITACTION标签的位置值直接定位到所述DOINITACTION 标签; 第一混淆单元,用于解析所述DOACTION标签和所述DOINITACTION标签,获得所述源SffF文件中的类名、变量名以及函数名,将所述源SWF文件中的类名、变量名以及函数名进行混淆加密。
8.根据权利要求5所述的SWF文件批量加密装置,其特征在于,所述第二加密模块包括: 第三定位单元,用于根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述DoABC标签之前的各个标签的长度值,并进行求和计算,获得所述DoABC标签的位置值,根据所述DoABC标签的位置值直接定位到所述DoABC标签; 第四定位单元,用于根据所述文件头信息,获取所述源SWF文件中文件头的长度值以及位于所述SYMBOLCLASS标签之前的各个标签的长度值,并进行求和计算,获得所述SYMBOLCLASS标签的位置值,根据所述SYMBOLCLASS标签的位置值直接定位到所述SYMBOLCLASS 标签; 第二混淆单元,用于解析所述DoABC标签和所述SYMBOLCLASS标签,获得所述源SWF文件中的类名、变量名以及函数名,将所述源SWF文件中的类名、变量名以及函数名进行混淆加密。
全文摘要
本发明提供一种SWF文件批量加密方法及装置,所述方法包括获取用户上传的源SWF文件;解析源SWF文件获取文件头信息,根据文件头信息判断源SWF文件的版本类型属于AVM1类型或AVM2类型;若为AVM1类型,则根据所述文件头信息,定位到DOACTION标签和DOINITACTION标签,对DOACTION标签和DOINITACTION标签进行混淆加密;若为AVM2类型,则根据所述文件头信息,定位到DoABC标签和SYMBOLCLASS标签,对DoABC标签和SYMBOLCLASS标签进行混淆加密;重组加密后的所有标签,生成加密SWF文件。用户通过批量上传SWF文件至SWF文件批量加密装置,对大量SWF文件进行批量加密,从而大大提高了加密效率,且不占用客户端的硬盘资源。
文档编号G06F21/10GK103218547SQ201310120619
公开日2013年7月24日 申请日期2013年4月9日 优先权日2013年4月9日
发明者程思敏 申请人:四三九九网络股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1