(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 202010208090.9
(22)申请日 2020.03.23
(71)申请人 深圳软牛科技有限公司
地址 518101 广东省深圳市宝安区新安街
道海旺社区N23卓越时代广场C栋海天
路15-3号2903
(72)发明人 朱志强 李盛 
(74)专利代理机构 深圳市君胜知识产权代理事
务所(普通合伙) 44268
代理人 朱阳波
(51)Int.Cl.
H04W  12/02(2009.01)
H04W  12/06(2009.01)
H04L  29/08(2006.01)
H04L  29/06(2006.01)
(54)发明名称
一种WhatsApp的key文件提取方法及设备
(57)摘要
本发明所提供的一种WhatsApp的key文件提
取方法及设备,包括:模拟客户端向WhatsApp服
务器发送用于查询WhatsApp服务器是否已认证
该客户端的查询请求;若客户端接收到WhatsApp
服务器未认证该客户端的返回数据,则发送请求
认证码指令至WhatsApp服务器;利用接收到
WhatsApp服务器返回的认证码,将认证码和客户
端信息作为请求参数,发送至WhatsApp服务器进
行认证;客户端接收到WhatsApp服务器返回的认
证成功指令,根据预设协议获取与客户端对应的
key文件。本发明采用发送请求认证码的方式,提
取key文件,进而方便完成数据提取、数据恢复和
数据迁移,
节约了所用时间。权利要求书2页  说明书8页  附图3页CN 111405550 A 2020.07.10
C N  111405550
A
1.一种WhatsApp的key文件提取方法,其特征在于,包括:
模拟客户端向WhatsApp服务器发送用于查询WhatsApp服务器是否已认证该客户端的查询请求;
若客户端接收到WhatsApp服务器未认证该客户端的返回数据,则发送请求认证码指令至WhatsApp服务器;
利用接收到的WhatsApp服务器返回的认证码,将所述认证码和客户端信息作为请求参数,发送至WhatsApp服务器进行认证;
客户端接收到WhatsApp服务器返回的认证成功指令,根据预设协议获取与所述客户端对应的key文件。
2.根据权利要求1所述的WhatsApp的key文件提取方法,其特征在于,所述模拟客户端向WhatsApp服务
器发送用于查询WhatsApp服务器是否已认证该客户端的查询请求的步骤具体包括:
客户端接收用户输入的手机国家区号和手机号码,并构造请求数据,其中,构造的请求头包括WhatsApp版本号、客户端系统版本和客户端设备型号,所述请求数据包括客户端id、国家区号和手机号码;
根据所述请求数据向WhatsApp服务器发送用于查询WhatsApp服务器是否已认证该客户端的查询请求,其中,所述查询请求为HTTPS的GET请求。
3.根据权利要求1所述的WhatsApp的key文件提取方法,其特征在于,所述客户端向WhatsApp服务器发送用于查询WhatsApp服务器是否已认证该客户端的查询请求的步骤之后包括:
若客户端接收到WhatsApp服务器已认证该客户端的返回数据,则直接根据预设协议获取与所述客户端对应的key文件。
4.根据权利要求1所述的WhatsApp的key文件提取方法,其特征在于,所述若客户端接收到WhatsApp服务器未认证该客户端的返回数据,则发送请求认证码指令至WhatsApp服务器,具体包括:
当所述查询请求发送成功时,客户端接收到json格式的返回数据,并解析该返回数据;
若该返回数据中的信息为未认证,则接收用户选择认证方式的操作,客户端发送请求短信认证码指令或请求语音认证码指令至WhatsApp服务器;
若发送成功,则客户端接收到发送成功的返回数据,并显示下次再次获取认证码的等待时间;
所述等待时间进行倒计时,若等待超时,则倒计时结束,并等待用户再次发送请求短信认证码操作或请求语音认证码指操作。
5.根据权利要求4所述的WhatsApp的key文件提取方法,其特征在于,所述利用接收到WhatsApp服务器返回的认证码,将所述认证码和客户端信息作为请求参数,发送至WhatsApp服务器进行认证,具体包括:
所述客户端接收到WhatsApp服务器返回的短信认证码或语音认证码后,将国家区号、手机号码、客户端id、以及获取的认证码作为注册客户端的请求参数;
将所述请求参数发送至WhatsApp服务器,对客户端进行认证。
6.根据权利要求1或3所述的WhatsApp的key文件提取方法,其特征在于,所述根据预设
协议获取与所述客户端对应的key文件的步骤具体包括:
初始化协议框架,设置协议类型,以及初始化握手设置本地私钥key和远程公钥key;
连接WhatsApp服务器端口,域名为e1~e16.whatsapp中的任何一个节点,连接成功后,进行开始握手;
构造第一protobuf数据,所述第一protobuf数据包括国家区号、手机号,WhatsApp客户端版本号、系统版本、设备型号、客户端id和Guid值;
将第一protobuf数据通过第一协议加密后转为第一加密数据,并发送所述第一加密数据至WhatsApp服务器。
7.根据权利要求6所述的WhatsApp的key文件提取方法,其特征在于,所述将第一protobuf数据通过第一协议加密后转为第一加密数据,并发送所述第一加密数据至WhatsApp服务器的步骤之后还包括:
所述客户端接收到WhatsApp服务器发送的与第一加密数据相对应的第一数据后,更换为第二协议,重新开始握手,并解密接收到的第一数据,其中第一数据解密后为Chat Static Public Key;
通过第二协议对所述第一protobuf数据进行加密,将所述第一protobuf数据转为第二加密数据,并将第二加密数据发送至WhatsApp服务器;
当客户端接收到WhatsApp服务器发送的与第二加密数据相对应的第二数据后,构造第二protobuf数据,所述第二protobuf数据包括国家区号、手机号、账号盐值的sha256的Hash 值及服务器盐值;
通过第二协议对第二protobuf数据加密后转为第三加密数据发送至WhatsApp服务器,客户端接收到WhatsApp服务器发送的与所述第三加密数据对应的第三数据后,对第三数据进行解密,得到32个字节的key值;
根据所述key值生成对应账号的key文件,所述key文件包括固定文件头、key版本、服务器盐值、账号盐值、账号盐值对应Hash值、IV值、以及key值。
8.根据权利要求7所述的WhatsApp的key文件提取方法,其特征在于,所述根据预设协议获取与所述客户端对应的key文件的步骤之后还包括:
根据所述key值来加密或解密对应的WhatsApp数据库文件。
9.一种设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的WhatsApp的key文件提取程序,所述WhatsApp的key文件提取程序被所述处理器执行时实现如权利要求1-8任一项所述的WhatsApp的key文件提取方法的步骤。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序能够被执行以用于实
现如权利要求1-8任一项所述的WhatsApp的key文件提取方法。
一种WhatsApp的key文件提取方法及设备
技术领域
[0001]本发明涉及数字取证技术领域,尤其涉及的是一种WhatsApp的key文件提取方法及设备。
背景技术
[0002]WhatsApp目前是全球用户数最多的应用app,尤其是在国外,它有着广泛的用户体,WhatsApp非常注重隐私安全,它使用了端到端加密安全协议技术进行通信,黑客、取证机关很难通过窃听来截取解密数据。目前获取WhatsApp数据的方式基本是从设备app备份中或者云备份中获取。
[0003]iOS设备上WhatsApp的数据可以通过已经信任设备,进行调用iOS备份协议的手段将指定WhatsApp数据备份出来,此备份数据库未加密,可以直接解析出来数据,iOS上获取数据已经有了成熟的方案,而Android上WhatsApp提取解析数据更加复杂。
[0004]Android的WhatsApp有自动备份功能,可以备份数据到手机SD卡中,也可以备份到Google Drive上,但数据都是通过key文件加密的,key存放在Android系统不可访问位置,除非root Android设备之后
才能获取到对应key文件来进行解密,对于取证和用户来说都是不容易的。由于WhatsApp数据文件进行了加密,导致用户无法方便的完成数据提取。[0005]因此,现有技术存在缺陷,有待改进与发展。
发明内容
[0006]本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种WhatsApp的key文件提取方法及客户端,旨在解决现有的WhatsApp备份数据文件进行了加密,导致用户无法方便的完成数据提取的问题。
[0007]本发明解决技术问题所采用的技术方案如下:
[0008]一种WhatsApp的key文件提取方法,其中,包括:
[0009]模拟客户端向WhatsApp服务器发送用于查询WhatsApp服务器是否已认证该客户端的查询请求;
[0010]若客户端接收到WhatsApp服务器未认证该客户端的返回数据,则发送请求认证码指令至WhatsApp服务器;
[0011]利用接收到的WhatsApp服务器返回的认证码,将所述认证码和客户端信息作为请求参数,发送至WhatsApp服务器进行认证;
[0012]客户端接收到WhatsApp服务器返回的认证成功指令,根据预设协议获取与所述客户端对应的key文件。
[0013]所述模拟客户端向WhatsApp服务器发送用于查询WhatsApp服务器是否已认证该客户端的查询请求的步骤具体包括:
[0014]客户端接收用户输入的手机国家区号和手机号码,并构造请求数据,其中,构造的请求头包括WhatsApp版本号、客户端系统版本和客户端设备型号,所述请求数据包括客户
查成绩app
端id、国家区号和手机号码;
[0015]根据所述请求数据向WhatsApp服务器发送用于查询WhatsApp服务器是否已认证该客户端的查询请求,其中,所述查询请求为HTTPS的GET请求。
[0016]所述客户端向WhatsApp服务器发送用于查询WhatsApp服务器是否已认证该客户端的查询请求的步骤之后包括:
[0017]若客户端接收到WhatsApp服务器已认证该客户端的返回数据,则直接根据预设协议获取与所述客户端对应的key文件。
[0018]所述若客户端接收到WhatsApp服务器未认证该客户端的返回数据,则发送请求认证码指令至WhatsApp服务器,具体包括:
[0019]当所述查询请求发送成功时,客户端接收到json格式的返回数据,并解析该返回数据;
[0020]若该返回数据中的信息为未认证,则接收用户选择认证方式的操作,客户端发送请求短信认证码指令或请求语音认证码指令至WhatsApp服务器;
[0021]若发送成功,则客户端接收到发送成功的返回数据,并显示下次再次获取认证码的等待时间;
[0022]所述等待时间进行倒计时,若等待超时,则倒计时结束,并等待用户再次发送请求短信认证码操作或请求语音认证码操作。
[0023]所述利用接收到WhatsApp服务器返回的认证码,将所述认证码和客户端信息作为请求参数,发送至WhatsApp服务器进行认证,具体包括:
[0024]所述客户端接收到WhatsApp服务器返回的短信认证码或语音认证码后,将国家区号、手机号码、客户端id、以及获取的认证码作为注册客户端的请求参数;
[0025]将所述请求参数发送至WhatsApp服务器,对客户端进行认证。
[0026]所述根据预设协议获取与所述客户端对应的key文件的步骤具体包括:
[0027]初始化协议框架,设置协议类型,以及初始化握手设置本地私钥key和远程公钥key;
[0028]连接WhatsApp服务器端口,域名为e1~e16.whatsapp中的任何一个节点,连接成功后,进行开始握手;
[0029]构造第一protobuf数据,所述第一protobuf数据包括国家区号、手机号,WhatsApp 客户端版本号、系统版本、设备型号、客户端id和Guid值;
[0030]将第一protobuf数据通过第一协议加密后转为第一加密数据,并发送所述第一加密数据至WhatsApp服务器。
[0031]所述将第一protobuf数据通过第一协议加密后转为第一加密数据,并发送所述第一加密数据至WhatsApp服务器的步骤之后还包括:
[0032]所述客户端接收到WhatsApp服务器发送的与第一加密数据相对应的第一数据后,更换为第二协议,重新开始握手,并解密接收到的第一数据,其中第一数据解密后为Chat Static Public Key;
[0033]通过第二协议对所述第一protobuf数据进行加密,将所述第一protobuf数据转为第二加密数据,并将第二加密数据发送至WhatsApp服务器;
[0034]当客户端接收到WhatsApp服务器发送的与第二加密数据相对应的第二数据后,构