一种准确提取安卓微信朋友圈数据的方法与流程

文档序号:14748465发布日期:2018-06-22 06:22阅读:803来源:国知局

本发明涉及信息安全技术领域,特别涉及一种准确提取安卓微信朋友圈数据的方法。



背景技术:

由于微信应用用户的大量增加,手机微信应用中产生的用户数据成为手机数据取证的重点,微信应用中除了用户的联系人记录、聊天记录外,还包含了大量的用户日志信息,也就是微信中的朋友圈数据。微信朋友圈数据记录了用户和用户好友发布的心情、照片、视频等数据,在数据取证的过程中提取分析微信朋友圈中的数据显得尤为重要。但在安卓微信应用中朋友圈数据被存储在腾讯公司自己开发的一种数据结构中,要想准确获取必须对其进行解析。

综上所述,开发一种准确提取安卓微信朋友圈数据的方法显得尤为重要。



技术实现要素:

本发明针对现有技术的不足,提供了一种准确提取安卓微信朋友圈数据的方法,可以解决现有技术无法完成准确提取安卓微信朋友圈数据的问题。

为解决以上问题,本发明采用的技术方案如下:一种准确提取安卓微信朋友圈数据的方法,步骤如下:读取安卓微信朋友圈数据库,包括读取SnsMicroMsg.db数据库、读取SnsInfo数据表内容、获取日志的发送时间和获取发送日志用户名称;获取安卓微信朋友圈日志基本信息,包括递归微信用户数据文件夹路径和读取SnsMicroMsg.db数据库;获取安卓微信朋友圈日志内容获取日志编号,包括获取发送日志微信帐号的内部编号,获取日志内容数据、获取日志连接标题和获取日志连接地址。

作为优选,递归微信用户数据文件夹路径具体如下:安卓微信朋友圈数据库存放在安卓系统用户数据分区中/data/com.tencent.mm/MicroMsg目录中,每个微信帐号的数据存储在由一个32位字符组成的MD5编码字符名的文件夹下,通过递归MicriMsg目录下的32位字符组成的MD5编码字符名的文件夹判断手机中历史登录过的微信账号数量以及每个微信账号的数据存储路径。

作为优选,读取SnsMicroMsg.db数据库具体如下:通过SQLite库读取SnsMicroMsg.db文件数据,判断是否存在SnsInfo数据表;若不存在则获取失败,返回继续获取下一个微信帐号的朋友圈数据。

作为优选,获取日志编号具体如下:获取每行数据中的content字段取得日志内容数据块;判断数据块的偏移地址0x00,也就是第一个字节是否等于0x0A,若不等于0x0A,返回获取下一行SnsInfo数据;0x0A的下一个字节,偏移地址0x01开始记录的是日志编号的长度,此整数的类型为小端变长整形。

作为优选,获取发送日志微信帐号的内部编号具体如下:读取日志编号完成后,判断后一字节是否等于0x12,若不等于0x12,返回获取下一行SnsInfo数据;若等于0x12则获取0x12后面的变长整形大小及长度。

作为优选,获取日志内容数据具体如下:读取发送日志微信帐号的内部编号后,判断后3个字节偏移地址0x00-0x03是否等于0x18、0x00、0x20,以及偏移地址0x07是否等于0x20、偏移地址0x08是否等于2A,若不等于0x2A,返回获取下一行SnsInfo数据;若等于0x2A则获取0x2A后面的变长整形大小及长度。

作为优选,获取日志连接标题具体如下:读取日志内容数据后,判断后一个字符是否为0x32,若不等于0x32,返回获取下一行SnsInfo数据;若等于0x32则获取0x32后面的变长整形大小及长度;从0x32加上变长整形的长度再加上大小后,判断当前偏移地址是否等于0x42,同样的方法,从0x42加上变长整形的长度再加上大小后,判断当前偏移地址是否等于0x0A,同样的方法,从0x42加上变长整形的长度再加上大小后,判断当前偏移地址是否等于0x10,0x10后一偏移地址是否等于0x1A,上述方法若不相等,则返回获取下一行SnsInfo数据,若相等则获取0x1A后面的变长整形大小及长度。

作为优选,获取日志连接地址具体如下:读取日志连接标题后,断后一字节是否等于0x22,若不等于0x22,返回获取下一行SnsInfo数据;若等于0x22则获取0x22后面的变长整形大小及长度。

本发明的有益效果如下:本发明的方法可以准确提取安卓微信应用中的朋友圈历史数据记录,可用于数据取证分析。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚明白,以下参照实施例,对本发明做进一步详细说明。

