通过脚本插件技术提取智能手机应用数据的方法和装置制造方法【专利摘要】本发明公开了通过脚本插件技术提取智能手机应用数据的方法和装置,属于数据恢复【
技术领域:
】,包括以下步骤:S1:使用JavaScript编写脚本文档;S2:将编写好的脚本文档存放在取证系统运行的特定目录Script下;S3:将取证系统与手机连通,获取手机安装的所有应用及其版本,并把取证系统中的插件应用和手机安装的应用进行智能匹配;S4:将匹配成功的脚本插件进行数据提取、解析、分析,最后呈现到用户界面。本发明的有益效果如下:本发明由于使用了JavaScript脚本编写插件,无缝集成到取证系统中,使取证系统可以无限扩展。【专利说明】通过脚本插件技术提取智能手机应用数据的方法和装置【
技术领域:
】[0001]本发明属于信息安全【
技术领域:
】,具体涉及一种通过脚本插件技术提取智能手机应用数据的方法和装置。【
背景技术:
】[0002]智能手机取证系统是对手机中各种应用(Application,简称App)数据进行提取和分析。但市场上的手机App层出不穷,每个App应用的版本也在不断的更新升级,因此现有的取证系统所支持的App总赶不上市场的变化。[0003]比如当下计划生成支持A、B、C三个主流应用最新VI版本的取证系统,但当半个月后,应用集成到取证系统后,这三个应用已经升级到V2版本,或者又有新的D应用需要集成,因此,支持VI版本的取证系统如果应用在V2版本中,会出现重大缺陷。[0004]在这种情况下,只有把App应用数据的提取方法开放给第三方(包括客户),使用最流行的JavaScript语言编写脚本,以插件的机制持续不断地集成到取证系统中,才可能解决上述问题。【
发明内容】[0005]本发明针对现有技术的不足,提供了一种通过脚本插件技术提取智能手机应用数据的方法和装置,能够有效的解决因APP更新速度过快造成取证系统滞后而产生的严重缺陷。[0006]为解决以上问题,本发明采用的技术方案如下:一种通过脚本插件技术提取智能手机应用数据的方法和装置,包括以下步骤:51:使用JavaScript编写脚本文档;52:将编写好的脚本文档存放在取证系统运行的特定目录Script下;53:将取证系统与手机连通,获取手机安装的所有应用及其版本,并把取证系统中的插件应用和手机安装的应用进行智能匹配;S4:将匹配成功的脚本插件进行数据提取、解析、分析,最后呈现到用户界面。[0007]作为优选:所述的脚本文档由两部分组成,分别是配置部分和JavaScript代码部分。[0008]作为优选:所述的配置部分包括应用名称、隶属于哪种应用类别、版本号、提取方式、使用的数据结构、使用的图标文件以及需要使用的数据文件。[0009]作为优选:所述的JavaScript代码部分加入GoogleV8脚本引擎中注入的用C#编写的XLY对象。[0010]作为优选:采用所述的GoogleV8的·Net版动态库Noesis.Javascript,dll,在脚本执行过程中,动态加入以XLY开头的对象。[0011]作为优选:在XLY对象中注入Convet,Debug,File,PList,Sqlite和File对象。[0012]作为优选:S4所述的具体方法如下:S41使用C#语言把脚本中的配置信息以可扩展标记语言XML的方式读入,通过对配置文件的解析,把用户配置的插件信息转换为在C#中自定义的DataParseScript对象,其中包含该插件的名称、使用的数据结构、用户界面视图结构和JavaScript脚本代码;542:通过GoogleV8引擎,高效执行JavaScript脚本,这里约定JavaScript的执行结果为Array转换的Json字符串;543:通过开源动态库Newtonsoft.Json.dll把Json字符串转换为C#中可以使用的数组对象;544:把配置中获取的DataParseScript对象和JavaScript执行得到的C#语言中数组对象组装为用户界面统一的数据契约对象进行呈现。[0013]为解决以上问题,本发明还提供了一种插件控制器,包括设置在取证系统运行的特定目录Script下的脚本编辑模块;将取证系统中的插件应用和手机安装的应用进行智能匹配的匹配模块;将匹配成功的脚本插件进行数据提取、解析、分析,最后呈现到用户界面的解析模块。[0014]作为优选,所述的脚本编辑模块包括配置单元和代码单元,所述的配置单元包括应用名称、隶属于哪种应用类别、版本号、提取方式、使用的数据结构、使用的图标文件以及需要使用的数据文件。[0015]作为优选,所述的代码单元包括GoogleVS脚本引擎中注入的用C#编写的XLY对象,其中XLY对象包括Convet,Debug,File,PList,Sqlite和File对象。[0016]本发明的有益效果如下:本发明只需要第三方(包括客户)人员通过简单学习和遵守特定契约,就可以根据自己特定需求(目的)提取特定应用数据,以满足自身需求。本发明使用最常用的脚本语言JavaScript,由于这门语言使用最广泛,基础语法简单,降低了第三方(包括客户)人员的学习成本。本发明由于使用了JavaScript脚本编写插件,无缝集成到取证系统中,使取证系统可以无限扩展。【专利附图】【附图说明】[0017]图1是JavaScript脚本插件加载到取证系统的流程示意图。【具体实施方式】[0018]为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明做进一步详细说明。[0019]一种通过脚本插件技术提取智能手机应用数据的方法,包括以下步骤:51:使用JavaScript编写脚本文档;52:将编写好的脚本文档存放在取证系统运行的特定目录Script下;53:将取证系统与手机连通,获取手机安装的所有应用及其版本,并把取证系统中的插件应用和手机安装的应用进行智能匹配;S4:将匹配成功的脚本插件进行数据提取、解析、分析,最后呈现到用户界面。[0020]所述的脚本文档由两部分组成,分别是配置部分和JavaScript代码部分。[0021]所述的配置部分包括应用名称、隶属于哪种应用类别、版本号、提取方式、使用的数据结构、使用的图标文件以及需要使用的数据文件。[0022]作所述的JavaScript代码部分加入GoogleV8脚本引擎中注入的用C#编写的XLY对象。[0023]采用所述的GoogleV8的·Net版动态库Noesis.Javascript,dll,在脚本执行过程中,动态加入以XLY开头的对象。[0024]在XLY对象中注入Convet,Debug,File,PList,Sqlite和File对象。[0025]S4所述的具体方法如下:S41使用C#语言把脚本中的配置信息以可扩展标记语言XML的方式读入,通过对配置文件的解析,把用户配置的插件信息转换为在C#中自定义的DataParseScript对象,其中包含该插件的名称、使用的数据结构、用户界面视图结构和JavaScript脚本代码;542:通过GoogleV8引擎,高效执行JavaScript脚本,这里约定JavaScript的执行结果为Array转换的Json字符串;543:通过开源动态库Newtonsoft.Json.dll把Json字符串转换为C#中可以使用的数组对象;544:把配置中获取的DataParseScript对象和JavaScript执行得到的C#语言中数组对象组装为用户界面统一的数据契约对象进行呈现。[0026]为解决以上问题,本发明还提供了一种插件控制器,包括设置在取证系统运行的特定目录Script下的脚本编辑模块;将取证系统中的插件应用和手机安装的应用进行智能匹配的匹配模块;将匹配成功的脚本插件进行数据提取、解析、分析,最后呈现到用户界面的解析模块。[0027]所述的脚本编辑模块包括配置单元和代码单元,所述的配置单元包括应用名称、隶属于哪种应用类别、版本号、提取方式、使用的数据结构、使用的图标文件以及需要使用的数据文件;所述的代码单元包括GoogleVS脚本引擎中注入的用C#编写的XLY对象,其中XLY对象包括Convet,Debug,File,PList,Sqlite和File对象。[0028]具体实施例:JavaScript脚本插件加载到取证系统的方法:如图1所示,用户使用JavaScript编写脚本后,放在取证系统运行的特定目录Script下,取证系统运行时从该目录加载所有的插件。然后将取证系统链接手机获取手机安装的所有应用及其版本,把取证系统中的插件应用和手机安装的应用进行智能匹配。匹配成功的脚本插件开始进行数据提取、解析、分析,最后呈现到Π(UserInterface,用户界面)。此处的智能匹配是指对版本的匹配,属于现有技术,不在此累述。[0029]脚本文档设计思路:脚本文档由两部分组成,分别是配置和Javascript代码。[0030]1.配置部分主要起到插件自述作用,如它的应用名称,隶属于哪种应用类别,版本号,提取方式,使用的数据结构,使用的图标文件以及它需要使用的数据文件。[0031]为了让Π根据用户自定义展示数据结构,本发明提供data配置节点,可以对展示子项的类型、名称、宽度,对齐方式,排序以及呈现格式等进行自定义。[0032]代码举例如下:/*[config]〈pluginname=〃Sqlite提取测试,1〃group=〃Test,ll〃devicetype=〃android,ios〃pump=〃usb,wifi,mirror,bluetooth〃app=〃com.android,providers,telephony"version=〃L0〃icon=〃\icons\icon-Devicelnformation.png〃description=〃Sqlite提取模板〃data=〃$data"><source><value>/data/data/com.sec.android,provider,logsprovider/databases/logs.db</value><value>#/databases/logs.db</value></source>〈datadetailfield=〃〃contract=〃Contact〃>〈itemname=〃电话号石马〃code=〃Number〃type=〃string〃width=〃120〃format=〃〃order=〃Asc,Desc〃alignment=〃Left,Center,Right〃groupindex=〃_l〃templatename=〃〃templateparameter=〃"></item>〈itemname=〃日期〃code=〃StartDate〃type=〃string〃width=〃120〃format=〃〃></item>〈itemname=〃姓名〃code=〃Name〃type=〃string〃width=〃130〃></item>〈itemname=〃DurationSecond〃code=〃DurationSecond〃type=〃int〃width=〃100〃></item>〈itemname=〃联系人名称〃code=〃ContactName〃type=〃stwidth=〃180〃></item>〈itemname=〃Type〃code=〃Type〃type=〃string〃width=〃120〃></item></data></plugin>[config]*/2.脚本文档的核心部分是由用户编写的JavaScript代码。[0033]考虑到用户学习成本以及对一些用JavaScript脚本编写难以实现的场景,这里只使用JavaScript最基本的语法,再辅以往GoogleVS脚本引擎中注入的用C#编写的XLY对象(File、PList、Convert、Debug、Sqilte)。用户可以轻松处理I0S系统有的PList文件和Sqlite文件,同时可以使用一些工具类和调试类方法。[0034]举例如下://树形结构functionTreeNode(){this.Text=〃〃;//节点名称this.TreeNodes=newArray();//子节点数字this.Items=newArray();//该节点的数据项,即前面定义的Item对象数组。[0035]this.Type=〃〃;//节点[Items]的数据类型this.DataState="Normal";}varresult=newArray();//源文件varsource=$source;//测试数据XLY.Debug.WriteLine("HelloWorld");//账户varlenl=Number(XLY.Debug.Randomlnt(2,5));for(vari=0;i<lenl;i++){varnl=newTreeNode();nl.Text="账户:〃+i;-|rp""nl.iype=Group;//分组varlen2=Number(XLY.Debug.Randomlnt(1,5));}核心逻辑实现技术:1.引入GoogleV8开源引擎它是由谷歌开发开源的JavaScript引擎,它在运行之前把JavaScript代码直接编译位机器码,而非字节码,让执行效率得到显著提高。最为重要的是,它支持属性可以在运行时动态添加到或从对象中删除,引擎会为运行中的对象创建一个属性字典,新的属性都要通过字典查找属性在内存中的位置。因此本发明采用它的.Net版动态库(Noesis.Javascript,dll),在脚本执行过程中,动态加入以"XLY"开头的对象,在"XLY"对象中注入Convet,Debug,File,PList,Sqlite,File对象,以方便用户更灵活方便的操作复杂数据结构。完成上述步骤,就可以编写下面的代码语句。[0036]//在输出窗口打印调试信息"HelloWorld"XLY.Debug.WriteLine("HelloWorld");//调用Sqlite数据恢复数据库数据vardbpath=XLY.Sqlite.DataRecovery(oldDbpath,chailb,tableList);//转换为C#中特定的枚举值accountTree.DataType=XLY.Convert.ToDataState(account.XLY_DataType);//把转换Linux系统下10位或13时间戳转换为Windows系统的时间格式。[0037]msg.Date=XLY.Convert.LinuxToDateTime(parselnt(msglnfo.Time));2.脚本解析a)首先使用C#语言把脚本中的配置信息以可扩展标记语言XML的方式读入,通过对配置文件的解析,把用户配置的插件信息转换为在C#中自定义的DataParseScript对象,其中包含该插件的名称,使用的数据结构,比如树结构,Π视图结构和JavaScript脚本代码。[0038]b)通过GoogleV8引擎,高效执行JavaScript脚本。这里约定JavaScript的执行结果为Array转换的Json字符串。[0039]c)通过开源动态库Newtonsoft.Json.dll把Json字符串转换为C#中可以使用的数组对象。[0040]d)最后,把配置中获取的DataParseScript对象和JavaScript执行得到的C#语言中数组对象(元素为:自定义的简单对象,动态对象,树节点),再组装为界面Π统一的数据契约对象(IDataSource)进行呈现。[0041]本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的实施方法,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。【权利要求】1.一种通过脚本插件技术提取智能手机App数据的方法,其特征在于,包括以下步骤:51:使用JavaScript编写脚本文档;52:将编写好的脚本文档存放在取证系统运行的特定目录Script下;53:将取证系统与手机连通,获取手机安装的所有应用及其版本,并把取证系统中的插件应用和手机安装的应用进行智能匹配;S4:将匹配成功的脚本插件进行数据提取、解析、分析,最后呈现到用户界面。2.根据权利要求1所述的方法,其特征在于,所述的脚本文档由两部分组成,分别是配置部分和JavaScript代码部分。3.根据权利要求2所述的方法,其特征在于,所述的配置部分包括应用名称、隶属于哪种应用类别、版本号、提取方式、使用的数据结构、使用的图标文件以及需要使用的数据文件。4.根据权利要求2或3所述的方法,其特征在于,所述的JavaScript代码部分加入GoogleV8脚本引擎中注入的用C#编写的XLY对象。5.根据权利要求4所述的方法,其特征在于,采用所述的GoogleV8的.Net版动态库Noesis.Javascript,dll,在脚本执行过程中,动态加入以XLY开头的对象。6.根据权利要求5所述的方法,其特征在于,在XLY对象中注入Convet,Debug,File,PList,Sqlite和File对象。7.根据权利要求1所述的方法,其特征在于,S4所述的具体方法如下:S41使用C#语言把脚本中的配置信息以可扩展标记语言XML的方式读入,通过对配置文件的解析,把用户配置的插件信息转换为在C#中自定义的DataParseScript对象,其中包含该插件的名称、使用的数据结构、用户界面视图结构和JavaScript脚本代码;542:通过GoogleV8引擎,高效执行JavaScript脚本,这里约定JavaScript的执行结果为Array转换的Json字符串;543:通过开源动态库Newtonsoft.Json.dll把Json字符串转换为C#中可以使用的数组对象;544:把配置中获取的DataParseScript对象和JavaScript执行得到的C#语言中数组对象组装为用户界面统一的数据契约对象进行呈现。8.根据权利要求1所述的插件控制器,其特征在于,包括设置在取证系统运行的特定目录Script下的脚本编辑模块;将取证系统中的插件应用和手机安装的应用进行智能匹配的匹配模块;将匹配成功的脚本插件进行数据提取、解析、分析,最后呈现到用户界面的解析模块。9.根据权利要求8所述的插件控制器,其特征在于,所述的脚本编辑模块包括配置单元和代码单元,所述的配置单元包括应用名称、隶属于哪种应用类别、版本号、提取方式、使用的数据结构、使用的图标文件以及需要使用的数据文件。10.根据权利要9所述的插件控制器,其特征在于,所述的代码单元包括GoogleVS脚本引擎中注入的用C#编写的XLY对象,其中XLY对象包括Convet,Debug,File,PList,Sqlite和File对象。【文档编号】G06F9/44GK104142830SQ201410389950【公开日】2014年11月12日申请日期:2014年8月11日优先权日:2014年8月11日【发明者】梁效宁申请人:四川效率源信息安全技术有限责任公司