一种app安装包网络流量识别方法

文档序号:10538930阅读:310来源:国知局
一种app安装包网络流量识别方法
【专利摘要】本发明公开了一种APP安装包网络流量识别方法。本方法为:1)将从网络流量中获取的APP安装包发送给在线识别引擎和离线解析引擎;2)离线解析引擎对收到的APP安装包进行解析,得到每一APP安装包信息;如果APP安装包信息符合设定条件,则将该APP安装包信息及其哈希特征保存到映射库中;3)在线识别引擎实时对接收到的APP安装包进行哈希计算,得到其哈希值hseg,然后根据该哈希值hseg查找所述映射库,如果存在对应的记录,则判断该APP安装包为该条记录标记的网络流量。本方法可以大大提高APP安装包识别效率。
【专利说明】
一种APP安装包网络流量识别方法
技术领域
[0001]本发明属于数据流识别领域,涉及一种基于APP应用名称等信息识别APP安装包网络流量的方法。
【背景技术】
[0002]随着移动互联网的飞速发展,移动智能终端的APP应用层出不穷,覆盖了人们生活的方方面面。对网络流量中APP进行分类,识别网络流量中是否包含某个APP应用的安装包流量,可以理解流量中的APP内容,能够帮助运营商提高运营质量。
[0003 ]要识别网络流量中特定应用名称的APP流量,首先要获得APP安装文件的样本。常见的通过网络爬虫获取APP安装文件的方式,有两个缺点:其一,APP版本数量众多,且版本变化频繁,需要网络带宽、存储等计算资源;其二,各大应用商店都有对应的反爬虫(Ant1-spider) 机制,难以全面获得。其次,传统的方法每接收到一个 APP 文件都要进行解析,对于同一个APP传输多次,会进行多次解析,浪费计算资源。

【发明内容】

