一种基于数据碰撞的微信取证方法及系统与流程

文档序号:12490927阅读:243来源:国知局
一种基于数据碰撞的微信取证方法及系统与流程

本发明涉及数据加密解密技术领域,尤其涉及一种基于数据碰撞的微信取证方法及系统。



背景技术:

传统的手机取证分析系统,是通过对提取的微信本地文件解密,借助分析缓存文件的字段,获取微信用户UID,然后根据UID等进行变换获取解密密钥,从而实现解密。但是对于不知道用户UID或者同一部手机登录多个微信号时,无法获取分析到UID,或者无法识别本地文件对应哪一个微信用户UID,进而无法对微信数据进行分析取证。为了克服上述技术缺陷,需要建立用户本地数据与服务器数据库中用户数据信息的映射关系,从而方便完成解密操作以实现微信取证。



技术实现要素:

本发明所要解决的技术问题是针对上述现有技术的不足,提供一种基于数据碰撞的微信取证方法及系统。

本发明解决上述技术问题的技术方案如下:

依据本发明的一个方面,提供了一种基于数据碰撞的微信取证方法,包括如下步骤:

步骤1:创建碰撞数据库,对用户微信号码UID进行加密,并将加密后得到的第一加密字符串作为本地文件目录名存储在所述碰撞数据库中;

步骤2:在所述碰撞数据库中查询待取证本地文件目录名,并获取待取证本地文件目录名对应的用户微信号码UID;

步骤3:根据获取的用户微信号码UID生成AES解密秘钥,并通过所述AES解密秘钥对微信的加密文件进行解密,完成微信取证。

本发明的一种基于数据碰撞的微信取证方法,利用微信的本地数据和用户UID之间的关联,通过碰撞数据库完整建立用户本地数据和用户微信号码UID的映射关系,可以比较方便对微信的加密文件进行解密,实现微信取证,同时可以在多个微信账号同时登录时,准确获取每个用户微信号码UID,并进行针对性的解密,安全性极高。

依据本发明的另一个方面,提供了一种基于数据碰撞的微信取证系统,包括创建模块、加密模块、查询模块和解密模块。所述创建模块用于创建碰撞数据库;所述加密模块用于用户微信号码UID进行加密,并将加密后得到的第一加密字符串作为本地文件目录名存储在所述碰撞数据库中;所述查询模块用于在所述碰撞数据库中查询待取证本地文件目录名,并获取待取证本地文件目录名对应的用户微信号码UID;所述解密模块用于根据获取的用户微信号码UID生成AES解密秘钥,并通过所述AES解密秘钥对本地文件进行解密,完成微信取证。

本发明的一种基于数据碰撞的微信取证系统,通过所述加密模块可以对用户微信号码UID进行加密,并存储至碰撞数据库中,建立了用户本地数据与用户微信号码UID的映射关系,在查询模块中输入待取证本地文件目录名,即可通过所述解密模块对微信的加密文件进行解密,实现微信取证。

附图说明

图1为本发明的一种基于数据碰撞的微信取证方法流程示意图;

图2为本发明的一种基于数据碰撞的微信取证系统结构示意图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

实施例一、一种基于数据碰撞的微信取证方法。下面将结合图1对本实施例的一种基于数据碰撞的微信取证方法进行详细地介绍。

如图1所示,一种基于数据碰撞的微信取证方法,包括如下步骤:

步骤1:创建碰撞数据库,对用户微信号码UID进行加密,并将加密后得到的第一加密字符串作为本地文件目录名存储在所述碰撞数据库中;

步骤2:在所述碰撞数据库中查询待取证本地文件目录名,并获取待取证本地文件目录名对应的用户微信号码UID;

步骤3:根据获取的用户微信号码UID生成AES解密秘钥,并通过所述AES解密秘钥对微信的加密文件进行解密,完成微信取证。

本实施例中,所述步骤1中,对用户微信号码UID进行加密的具体实现为:将预设特征字符串与用户微信号码UID进行拼接形成第一字符串,并对所述第一字符串进行加密运算,得到第一加密字符串;其中,用户微信号码UID的位数不超过所述第一加密字符串的位数。通过上述方式可以对所述微信号码UID有效进行加密处理,并将加密得到的所述第一加密字符串作为本地文件目录名存储在所述碰撞数据库中,便于后续查找。

本发明中,所述特征字符串取微信中通用的特征字符串“mm”,可以便于识别,对所述第一字符串进行有效识别。

优选地,所述步骤1中,按照如下预设数据库表对所述第一字符串进行加密;