一种准确提取安卓微信朋友圈数据的方法,步骤如下:

S1、读取安卓微信朋友圈数据库

(1)、安卓微信朋友圈数据库存放在安卓系统用户数据分区中/data/com.tencent.mm/MicroMsg目录中。每个微信帐号的数据存储在由一个32位字符组成的MD5编码字符名的文件夹下,通过递归MicriMsg目录下的32位字符组成的MD5编码字符名的文件夹可以判断手机中历史登录过的微信账号数量以及每个微信账号的数据存储路径。(2)、通过SQLite库读取SnsMicroMsg.db文件数据,判断是否存在SnsInfo数据表。若不存在则获取失败,返回继续获取下一个微信帐号的朋友圈数据。

S2、获取安卓微信朋友圈日志基本信息

(1)、按SQLite数据库行递归读取SnsInfo数据表中的数据。

(2)、获取每行数据中的createTime字段取得日志的发送时间

(3)、获取每行数据中的userName字段取得发送日志用户名称

S3、获取安卓微信朋友圈日志内容

(1)、获取每行数据中的content字段取得日志内容数据块。判断数据块的偏移地址0x00,也就是第一个字节是否等于0x0A,若不等于0x0A,返回获取下一行SnsInfo数据。

(2)、0x0A的下一个字节,偏移地址0x01开始记录的是日志编号的长度,此整数的类型为小端变长整形,例如偏移地址0x01等于0x14则日志编号数据的字节长度为20个字节,从偏移地址0x01加上变长整形的长度开始计算,这里变长整形的长度为0x01,所以开始偏移地址为0x02。

注:变长整形是用1到9个字节来表示的64位整数类型,因为数据存储长度,可根据数据的大小变化,从而达到节约存储空间的目的。变长整形前8个字节只使用低7位记录数据,高1位用于标识变长整形数据长度,若高1位等于1,则说明后一个字节也记录数据,若高1位等于0,则说明该字节为最后一个记录数据的字节,若变长整形的长度达到9个字节,则最后一个字节使用完整的8位记录数据。变长整形也有内存大小端的存储方式之分,同样分为低位在前和高位在前两种存储方式,即低位在前进位往后面的高位累加,高位在前,进位往前面的高位累加。

(3)、读取日志编号完成后,判断后一字节是否等于0x12,若不等于0x12,返回获取下一行SnsInfo数据。若等于0x12则获取0x12后面的变长整形大小及长度,例如这里变长整形的长度大小等于0x09,变长整形的长度也就是一个字节。发送日志微信帐号的内部编号字符的存储位置就是0x12加上变长整形的字节长度后的偏移地址,数据长度为9个字节。

(4)、读取发送日志微信帐号的内部编号后,判断后3个字节偏移地址0x00-0x03是否等于0x18、0x00、0x20,以及偏移地址0x07是否等于0x20、偏移地址0x08是否等于2A,若不等于0x2A,返回获取下一行SnsInfo数据。若等于0x2A则获取0x2A后面的变长整形大小及长度,例如这里变长整形的长度大小等于0x3F,变长整形的长度也就是一个字节。日志内容数据的存储位置就是0x3F加上变长整形的字节长度后的偏移地址,数据长度为63个字节。

(5)读取日志内容数据后,判断后一个字符是否为0x32,若不等于0x32,返回获取下一行SnsInfo数据。若等于0x32则获取0x32后面的变长整形大小及长度。从0x32加上变长整形的长度再加上大小后,判断当前偏移地址是否等于0x42,同样的方法,从0x42加上变长整形的长度再加上大小后,判断当前偏移地址是否等于0x0A,同样的方法,从0x42加上变长整形的长度再加上大小后,判断当前偏移地址是否等于0x10,0x10后一偏移地址是否等于0x1A,上述方法若不相等,则返回获取下一行SnsInfo数据,若相等则获取0x1A后面的变长整形大小及长度,例如这里变长整形的长度大小等于0x3F,变长整形的长度也就是一个字节。获取日志连接标题的存储位置就是0x3F加上变长整形的字节长度后的偏移地址,数据长度为63个字节。

(6)、读取日志连接标题后,断后一字节是否等于0x22,若不等于0x22,返回获取下一行SnsInfo数据。若等于0x22则获取0x22后面的变长整形大小及长度,例如这里变长整形的长度大小等于0x6B,变长整形的长度也就是一个字节。发送日志微信帐号的内部编号字符的存储位置就是0x22加上变长整形的字节长度后的偏移地址,数据长度为107个字节。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1