[0004]鉴于现有技术中存在的技术问题,本发明的目的在于提供一种APP安装包网络流量识别方法。该方法无需预先准备样本,只需用户指定若干个APP的相关信息,比如APP应用名称,就可以识别网络流量中是否包含这些APP应用名称的安装包流量。用户也可以不指定特定的APP名称,这样就识别所有应用名称的APP安装包流量。该方法是在APP网络下载或传输过程中实时识别APP基本信息(如应用程序名称、包名、版本等)的方法,简称为APP-1dentificat1n0
[0005]本发明主要包含两个方面:I)离线APP安装包的反编译、解析以及哈希生成,建立APP应用名称和哈希值的映射关系库;2)在线APP的识别,通过对实时采集的APP文件内容生成哈希值,再使用哈希比较算法查找映射关系库来实现。
[0006]在手机APP的传播中,其下载地址(URL)的作用被弱化,主要通过APP名称进行传播。苹果、谷歌等互联网巨头,建立了或封闭、或开放的以应用商店为中心的安装包分发体系,辅佐以小型网站和论坛分享的边缘地带,共同构成了手机APP的传播链条。这种场景下,获得目标APP的全部下载URL和所有版本的安装包样本是比较困难的,尤其是1S这种封闭生态环境。导致传统的基于URL和二进制特征的APP识别方式很难起效。
[0007]基于此,本发明提出了一种识别网络流中APP应用名称等信息的方法和系统,通过创建APP映射库采集系统,建立APP应用名称(同时也包括了APP其他信息,如包名、版本号)和其哈希特征的映射库。在后续又采集到特定APP流量时,可以通过查找映射库来识别该APP,从而不必大费周章地研究APP传输单元特征。本发明包含以下内容:
[0008]一)APP离线解析引擎
[0009]I)采集前端从网络流量中解析HTTP等协议,从中获取完整APP文件(即APP安装包)之后,发送到离线解析引擎,后者完成APP的反编译和解析,获得其大小、应用名称、公开版本号、内部版本号等信息,同时计算出APP安装包的哈希值;
[0010]2)鉴于APP文件有基于多国或多地区本地化的语言版本,本方法也支持用户获取指定语言的APP信息;
[0011]3)该引擎不断地收集网络中传输的APP文件,进行着上述计算过程,同时具备自动去重功能,能够对已解析过的APP进行去重,避免重复计算;
[0012]4)系统能够进行Android和1S两种类型APP的解析,能自动识别APP类型;
[0013]5)用户可指定识别特定APP应用名称的安装包流量,若当前APP名称是用户配置的若干名称中的一个,则建立APP信息和哈希值的映射关系;否则,就将APP所有信息存储起来,用户可在后续任意时刻将该APP名称配置为目标APP名称,此时离线解析引擎自动建立映射关系,而不必再次对APP进行解析。用户也可以不配置应用名称,而是设置将所有APP都建立映射关系。
[0014]二)APP在线识别引擎
[00? 5] I)识别引擎实时对接收到的APP文件内容进行哈希计算,得到哈希值hseg,映射关系库中的哈希值h_P是根据完整的APP文件生成的,利用哈希比较算法,在h_P数据集内查找hS(3g,进而查找到映射关系;
[0016]2)用户可以基于特定的APP应用名称构造h_P子集,作为要进行匹配识别的对象;比如用户只想关注某1个APP的传输,那么就可以将这1个APP的名称与哈希构造一个子集。离线解析引擎知道用户只想关注这10个,那么就只将这10个APP的映射关系反馈至前端的在线识别引擎;
[0017]3)在识别APP的同时,系统能记录APP传输的网络流信息,如URUUserAgent (用户代理)、五元组信息(源IP地址、源端口、目的IP地址、目的端口、协议)等。
[0018]本发明是采用基于哈希特征来识别网络流中下载和传输的APP应用,能够在文件传输未完成的情况下,提前识别APP的应用名称、版本等基本信息。将本系统部署于本单位互联网出入口上,采集48小时网络流量,共收到完整APP文件个数210个,成功识别173个,识别成功率在82.4%以上。
[0019]与现有技术相比,本发明的积极效果为:
[0020]本发明创新的采用被动获取方式,安装包只要在网络上传输,就可以被本发明截获,不必进行爬取,不必主动查找传输特征,且每个APP只需解析一次,后续再次收到该APP的时候不用进行解析,仅通过用户配置的APP应用名称,就可以将相应的APP流量识别出来。对于“微信”这样具有大量用户的APP来讲,在骨干网络节点上本发明可以节约几百几千万次的解析操作。
[0021]通过对国内某公司网关10天的真实网络流量进行实验测试,共收集完整APP文件1251个,建立映射关系1038条,APP解析成功率在83.0 %以上。对于已建立映射关系的APP文件,重复传输了 7763次,成功识别6427次,识别比率为82.8%,总体满足实际的应用需求。
【附图说明】
[0022]图1为本发明的方法流程图。
【具体实施方式】
[0023]本发明完整的流程图如图1所示,主要包含以下几个模块:
[0024]1)APP采集前端
[0025]是获取APP文件的源泉,从旁路的网络流量中获取APP文件内容,一部分送给在线APP解析引擎进行解析计算,另一部分给在线APP识别引擎进行APP识别;采集前端可以根据传输单元特征,如URL中带的字符串特征或文件后缀名等猜测APP所属平台是Andro id还是1S,后端会进一步进行识别。
[0026]2)APP在线识别引擎
[0027]部署在APP采集前端,具有较高的实时性。在线识别引擎接收APP离线解析引擎反馈的11。。_子集,通过对从网络流中实时获取的APP文件进行哈希计算和哈希比较来识别APP,哈希比较的对象即是h_P子集。使用哈希比较省去了在线捕获和拼接APP文件、将APP写磁盘、再进行反编译解析的操作,远比重复解析效率高。经过哈希比较,如果命中了映射关系中的一条记录,则目前的APP传输流量就是该条记录所标记的APP应用名称要筛选的流量,也就达到了通过APP应用名称识别网络流量中APP安装包流量的目的。同时,该引擎可以获取URL、五元组等传输信息,记录传输日志。
[0028]3)APP离线解析引擎
[0029]包括APP文件接收和去重模块、AndroidAPP信息提取引擎、1SAPP信息提取引擎以及哈希运算模块。APP离线解析引擎对实时性要求不高,可作为本系统的后级模块部署。同时,利用MD5算法对已解析过的APP去重,避免重复解析。
[0030]4)APP信息提取引擎
[OO31 ]负责确定APP的所属平台并进行APP解析。首先采集前端已根据APP的传输单元特征猜测APP所属的平台,这里优先使用对应的信息提取引擎进行进一步判断。由于Android和1S等APP应用程序安装包使用的都是压缩(如ZIP)算法,且安装包的内部文件名称、目录组织结构不同,所以可以使用对应的解压算法以及根据安装包各自特有的文件组织方式进一步识别APP类型,据此可以断定APP的所属平台。确定了 APP的所属平台后,就可以使用对应的信息提取引擎完成对完整APP文件进行反编译和解析,从而提取APP的应用名称、版本等信息。APP安装包是一种有特殊组织结构的压缩包,使用XML格式的文本、二进制形式进行APP资源的管理。鉴于此,对APP解析的主要工作包括特定XML资源文件的定位和查询、XML文件提取、XML文件解析(文本和二进制两种形式)、XML变量引用关系查询、资源ID查找、变量的值的提取等过程。在进行AndroidAPP的XML解析之前,需要首先进行APP文件反编译以得到XML文件。对于1S APP,可以使用ZIP解压缩、XML二进制转换得到XML文件。
[0032]5)映射关系库
[0033]负责将APP信息和APP对应的哈希值建立映射关系,以创建APP信息和哈希值映射库。哈希运算模块计算APP的哈希值并与APP信息建立映射,用户可以配置特定的APP应用名称,离线解析引擎将根据用户的配置,构造h。-子集,作为在线识别引擎进行识别的对象。当然,用户也可以简单地将所有的APP都作为要进行识别的对象。
[0034]上述步骤中的2)和3)是本发明的核心点,二者使用相同的哈希算法进行哈希计算,后者对APP进行解析、对内容进行哈希计算,与用户配置结合,建立映射关系并反馈至前者,前者根据该映射关系进行APP的识别。基于此,识别网络流中APP应用基本信息的过程如下:
[0035]I)首先用户设定要识别的APP流量对应的APP名称,或简单设定支持所有APP的应用名称(不必配置具体的APP应用名称);
[0036]2) APP离线解析引擎接收前端馈送的APP文件,对APP进行解析,建立APP信息(名称、版本等)与安装包的哈希特征之间的映射关系库;若用户不关心该应用名称的APP流量,则存储APP的所有信息,以防未来该APP的名称又被用户配置为目标名称;当增加目标APP名称时,离线解析引擎从保存的信息中查找符合新增APP名称及其哈希值,然后建立映射关系保存到所述映射库中;
[0037]3)部署在APP信息采集前端的APP在线识别引擎,对正在传输的APP内容进行哈希计算;
[0038]4)采用哈希比较算法,对计算出的哈希值进行匹配,匹配的对象即是前面建立的映射关系库;
[0039]5)匹配结果的处理。
[0040]如果该APP在映射关系库中已存在映射关系,会返回目标APP的基本信息,包括应用名称和版本等,将目前传输的APP流量及APP名称报告给用户。
[0041]如果没有结果,则将在步骤2)中解析后,加入映射关系库。
【主权项】
1.一种APP安装包网络流量识别方法,其步骤为: 1)将从网络流量中获取的APP安装包发送给在线识别引擎和离线解析引擎; 2)离线解析引擎对收到的APP安装包进行解析,得到每一APP安装包的信息,并计算该安装包的哈希值;如果APP安装包信息符合设定条件,则将该APP安装包信息及其哈希特征保存到映射库中; 3)在线识别引擎实时对接收到的APP安装包进行哈希计算,得到其哈希值hse3g,然后根据该哈希值11%查找所述映射库,如果存在对应的记录,则判断该APP安装包为该条记录标记的网络流量。2.如权利要求1所述的方法,其特征在于,该设定条件为设定的若干APP应用名称。3.如权利要求1或2所述的方法,其特征在于,该APP安装包信息包括APP应用名称。4.如权利要求3所述的方法,其特征在于,该APP安装包信息还包括APP包名、APP版本号、APP安装包的大小。5.如权利要求1或2所述的方法,其特征在于,在线识别引擎根据该哈希值hsdlj用哈希比较算法查找所述映射库。6.如权利要求1或2所述的方法,其特征在于,离线解析引擎对已解析过的APP进行去重。7.如权利要求1或2所述的方法,其特征在于,步骤2)中,离线解析引擎计算并保存每一APP安装包的哈希值及其对应APP安装包信息;当增加设定条件中的信息时,离线解析引擎从保存的信息中查找符合新增设定条件的APP安装包信息及其哈希值,然后建立映射关系保存到所述映射库中。8.一种安装包网络流量识别方法,其步骤为: 1)将从网络流量中获取的APP安装包发送给在线识别引擎和离线解析引擎; 2)离线解析引擎对收到的APP安装包进行解析,得到每一APP安装包信息并计算该APP安装包的哈希值,建立APP安装包信息及其哈希特征的映射库; 3)在线识别引擎实时对接收到的APP安装包进行哈希计算,得到其哈希值hse3g,然后根据该哈希值11%查找所述映射库,如果存在对应的记录,则判断该APP安装包为该条记录标记的网络流量。9.如权利要求8所述的方法,其特征在于,该APP安装包信息包括APP应用名称、APP包名、APP版本号、APP安装包的大小。10.如权利要求8或9所述的方法,其特征在于,在线识别引擎根据该哈希值hS(3g利用哈希比较算法查找所述映射库;离线解析引擎对已解析过的APP进行去重。
【文档编号】H04L29/08GK105897923SQ201610373851
【公开日】2016年8月24日
【申请日】2016年5月31日
【发明人】徐杰, 张成伟, 包秀国, 刘庆云, 云晓春, 郑超, 李舒, 李佳
【申请人】中国科学院信息工程研究所, 国家计算机网络与信息安全管理中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1