Android应用程序网络流量的远程采集系统及方法
技术领域
本发明涉及Android应用程序网络流量的远程采集系统及方法。
背景技术
采集Android应用程序运行时产生的网络流量时,通常需要在计算机中部署一个网络流量采集平台,这种方式对于一般的用户或者仅需要少量网络流量的研究人员而且是费时费力的。特别是在采集一些安全性未知的Android应用程序时,盲目的采集通常会带来很大的安全隐患。
VNC(Virtual Network Computer)是虚拟网络计算机的缩写。借助该技术在远程计算机上搭建VNC服务器,从而使用户可以远程使用计算机。Android VNC Server是一款可以搭建在Android平台上的VNC服务器,使用户可以远程操控Android设备。
Guacamole是一个基于HTML 5和JavaScript的VNC查看器,服务端基于Java的VNC-to-XML代理开发。要求浏览器支持HTML5。使用户可以通过支持HTML5的浏览器访问远程的VNC服务器。
基于以上现状,为解决远程采集Android应用程序产生的网络流量这一问题,存在以下几点技术问题需要解决:
(1)如何远程运行用户操作指定的Android设备或者Android虚拟设备;
(2)如何满足用户上传Android应用程序安装包,并且将Android应用程序安装包安装到指定的受控Android设备或者Android虚拟设备;
(3)如何满足用户对应用程序远程操作结束后,下载该应用程序运行时产生的网络流量文件;
(4)如何满足用户远程对Android设备或者Android虚拟设备进行操作,而不需要下载客户端。
发明内容
本发明的目的就是为了解决上述问题,提供一种Android应用程序网络流量的远程采集系统及方法,它具有让用户无需用户搭建平台,仅需打开网页浏览器即可方便、快速获取Android应用程序流量的优点。
为了实现上述目的,本发明采用如下技术方案:
Android应用程序网络流量的远程采集系统,部署在远程服务器中,包括:
Web服务器,部署Guacamole组件、Guacd组件和Web控制模块;所述Web服务器为Guacamole组件和Guacd组件提供运行环境;
Guacamole组件,与数据库连接,Guacamole组件还通过Guacd组件与Android终端连接,所述Guacamole组件用于将Android终端上的VNC服务器发出的数据传给客户端的浏览器,客户端的浏览器支持HTML5,从而使用户能够直接在支持HTML5的浏览器中远程操控Android终端上的VNC服务器。
Web控制模块,分别与数据库、文件存储服务器和Android终端连接,Web控制模块用于完成用户注册登录、将Android应用程序安装包远程上传给Android终端和从Android终端下载网络流量文件。
Web控制模块包括:用户信息处理子模块、任务调配子模块、Android终端控制子模块和网络流量文件链接生成子模块;
用户信息处理子模块,与数据库连接,负责用户的注册申请和登录验证,当用户请求远程采集网络流量时,用户信息处理子模块会配合任务调配子模块创建采集任务,并将采集任务和用户进行绑定;
任务调配子模块,负责用户进行流量采集任务时的调配工作,当用户请求远程采集网络流量时,任务调配子模块创建采集任务,将创建的采集任务存储到数据库中,随后向Android终端控制子模块发送启动Android终端指令;
Android终端控制子模块,用于接收任务调配子模块的指令,控制Android终端安装Android应用程序,Android终端控制子模块对网络流量进行采集,网络流量采集结束时,Android终端控制子模块向网络流量文件链接生成子模块发出网络流量采集结束的指令,采集到的网络流量文件存储到文件存储服务器中;
网络流量文件链接生成子模块,对文件存储服务器中存储的网络流量文件进行处理,生成网络流量文件链接,并将生成的网络流量链接通过任务调配子模块发送给客户端,供用户通过浏览器远程查看。
优选的,所述Android终端包括Android设备或Android虚拟设备。
优选的,所述Android终端安装有Android VNC Server。
优选的,所述远程服务器与防火墙连接。
优选的,所述远程服务器依次通过防火墙和互联网与支持HTML5浏览器的客户端连接。
Android应用程序网络流量的远程采集方法,包括如下步骤:
步骤(1):接收选择服务类型的指令;若指令是通过批量Android应用程序自动操作来采集Android应用程序运行时产生的网络流量,则进入步骤(2);若指令是通过单个Android应用程序手动操作来采集Android应用程序运行时产生的网络流量,则进入步骤(3);
步骤(2):调用批量Android应用程序自动操作子流程进行网络流量采集;采集网络流量任务完成后,检测批量Android应用程序自动操作子流程返回的结果是否存在异常结束的标示,如果存在,则直接结束;如果不存在异常结束的标示,则向用户发送任务完成指令,通知用户进行下载;
步骤(3):调用单个Android应用程序手动操作子流程进行网络流量采集;采集网络流量任务完成后,检测单个Android应用程序手动操作子流程返回的结果是否存在异常结束的标示,如果存在,则直接结束;如果不存在异常结束的标示,向用户提供下载采集到的网络流量文件的链接。
所述步骤(2)中的批量Android应用程序自动操作子流程的步骤为:
步骤(2-1):接收用户批量上传的Android应用程序的安装包;
步骤(2-2):调用aapt dump badging命令检测Android应用程序的安装包是否完整有效;若Android应用程序的安装包完整有效,则提供不同的自动运行模式供用户选择;根据用户的选择记录任务执行的模式;若Android应用程序的安装包无效,则提示用户无效并结束;
步骤(2-3):选取一台空闲的Android终端,将Android终端与用户的信息在数据库中进行绑定,同时标记Android终端为非空闲;
步骤(2-4):在用户上传的Android应用程序的安装包中提取出一个Android应用程序安装包;启动被绑定的Android终端,将用户上传的Android应用程序安装到Android终端中,并启动tcpdump程序开始采集网络流量;
步骤(2-5):启动安装的Android应用程序,同时根据记录的任务执行模式,启动对应的任务执行模式对应的程序,开始产生网络流量;
步骤(2-6):自动化操作完成后,关闭Android终端,检测在用户上传的应用程序安装包的队列中是否还有未运行的安装程序,如果还有则返回步骤(2-4)开始新的一轮操作;如果用户上传的应用程序安装包的队列中的应用程序都运行完毕,则将本次任务采集的网络流量文件打包并生成下载链接,结束。
优选的,步骤(2-1)还接收用户的电子邮箱地址,所述电子邮箱地址用于接收消息。
优选的,步骤(2-2)还调用正则表达式检测电子邮箱地址的格式是否正确。
优选的,步骤(2-2)如果应用程序安装包和/或电子邮箱地址格式是无效的,则提醒用户无效,并带着异常标示退出本次操作;如果应用程序安装包和电子邮箱地址格式均检测有效,允许用户选择自动运行模式。
优选的,步骤(2-2)中所述自动运行模式包括Monkey运行模式、无干扰运行模式和模拟人工操作运行模式;
优选的,步骤(2-2)提供不同的自动运行模式供用户选择的步骤为:
步骤(2-2-1):当接收到Monkey运行模式的选择指令时,记录本次任务执行的模式,并在应用程序运行过程中启动Monkey程序,接收用户对Android终端发出随机的点击、滑动等屏幕触控事件,并在达到预设的触控次数之后结束,完成本次操作;进入步骤(2-3);
步骤(2-2-2):当接收到无干扰运行模式的选择指令时,记录本次任务执行的模式,并在应用程序运行过程中,不对运行过程做任何干涉,待达到规定的运行时间后结束,完成本次操作;进入步骤(2-3);
步骤(2-2-3):当接收到模拟人工操作运行模式的选择指令时,记录本次任务执行的模式,并在应用程序运行过程中调用模拟人工操作的程序,对应用程序界面中的可点击的组件进行逐层遍历式的点击,从而实现模拟人工使用应用程序时的操作流程;达到系统预设的点击次数后结束,完成本次操作;进入步骤(2-3)。
优选的,步骤(2-5)中所述可点击组件包括按钮或链接。
优选的,步骤(2-5)中所述逐层遍历式的点击是对当前应用程序首界面中的组件逐个点击完毕后,在对第二层界面中的组件逐个点击。
所述步骤(3)中的单个Android应用程序手动操作子流程的步骤为:
步骤(3-1):接收用户上传的单个Android应用程序的安装包;
步骤(3-2):调用aapt dump badging命令检测应用程序的安装包是否完整有效;如果无效,则提醒用户安装包无效,带着异常标示结束;如果有效,则选取一台空闲的Android终端;将Android终端与用户的信息在数据库中进行绑定,同时标记Android终端为非空闲;
步骤(3-3):启动被绑定的Android终端,并将用户上传的Android应用程序安装到Android终端中,同时启动tcpdump程序开始采集网络流量;接收用户远程对Android终端进行操作的指令;等待用户退出操作后,关闭Android终端,并将采集的网络流量文件生成下载链接供用户下载,结束。
本发明的有益效果:
(1)为需要采集Android应用程序网络流量的用户,提供了一个便捷的平台。让用户可以使用计算机中的浏览器通过简单的注册登录流程,就可以远程控制Android终端,运行指定的应用程序。运行结束后即可下载到运行时产生的网络流量。
(2)为用户提供了一个安全的远程运行Android应用程序的环境。本系统部署在带有防火墙和NAT服务的网络环境内。不仅可以让用户获取安全性未知的Android应用程序网络流量,也可以在一定程度上保护系统不会因为运行恶意应用程序而受到攻击。
(3)本发明还设计了批量的采集Android应用程序网络流量的功能。允许用户远程批量上传Android应用程序的安装包,并且选择多种应用程序自动化运行方法。并在运行结束时向用户提供的邮箱中发送下载链接。供用户下载应用程序运行时产生的网络流量。
附图说明
图1为可提供远程采集Android应用程序网络流量服务的系统框架图;
图2为Web控制模块内部功能子模块连接关系示意图;
图3为本发明的工作总体流程图;
图4为本发明实现单个Android应用程序手动操作的流程图;
图5为本发明实现批量Android应用程序自动操作的流程图。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
一种可提供远程采集Android应用程序网络流量服务的系统具体工作过程为:
1)系统接收到用户远程的登录请求,通过验证后,等待用户选择所需要提供的服务。
2)当用户选择单个Android应用程序手动操作时,首先,系统接收用户上传的Android应用程序的安装包;其次,在当前空闲的Android终端中选取一台分配给该用户,并将该用户的信息和Android终端信息绑定存储在数据库中;然后,在将用户上传的应用程序安装在选中的Android终端中,并启动Android VNC Server(安卓虚拟网络计算机服务器)。最后,通知用户可以登录平台进行操作。
3)用户发出请求远程接入Android终端的命令,系统中的Guacamole组件在数据库中查找用户和该Android终端是否已经绑定,如果没有绑定,则说明用户没有权限接入该终端,对用户请求作出拒绝响应。如果用户和该Android终端已经绑定,则通过Guacd组件将远程显示、控制等操作使用的的VNC协议转换为Guacamole协议,Guacamole组件再将Guacamole协议封装成Http协议,供用户在支持HTML5的浏览器中远程的显示、操作Android终端。
4)服务器端的Android终端中运行的Tcpdump程序负责网络流量的采集工作,并将采集到的网络流量存储在文件存储服务器中。当用户停止采集网络流量后,Tcpdump程序也将停止运行,并将本次采集的网络流量文件生成下载链接,供用户进行下载。
5)当用户登陆系统后选择的是批量自动采集Android应用程序网络流量时。系统接收用户批量上传的Android应用程序安装包和用户电子邮箱地址。系统根据用户选择的自动采集模式,系统开始逐一的安装Android应用程序,并根据采集模式自动运行,自动采集运行时产生的网络流量。其中自动采集模式分为程序无干扰运行模式、外挂monkey组件运行模式、外挂模拟人工操作组件运行模式。程序无干扰运行模式即程序运行后,不对程序做任何操作,等待运行一段设定的时间后停止。外挂monkey组件运行模式即程序运行后,启动monkey组件,对运行中的程序发送随机的点击、滑动等触控事件,当完成预先设定的触控次数后,程序停止运行。外挂模拟人工操作组件运行模式即程序运行后,启动模拟人工操作组件,该组件是编写的Android应用程序界面自动化遍历程序,可以实现模拟人工操作应用程序的过程,实现对应用程序按钮等组件的逐一点击,当达到用户设定的点击次数或者应用程序退出时,程序停止运行。
6)当系统完成全部Android应用程序的网络流量采集工作后,系统会自动向用户提交的电子邮箱中发送一条采集完成信息,提醒用户进行网络流量文件的下载。
为了更好的理解本发明,以下给出了本发明更为详细的说明:
图1为一种可提供远程采集Android应用程序网络流量服务的系统框架图。用户可以从本地支持HTML5的浏览器中登录系统。系统部署在有防火墙保护的远程服务器中。系统整体分为三部分:
Web服务器,部署Guacamole组件、Guacd组件和Web控制模块;所述Web服务器用于运行Web应用程序完成用户注册登录、将Android应用程序安装包远程上传给Android终端和从Android终端下载网络流量文件,以及为Guacamole组件和Guacd组件提供运行环境;
数据库,同时连接guacamole组件和系统管理程序;
安装有Android VNC Server的Android终端,通过guacd组件和guacamole组件使用户可以实现远程操作终端的功能,同时系统管理程序控制Android终端进行终端的配置、启动、安装应用程序、采集网络流量等工作。
如图2所示,Web控制模块包括:用户信息处理子模块、任务调配子模块、Android终端控制子模块和网络流量文件链接生成子模块;
用户信息处理子模块,与数据库连接,负责用户的注册申请和登录验证,当用户请求远程采集网络流量时,用户信息处理子模块会配合任务调配子模块创建采集任务,并将采集任务和用户进行绑定;
任务调配子模块,负责用户进行流量采集任务时的调配工作,当用户请求远程采集网络流量时,任务调配子模块创建采集任务,将创建的采集任务存储到数据库中,随后向Android终端控制子模块发送启动Android终端指令;
Android终端控制子模块,用于接收任务调配子模块的指令,控制Android终端安装Android应用程序,Android终端控制子模块对网络流量进行采集,网络流量采集结束时,Android终端控制子模块向网络流量文件链接生成子模块发出网络流量采集结束的指令,采集到的网络流量文件存储到文件存储服务器中;
网络流量文件链接生成子模块,对文件存储服务器中存储的网络流量文件进行处理,生成网络流量文件链接,并将生成的网络流量链接通过任务调配子模块发送给客户端,供用户通过浏览器远程查看。
图3为本发明的工作总体流程图,如图3所示。该方法包括:
步骤110,系统等待用户选择服务类型。
步骤111,用户选择批量Android应用程序自动操作的方式采集Android应用程序运行时产生的网络流量,系统调用批量Android应用程序自动操作子流程。
步骤112,系统自动化的采集网络流量任务完成后,会检测子流程返回的结果是否存在异常结束的标示,如果存在,则直接结束。
步骤113,如果不存在异常结束的标示,则向用户填写的电子邮箱中发送一封采集任务完成的邮件,通知用户进行下载。
步骤114,用户登陆系统,下载采集的网络流量文件。
步骤115,用户选择单个Android应用程序手动操作的方式采集Android应用程序运行时产生的网络流量,系统调用单个Android应用程序手动操作子流程。
步骤116,用户手动采集网络流量任务完成后,会检测子流程返回的结果是否存在异常结束的标示,如果存在,则直接结束。
步骤117,如果不存在异常结束的标示,系统将采集到的网络流量文件向用户提供下载链接。
图4为本发明实现单个Android应用程序手动操作的流程图;如图4所示。该方法包括:
步骤120,系统接收用户上传的单个Android应用程序的安装包。
步骤121,系统调用aapt dump badging命令检测该应用程序的安装包是否完整有效。
步骤122,如果文件无效,则提醒用户文件无效,带着异常标示退出本次操作。
步骤123,如果文件检测有效,则系统在当前服务器中空闲的Android终端中选取一台。
步骤124,将该终端与该用户的信息在数据库中进行绑定,同时标记该终端为非空闲。
步骤125,启动被绑定的Android终端,并将用户上传的Android应用程序安装到该终端中,同时启动tcpdump程序开始采集网络流量。
步骤126,用户通过远程可视化的方式对Android终端进行操作。
步骤127,用户退出操作后,系统关闭Android终端,并将采集的网络流量文件生成下载链接显示到用户的浏览器中,供用户下载,随后正常退出。
图5为本发明实现批量Android应用程序自动操作的流程图;如图5所示。该方法包括:
步骤130,系统接收用户批量上传的Android应用程序的安装包以及用户接收消息的电子邮箱地址。
步骤131,系统调用aapt dump badging命令检测该应用程序的安装包是否完整有效,调用正则表达式检测电子邮箱地址的格式是否正确。
步骤132,如果应用程序安装包和电子邮箱地址格式出现一项是无效的,则提醒用户具体哪一项无效,并带着异常标示退出本次操作。
步骤133,如果应用程序安装包和电子邮箱地址格式均检测有效,允许用户选择一种程序自动运行时的模式。
步骤134,当用户选择Monkey运行模式时,系统记录本次任务执行的模式,并在之后的应用程序运行中会额外启动Monkey程序,对Android终端发出随机的点击、滑动等屏幕触控事件,并在达到系统预设的触控次数之后,退出程序,完成本次操作。
步骤135,当用户选择无干扰运行模式时,系统记录本次任务执行的模式,并在之后的应用程序运行时不对运行过程做任何干涉,只是静待达到规定的运行时间后,退出程序,完成本次操作。
步骤136,当用户选择模拟人工操作运行模式时,系统记录本次任务执行的模式,并在之后的应用程序运行时调用模拟人工操作的程序,实现对应用程序界面中的按钮,链接等可点击的组件进行点击,这种点击是逐层遍历式的点击,即对当前应用程序首界面中的组件逐个点击完毕后,在对第二层界面中的组件逐个点击。从而实现模拟人工使用应用程序时的操作流程。达到系统预设的点击次数后,退出程序,完成本次操作。
步骤137,系统在当前服务器中空闲的Android终端中选取一台。
步骤138,将该终端与该用户的信息在数据库中进行绑定,同时标记该终端为非空闲。
步骤139,系统在用户上传的Android应用程序安装包队列中提取出一个Android应用程序安装包。
步骤140,启动被绑定的Android终端,将用户上传的Android应用程序安装到该终端中,并启动tcpdump程序开始采集网络流量。
步骤141,启动安装的Android应用程序,同时根据系统记录的任务执行模式,启动相应模式对应的程序,开始产生网络流量。
步骤142,自动化操作完成后,系统关闭Android终端,系统检测在用户上传的应用程序队列中是否还有未运行的安装程序,如果还有则返回步骤139开始新的一轮操作。
步骤143,如果用户上传的应用程序队列中的应用程序都运行完毕,则将本次任务采集的网络流量文件打包并生成下载链接,随后正常退出。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。