wxmd5(wxno varchar,md5char);

其中,wxno表示所述第一字符串,varchar表示所述第一字符串为固定长度的数据类型,md5为加密运算,char表示所述md5加密运算为可变长度的数据类型,wxmd5为对所述第一字符串进行md5加密运算后得到的第一加密字符串。

通过上述数据库表可以建立所述第一加密字符串与所述第一字符串之间的一一映射关系,即建立用户微信号码UID与本地文件目录名之间的映射关系,这样在后续查找时,可以通过待取证本地文件目录名比较方便的得到对应的用户微信号码UID,快速实现解密,同时提高数据的安全性。

优选地,创建所述碰撞数据库后,还对所述碰撞数据库划分,得到多个碰撞子数据库,并在生成所述第一加密字符串后将其存储至其中一个所述碰撞子数据库中。由于所述碰撞数据库的量非常大,按照11位数字的长度,每一位的值可以是0-9,和”-”字符,通过最终枚举,总的数据量在200亿条以上。这样在存储和检索时效率非常低下,相应速度极慢,通过对所述碰撞数据库划分,可以比较方便的将数据存储至不同的碰撞子数据库,这样在查找时非常方便。

优选地,根据所述加密运算对所述碰撞数据库划分的具体实现为:根据所述第一字符串的前n位将所述碰撞数据库划分为mn个碰撞子数据库,并根据所述第一加密字符串的前n位将其存储至对应的所述碰撞子数据库中;其中m表示所述第一字符串的进制数。通过上述方式可以根据第一字符串的数据量针对性的将所述碰撞数据库划分为数量与之相匹配的碰撞子数据库,并且通过所述第一字符串的前n位对所述碰撞数据库进行划分,可以在存储或检索时快速精准地找到对应的碰撞子数据库,相应速度极快。

优选地,所述第一字符串取16进制,取所述第一字符串的前2位将所述碰撞数据库划分为00-FF共256个碰撞子数据库,实际中可以达到毫秒级别的相应速度。

本实施例中,所述步骤2中,获取待取证本地文件目录名对应的用户微信号码UID的具体实现为:在所述碰撞数据库中查询待取证本地文件目录名,并对待取证本地文件目录名进行解密运算,获取用户微信号码UID;其中,所述解密运算与所述加密运算互为逆运算。通过上述方式可以在查找时根据待取证本地文件目录名直接快速的得到用户微信号码UID,便于后续根据用户微信号码UID实现对应用户微信的加密文件的解密,安全性好,并且解密运算与所述加密运算之间互为逆运算,不会出现错误,确保数据准确。

本实施例中,所述步骤3中生成解密秘钥的具体实现为:

步骤31:根据用户微信号码UID读取本地缓存文件中对应的用户IMEI值;

步骤32:调用AES解密秘钥函数,并根据所述用户微信号码UID和用户IMEI值生成AES解密秘钥;

步骤33:调用AES解密函数,并根据所述AES解密秘钥循环读取微信的加密文件,实现微信取证。

通过上述方式可以根据用户微信号码UID生成AES解密秘钥,并根据AES解密秘钥对应用户的微信加密文件进行解密,快速方便,并且安全性能极高,不容易破解。

具体地,本发明中所述AES解密秘钥函数采用openssl函数中的PKCS5_PBKDF2_HMAC_SHA1函数,所述AES解密函数采用AES_cbc_encrypt解密函数。

优选地,所述步骤32中,根据所述用户微信号码UID和用户IMEI值生成解密秘钥的具体实现为:

步骤321:将用户微信号码UID和对应的用户IMEI值进行拼接,形成第二字符串;

步骤322:将所述第二字符串进行所述加密运算,得到第二加密字符串;

步骤323:调用AES解密秘钥函数,并根据所述第二加密字符串生成对应的AES解密秘钥。

通过将所述用户微信号码UID和对应的用户IMEI值进行拼接,并对拼接后的第二字符串进行加密运算得到第二加密字符串,再通过AES解密秘钥函数得到AES解密秘钥,进一步提高加密的密级,增强数据的安全性。

本发明的一种基于数据碰撞的微信取证方法,利用微信的本地数据和用户UID之间的关联,通过碰撞数据库完整建立用户本地数据和用户微信号码UID的映射关系,可以比较方便对微信的加密文件进行解密,实现微信取证,同时可以在多个微信账号同时登录时,准确获取每个用户微信号码UID,并进行针对性的解密,安全性极高。

