一种安卓系统QQ聊天记录解密方法与流程

文档序号:13422386阅读:4617来源:国知局

本发明涉及信息安全技术领域,特别涉及一种安卓系统qq聊天记录解密方法。



背景技术:

信息数据化时代通讯app是常用的社交工具,这些社交工具在长期的使用中存储着大量的用户信息,是数据取证的重点提取的数据;但由于其隐私安全的考虑,通常社交工具的数据都进行了加密存储,这给数据丢失取证造成了不小的麻烦。其中在大量的社交工具中,qq用户量超群,且安卓qq聊天记录数据库为加密存放。而目前还没有一种技术可以对qq加密数据进行解密。



技术实现要素:

本发明针对现有技术的缺陷,提供了一种安卓系统qq聊天记录解密方法,能有效的解决上述现有技术存在的问题。

一种安卓系统qq聊天记录解密方法,包括以下步骤:

s1:找安卓手机用户数据分区的“data”目录中的qq数据目录;在qq数据目录中找“shared_prefs”目录中的“appcenter_mobileinfo.xml”文件和“contact_bind_info“qq号”.xml”文件;若未找到这两个文件则查找“dengta_meta.xml”文件,执行s25;

s2:获取qq聊天数据解密密钥;其详细步骤如下:

s21:通过xml解析库打开“contact_bind_info“qq号”.xml”文件;

s22:查找该文件内是否存在标签<stringname="contact_bind_info_imei">,若存在标签则读取该标签的值,执行s24;若不存在则查找是否存在<stringname="contact_bind_info_unique">标签,执行s23;

s23:若存在<stringname="contact_bind_info_unique">标签,则读取该标签的值,执行s24;若不存在则执行s25;

s24:判断标签的值中是否存在字符“|”,若不存在则执行s25;若存在则执行s26

s25:获取“dengta_meta.xml”文件中<stringname="imei_dengta">标签的值作为密钥,结束;

s26:判断“|”字符的左右两边是否存在“null”字符;若不存在“null”字符或“|”字符左边存在“null”字符,则取“appcenter_mobileinfo.xml”文件中<stringname="imei">标签的值为密钥;若“|”字符右边存在“null”字符,则取“appcenter_mobileinfo.xml”文件中<stringname="wifi_mac_address">标签的值为密钥。

s3:递归遍历qq数据库中所有数据表的所有字段,若数据类型为text或者blob则读取数据;

s4:通过解密密钥对数据库中的数据进行解密,解密算法为异或;

若数据类型为text根据utf-8字符的编码标识对编码字符数据进行异或操作,每个密钥字节对应一个utf-8字符,到达密钥的最后一个字节后,又重密钥的第一个字节开始循环,异或完成后得到解密后的utf-8编码字符串;

若数据类型为blob,则每一个密钥字符顺序对其加密数据进行异或,到达密钥的最后一个字节后,又重密钥的第一个字节开始循环,异或完成后得到解密后的字节数据。

s5:每个字段的数据解密完成后通过sqlite库数据写入接口对其进行回写完成数据库解密。

与现有技术相比本发明的优点在于:通过qq数据库快速找到解密密钥,对安卓qq聊天记录进行解密,可完整恢复加密数据,帮助警方破案,减少受害人损失。

具体实施方式

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

一种安卓系统qq聊天记录解密方法,包括以下步骤:

s1:安卓qqapp聊天记录数据库存放在安卓手机用户数据分区中的“\data\com.tencent.mobileqq\”路径中,若安卓手机用户数据分区的“data”目录中存在“com.tencent.mobileqq”目录,则说明该安卓手机中可能存在qq聊天记录数据,否则该安卓手机中不存在qq聊天记录数据。

另外安卓国际版qq的目录为“com.tencent.mobileqqi”、安卓轻聊版qq的目录为“com.tencent.qqlite”、安卓企业版qq的目录为“com.tencent.eim”,不同的安卓qq版本应判断不同的数据目录。

获取qq聊天记录数据解密密钥主要用到qq数据目录的“shared_prefs”目录中的“appcenter_mobileinfo.xml”文件和“contact_bind_info“qq号”.xml”文件,其中“contact_bind_info“qq号”.xml”文件有多个,在手机中登录过的每一个qq号基本上会有对应的一个“contact_bind_info“qq号”.xml”文件。若未找到这两个文件则查找“dengta_meta.xml”文件。

s2:获取qq聊天数据解密密钥;其详细步骤如下:

s21:通过xml解析库打开任意一个“contact_bind_info“qq号”.xml”文件;

s22:查找该文件内是否存在标签<stringname="contact_bind_info_imei">,若存在标签则读取该标签的值,执行s24;若不存在则查找是否存在<stringname="contact_bind_info_unique">标签,执行s23;

s23:若存在<stringname="contact_bind_info_unique">标签,则读取该标签的值,执行s24;若不存在则执行s25;

s24:判断标签的值中是否存在字符“|”,若不存在则执行s25;若存在则执行s26

s25:获取“dengta_meta.xml”文件中<stringname="imei_dengta">标签的值作为密钥,结束;

s26:判断“|”字符的左右两边是否存在“null”字符;若不存在“null”字符或“|”字符左边存在“null”字符,则取“appcenter_mobileinfo.xml”文件中<stringname="imei">标签的值为密钥;若“|”字符右边存在“null”字符,则取“appcenter_mobileinfo.xml”文件中<stringname="wifi_mac_address">标签的值为密钥。

s3:qq数据库结构并未加密,而是存入数据库中的text类型数据和blob数据被加密。递归遍历qq数据库中所有数据表的所有字段,若数据类型为text或者blob则读取数据。

s4:通过解密密钥对数据库中的数据进行解密,解密算法为异或。

若数据类型为text根据utf-8字符的编码标识对编码字符数据进行异或操作,每个密钥字节对应一个utf-8字符(例如:3个字节的utf-8字符对其第二个字节低1位和密钥字节高1位进行异或,对其第三个字节低7位和密钥字节第7位进行异或,第一个字节不做异或;2个字节的utf-8字符对其第一个字节低1位和密钥字节高1位进行异或,对其第二个字节低7位和密钥字节第7位进行异或;1个字节的utf-8字符对其8位直接进行异或),到达密钥的最后一个字节后,又重密钥的第一个字节开始循环,异或完成后得到解密后的utf-8编码字符串;

若数据类型为blob,则每一个密钥字符顺序对其加密数据进行异或,到达密钥的最后一个字节后,又重密钥的第一个字节开始循环,异或完成后得到解密后的字节数据。

s5:每个字段的数据解密完成后通过sqlite库数据写入接口对其进行回写完成数据库解密。

本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的实施方法,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。

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