一种高效提取安卓系统日志缓冲区中基站信息的方法
技术领域
本发明涉及电子取证领域,特别涉及一种高效提取安卓系统日志缓冲区中基站信息的方法。
背景技术
目前对定位痕迹数据的提取主要是挖掘数据分区中应用所记录保存的定位痕迹信息,而对忽视系统本身所含有的日志信息中含有的基站信息的提取,必然会引起证据的缺失,使得证据的完整性被破坏,以下总结目前定位痕迹取证技术中包含的缺点。
1、缺失对系统日志缓冲区基站数据的提取会破坏电子取证的完整性;
2、对内置分区数据的提取,具有需要root权限的前置条件,这样对定位痕迹的提取便有了一定的制约性;
3、数据很有可能记录周边定位信息,数据的准确性需要严格校正,不能直接使用;
4、数据具有极大的易变性,极容易受到应用产生数据的接口的影响。
发明内容
本发明针对现有技术的不足,提供一种高效提取安卓系统日志缓冲区中基站信息的方法,能够有效解决缺失对系统日志缓冲区基站数据的提取破坏电子取证完整性的问题。
为解决以上问题,本发明采用的技术方案如下:一种高效提取安卓系统日志缓冲区中基站信息的方法,包括如下步骤:
S1获取系统日志缓冲区数据文件;S2解析文件,获取其中基站信息;S3逆解析基站信息;S4数据展示。
作为优选,S1具体如下:
1.1执行bugreport指令获取日志信息,获取的日志信息包含安卓启动过程的log,以及启动后的系统状态,包括进程列表、内存信息和VM信息;
1.2判断目标文件是否输出,若是则执行S2,若否则执行1.3;
1.3执行logcat指令获取日志信息,对获取的日志指定缓冲区,并且指定日志信息的输出格式;
1.4指定输出日志的循环缓冲区,指定radio射频缓冲区;
1.5指定输出日志的输出格式,输出的日志格式应当包含基本的数据格式,至少应当包含基站数据产生时间,完整的基站数据日志;
1.6判断目标文件是否输出,若是则执行S2,若否则执行1.7;
1.7目标文件获取失败,结束安卓系统日志缓冲区基站数据解析。
作为优选,S2具体如下:
2.1网络类型获取
2.1.1执行系统API获取网络类型,并记录网络类型为N;
2.1.2根据网络类型关键字key,在文件中检索网络类型,若获取网络类型成功,则将N赋值为新的网络类型,并执行2.2,若否则执行2.1.3;
2.1.3网络类型获取失败,结束安卓系统日志缓冲区基站数据解析,执行2.6;
2.2定位基站数据位置
2.2.1启动标记R,R起始值为0,代表文件开始。
2.2.2按行读取系统日志文件,根据基站数据关键词key2,匹配读取行的内容,若匹配成功,将该行的偏移数值赋值给标记R,并执行2.3操作,否则执行2.2.3操作;
2.2.3获取系统日志文件总共的行数,与R2作等值比较,若等值执行2.2.4操作,否则执行2.2.2操作。
2.2.4定位失败,结束安卓系统日志缓冲区基站数据解析,执行2.6;
2.3获取基站数据字符串
根据定位到的行,用特殊标志flag1,截取字符串数据,记录数据为D1,判断D1是否为空字符串,若是则执行2.2操作,否者执行2.4操作;
2.4基站数据存储格式分析
2.4.1基站类型
2.4.1.1电信基站,包含属性BID、SID、NID,其中,BID基站编号;SID系统识别码,每个地级市只有唯一一个码;NID网络识别码,由各本地网管理,可以有多个;
2.4.1.2移动、联通基站,包含属性MNC、LAC、CID,其中,MNC网络类型识别码,1、5、7代表移动,0、2、4、6代表联通,3代表是电信;LAC位置区域码;CID基站编号;
2.4.2基站在D1中的存储格式
2.4.2.1电信基站偏移5,类型BID;偏移9,类型SID;偏移10,类型NID;
2.4.2.2移动、联通基站偏移2,类型LAC;偏移3,类型CID;偏移4,类型MNC;
2.4.3获取基站数据
2.4.3.1根据已经判定的网络类型,执行基站格式解析;
2.4.3.2根据各字段在D1中的偏移,执行基站数据获取;
2.4.3.3判断各字段是否获取到数值,即判断是否为空字符串,若是执行2.4.3.4,若否执行2.5;
2.4.3.4判断各字段的数值是否在标准范围之间,若是执行2.4.3.5,若否执行2.5;
2.4.3.5保存基站数据,并标注基站类型;
2.5重复执行2.2操作,循环解析基站数据;
2.6基站数据获取解析,返回结果集DS1。
作为优选,S3具体如下:
3.1判断DS1结果集是否为空或者数据长度为0,若是执行3.6,否则表示DS1结果集中包含有效数据,执行3.2;
3.2访问网络,判断网络是否联通,若是执行3.3,若否执行3.6;
3.3执行基站地址逆向解析,获取实际地址;
3.4判断实际地址是否获取成功,即返回的经纬度是否定位到一个真实的地理位置,若成功执行3.5,若不成功,执行3.1;
3.5存储返回数据,执行3.1操作;
3.6结束基站数据逆向解析,并返回结果集DS2。
作为优选,S4具体如下:判断DS2结果集是否为空或长度为0,若是提示安卓缓存日志中不包含基站数据,若否则展示DS2中包含的基站数据。
本发明的方法可以达到以下效果:
1、系统日志的获取不需Root,任意手机均可提取;2、提取的系统日志中的基站数据是智能手机与最近基站的交互数据,具有极高的准确性。3、系统日志中的基站数据存储格式统一,只受系统框架的更改而影响,具有通用性。4、扩展了智能手机定位痕迹的取证方式,使得取证结果更加的全面、完整和有效。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照实施例,对本发明做进一步详细说明。
一种高效提取安卓系统日志缓冲区中基站信息的方法,包括以下步骤:
S1:获取系统日志缓冲区数据文件;S2:解析文件,获取其中基站信息;S3:逆解析基站信息;S4:数据展示。
进一步地,S1具体如下:
安卓系统拥有高效完整的日志管理功能,在运行的过程中,系统会将手机中各种动作信息记录下来,并通过分类向各自不同的日志缓冲区不断的写入这些记录。
1.1日志类型介绍
安卓系统日志主要包含main、radio、events等日志类型,它们以循环缓冲区的形式不断记录系统日志。
1.1.1main类型日志:默认缓冲区,主要记录应用程序打印输出的日志。
1.1.2radio类型日志:主要包含射频相关的日志,主要包含SIM卡信息,STK信息,无线,通话等信息。
1.1.3events类型日志:主要记录系统事件相关的信息,比如说触屏事件。
1.2日志获取
安卓系统日志缓冲区数据主要是通过执行linux指令获取。
1.2.1执行bugreport指令获取日志信息
获取的日志信息包含安卓启动过程的log,以及启动后的系统状态,包括进程列表,内存信息,VM信息等等。
1.2.2判断目标文件是否输出,若是则执行步骤2,若否则执行1.2.3。
1.2.3执行logcat指令获取日志信息
获取的日志需要自己指定缓冲区,否者只会获取默认的main缓冲区信息,并且需要指定日志信息的输出格式。
1.2.4指定输出日志的循环缓冲区,这里指定radio射频缓冲区。
1.2.5指定输出日志的输出格式,这里输出的日志格式应当包含基本的数据格式,至少应当包含基站数据产生时间,完整的基站数据日志。
1.2.6判断目标文件是否输出,若是则执行步骤2,若否则执行1.2.7。
1.2.7目标文件获取失败,结束安卓系统日志缓冲区基站数据解析。
进一步地,S2具体如下:
2.1网络类型获取
不同类型的网络类型,会有不同的基站数据格式,所以在获取基站信息之前,必须要获取网络类型信息。
2.1.1执行系统API获取网络类型,并记录网络类型为N。
2.1.2根据网络类型关键字key,在文件中检索网络类型,若获取网络类型成功,则将N赋值为新的网络类型,并执行2.2,若否则执行2.1.3。
2.1.3网络类型获取失败,结束安卓系统日志缓冲区基站数据解析,执行2.6。
2.2定位基站数据位置
2.2.1启动标记R,R起始值为0,代表文件开始。
2.2.2按行读取系统日志文件,根据基站数据关键词key2,匹配读取行的内容,若匹配成功,将该行的偏移数值赋值给标记R,并执行2.3操作,否则执行2.2.3操作;
2.2.3获取系统日志文件总共的行数,与R2作等值比较,若等值执行2.2.4操作,否则执行2.2.2操作。
2.2.4定位失败,结束安卓系统日志缓冲区基站数据解析,执行2.6;
2.3获取基站数据字符串
根据定位到的行,用特殊标志flag1,截取字符串数据,记录数据为D1,判断D1是否为空字符串,若是则执行2.2操作,否者执行2.4操作;2.4基站数据存储格式分析
2.4.1基站类型
由于运营商的不同,基站数据存储格式会有一定的变化,这里以国内的基站为列,国内基站分为三种,移动,联通,电信。其中移动、联通格式一致,而电信则不同。
2.4.1.1电信基站
包含属性BID、SID、NID。
2.4.1.1.1BID基站编号
2.4.1.1.2SID系统识别码,每个地级市只有唯一一个码。
2.4.1.1.3NID网络识别码,由各本地网管理,可以有多个。
2.4.1.2移动、联通基站
包含属性MNC、LAC、CID。
2.4.1.2.1MNC网络类型识别码
1、5、7代表移动,0、2、4、6代表联通,3代表是电信。
2.4.1.2.2LAC位置区域码
2.4.1.2.3CID基站编号
2.4.2基站在D1中的存储格式
2.4.2.1电信基站
2.4.2.2移动、联通基站
2.4.3获取基站数据
2.4.3.1根据已经判定的网络类型,执行基站格式解析。
2.4.3.2根据各字段在D1中的偏移,执行基站数据获取。
2.4.3.3判断各字段是否获取到数值,若是执行2.4.3.4,若否执行2.5。
2.4.3.4判断各字段的数值是否在标准范围之间,若是执行2.4.3.5,若否执行2.5;
基于各网络模式下取值与标志不同,以下以国际通用标志为具体示例。
2.4.3.4.1MCC的标准范围000-999
2.4.3.4.2MNC的标准范围00-99
2.4.3.5保存基站数据,并标注基站类型;
2.5重复执行2.2操作,循环解析基站数据;
2.6基站数据获取解析,返回结果集DS1。
进一步地,S3具体如下:
3.1判断DS1结果集是否为空或者数据长度为0,若是执行3.6,否则表示DS1结果集中包含有效数据,执行3.2。
3.2访问网络,判断网络是否联通,若是执行3.3,若否执行3.6。
3.3执行基站地址逆向解析,获取实际地址。
3.4判断实际地址是否获取成功,若成功执行3.5,若不成功,执行3.1。
3.5存储返回数据,执行3.1操作。
3.6结束基站数据逆向解析,并返回结果集DS2。
进一步地,S4具体如下:
判断DS2结果集是否为空或长度为0,若是提示安卓缓存日志中不包含基站数据,若否则展示DS2中包含的基站数据。。