实施例二、一种基于数据碰撞的微信取证系统。下面将结合图2对本实施例的一种基于数据碰撞的微信取证系统进行详细地介绍。

如图2所示,一种基于数据碰撞的微信取证系统,包括创建模块、加密模块、查询模块和解密模块。所述创建模块用于创建碰撞数据库;所述加密模块用于用户微信号码UID进行加密,并将加密后得到的第一加密字符串作为本地文件目录名存储在所述碰撞数据库中;所述查询模块用于在所述碰撞数据库中查询待取证本地文件目录名,并获取待取证本地文件目录名对应的用户微信号码UID;所述解密模块用于根据获取的用户微信号码UID生成AES解密秘钥,并通过所述AES解密秘钥对本地文件进行解密,完成微信取证。

本实施例中,所述加密模块将预设特征字符串与用户微信号码UID进行拼接形成第一字符串,并对所述第一字符串进行加密运算,得到第一加密字符串;其中,用户微信号码UID的位数不超过所述第一加密字符串的位数。这样可以对所述微信号码UID有效进行加密处理,并将加密得到的所述第一加密字符串作为本地文件目录名存储在所述碰撞数据库中,便于后续查找。

优选地,所述加密模块按照如下预设数据库表对所述第一字符串进行加密;

wxmd5(wxno varchar,md5 char);

其中,wxno表示所述第一字符串,md5为加密运算,wxmd5为对所述第一字符串进行md5加密运算后得到的第一加密字符串。通过上述数据库表可以建立所述第一加密字符串与所述第一字符串之间的一一映射关系,即建立用户微信号码UID与本地文件目录名之间的映射关系,这样在后续查找时,可以通过待取证本地文件目录名比较方便的得到对应的用户微信号码UID,快速实现解密,同时提高数据的安全性。

优选地,所述创建模块创建所述碰撞数据库后,还对所述碰撞数据库划分,得到多个碰撞子数据库,并在生成所述第一加密字符串后将其存储至其中一个所述碰撞子数据库中。由于所述碰撞数据库的量非常大,按照11位数字的长度,每一位的值可以是0-9,和”-”字符,通过最终枚举,总的数据量在200亿条以上。这样在存储和检索时效率非常低下,相应速度极慢,通过对所述碰撞数据库划分,可以比较方便的将数据存储至不同的碰撞子数据库,这样在查找时非常方便。

优选地,所述创建模块根据所述加密运算对所述碰撞数据库划分的具体实现为:根据所述第一字符串的前n位将所述碰撞数据库划分为mn个碰撞子数据库,并根据所述第一加密字符串的前n位将其存储至对应的所述碰撞子数据库中;其中m表示所述第一字符串的进制数。这样可以根据第一字符串的数据量针对性的将所述碰撞数据库划分为数量与之相匹配的碰撞子数据库,并且通过所述第一字符串的前n位对所述碰撞数据库进行划分,可以在存储或检索时快速精准地找到对应的碰撞子数据库,相应速度极快。

本实施例中,所述查询模块在所述碰撞数据库中查询待取证本地文件目录名,并对待取证本地文件目录名进行解密运算,获取用户微信号码UID;其中,所述解密运算与所述加密运算互为逆运算。

本实施例中,所述解密模块根据用户微信号码UID读取本地缓存文件中对应的用户IMEI值;然后调用AES解密秘钥函数,并根据所述用户微信号码UID和用户IMEI值生成AES解密秘钥;最后调用AES解密函数,并根据所述AES解密秘钥循环读取微信的加密文件,实现微信取证。这样可以根据用户微信号码UID生成AES解密秘钥,并根据AES解密秘钥对应用户的微信加密文件进行解密,快速方便,并且安全性能极高,不容易破解。

优选地,所述解密模块将用户微信号码UID和对应的用户IMEI值进行拼接,并将得到的第二字符串进行加密运算得到第二加密字符串;再调用AES解密秘钥函数,并根据所述第二加密字符串生成对应的AES解密秘钥。通过将所述用户微信号码UID和对应的用户IMEI值进行拼接,并对拼接后的第二字符串进行加密运算得到第二加密字符串,再通过AES解密秘钥函数得到AES解密秘钥,进一步提高加密的密级,增强数据的安全性。

本发明的一种基于数据碰撞的微信取证系统,通过所述加密模块可以对用户微信号码UID进行加密,并存储至碰撞数据库中,建立了用户本地数据与用户微信号码UID的映射关系,在查询模块中输入待取证本地文件目录名,即可通过所述解密模块对微信的加密文件进行解密,实现微信取证。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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