微信聊天记录位置怎么查找(文件夹查微信聊天记录)

0 背景

1 PC 记录导出

1.1 数据库位置

1.2 获取密钥

1.3 解密

2 手机记录导出

2.1 备份记录到电脑

2.2 恢复记录到模拟器

2.3 获取数据库

2.4 获取密钥

2.5 解密

后话

0 背景

万门童某跑路了,把之前的交流群也解散了。一帮热心的伙伴试图根据之前的聊天记录,把群友们找回来。一开始大家是通过翻手机的方式,逐个寻找,找回了 150 多号人。但越到后来,翻记录就越是难找了。于是大家找到我,问能否把聊天记录导出,来协助快速核对。

1 PC 记录导出

注意:这一节操作在 Windows 平台进行。

1.1 数据库位置

微信聊天记录位置怎么查找(文件夹查微信聊天记录)数据库位置

聊天记录存储在multi目录下的MSG0.db:C:\Users\xxxxxx\Documents\WeChat Files\wxid_xxxxxxxxxx\Msg\Multi

聊天记录位置1.2 获取密钥

获取密钥1.3 解密

通过以下代码(crack_wechat_msg_pc.py)对数据库进行解密,需要修改对应的密钥:

#!/usr/bin/envpython3#-*-coding:utf-8-*-importhmacimportctypesimporthashlibfromCrypto.CipherimportAESdefdecrypt_msg(path,password):KEY_SIZE=32DEFAULT_ITER=64000DEFAULT_PAGESIZE=4096#4048数据 16IV 20HMAC 12SQLITE_FILE_HEADER=bytes(“SQLiteformat3″,encoding=”ASCII”) bytes(1)#SQLite文件头withopen(path,”rb”)asf:#TODO:优化,考虑超大文件blist=f.read()salt=blist[:16]#前16字节为盐key=hashlib.pbkdf2_hmac(“sha1”,password,salt,DEFAULT_ITER,KEY_SIZE)#获得Keypage1=blist[16:DEFAULT_PAGESIZE]#丢掉saltmac_salt=bytes([x^0x3aforxinsalt])mac_key=hashlib.pbkdf2_hmac(“sha1″,key,mac_salt,2,KEY_SIZE)hash_mac=hmac.new(mac_key,digestmod=”sha1”)hash_mac.update(page1[:-32])hash_mac.update(bytes(ctypes.c_int(1)))ifhash_mac.digest()!=page1[-32:-12]:raiseRuntimeError(“WrongPassword”)pages=[blist[i:i DEFAULT_PAGESIZE]foriinrange(DEFAULT_PAGESIZE,len(blist),DEFAULT_PAGESIZE)]pages.insert(0,page1)#把第一页补上withopen(f”{path}.dec.db”,”wb”)asf:f.write(SQLITE_FILE_HEADER)#写入文件头foriinpages:t=AES.new(key,AES.MODE_CBC,i[-48:-32])f.write(t.decrypt(i[:-48]))f.write(i[-48:])if__name__==”__main__”:path=”MSG0.db”key=bytes.fromhex(“刚才获取到的密钥”)decrypt_msg(path,key)

至此,我们已经获取了明文数据库,后续根据需求进一步处理,可以使用DB Browser for SQLite、DBeaver等工具查看。

2 手机记录导出

2.1 备份记录到电脑

聊天记录备份与恢复2.2 恢复记录到模拟器

一方面,大部分手机root后会失去保修;另一方面,root后可能会让手机处于城门大开状态,所以不会轻易root,于是就通过模拟器曲线救国。

2.2.1 安装模拟器

这里选择的是网易的MuMu模拟器[1],根据系统,下载安装即可。

2.2.2 基本设置

安装完成后,需要做一些基本设置。

??Mac 版

模拟器设置-Mac

??Windows 版

操作类似,打开 MuMu 模拟器右上角设置中心——基本设置——root权限,选择开启(如果没有该选项,则说明模拟器已默认开启root权限)。可参考《打开“共享文件夹”提示没有ROOT权限》[2]。

模拟器设置-Windows

共享文件可通过主界面下方的文件共享打开:

文件共享2.2.3 配置文件管理器

打开超级用户访问模式1

2.2.5 同步聊天记录

一切准备妥当,接下来可以把聊天记录恢复到模拟器(假手机)里了。

3. 等待恢复完成。….

2.3 获取数据库

经过步骤 2.2,加密的聊天记录已经同步到模拟器(假手机)里了。我们需要把加密记录拿出来:

2.选中加密的聊天记录数据库EnMicroMsg.db(打上前面的对勾)

4.再选择共享文件夹(Mac 下默认是$mumu共享文件夹)

获取加密数据库2.4 获取密钥

2.4.1 获取IMEI号

虽然说手机的IMEI号是唯一的,但模拟器的却不是。经验证,无论是 Mac 平台还是 Windows 平台,MuMu 模拟器的 IMEI 均为:1234567890ABCDEF。

2.4.2 获取uin

1.从根(/)目录一路往下走data,data,com.tencent.mm,shared_prefs

4.获取uin,双引号里面的即为uin(包括负号,如果有的话)

获取 uin2.4.3 生成密钥

把前面获取到的IMEI号和uin码(假设为:-123456789)放到下面的代码,即可获得密钥:9eeab65。

#!/usr/bin/envpython3#-*-coding:utf-8-*-importhashlibdefget_key(imei,uin):returnhashlib.md5(f”{imei}{uin}”.encode(“utf-8″)).digest().lower().hex()[:7]if__name__==”__main__”:imei=”1234567890ABCDEF”uin=”-123456789″key=get_key(imei,uin)print(key)

不想写代码,也可以通过在线工具[3]来解决:把IMEI号和uin码拼在一起,得到:1234567890ABCDEF-123456789,输入在线工具,即可获得密钥:9eeab65(取前 7 位)。

2.5 解密

有了密钥,就可以进行解密了。

2.5.1 代码解密

写不动了,参考 1.3 自己改吧。

2.5.2 SQLCIPHER 解密

??Windows

下载SQLCIPHER[4]并解压,打开SQLCIPHER:

2.输入密码

4.切换到浏览数据功能

5.选择消息表,然后就可以看到聊天记录了

6.选择File,Export,可以把聊天记录导出

解密数据库

??Mac

Mac 版下,用命令行会更方便些,打开终端(Terminal),输入命令安装sqlcipher:

brewinstallsqlcipher

什么?没有Homebrew?强烈建议使用,请参考:https://brew.sh/

安装好sqlcipher之后,就可以借助它来解密数据库了,把{数据库}替换成实际的数据库名(本例中为EnMicroMsg.db),{密码}替换成刚才获得的密钥:

sqlcipher{数据库}’PRAGMAkey=”{密码}”;PRAGMAcipher_page_size=1024;PRAGMAcipher_compatibility=1;ATTACHDATABASE”decrypted_database.db”ASdecrypted_databaseKEY””;SELECTsqlcipher_export(“decrypted_database”);DETACHDATABASEdecrypted_database;’#注意替换{数据库}和{密码},如:sqlcipherEnMicroMsg.db’PRAGMAkey=”9eeab65″;PRAGMAcipher_page_size=1024;PRAGMAcipher_compatibility=1;ATTACHDATABASE”decrypted_database.db”ASdecrypted_databaseKEY””;SELECTsqlcipher_export(“decrypted_database”);DETACHDATABASEdecrypted_database;’

解密完之后就得到了明文数据库decrypted_database.db,然后可以使用各种工具打开进行下一步操作。当然,也可以用代码直接把聊天记录导出:

conn=sqlite3.connect(“decrypted_database.db”)cur=conn.cursor()sql=”select*frommessage”cur.execute(sql)res=cur.fetchall()#所有的聊天记录都在res里了(如果记录超多,可能会OOM)

后话

虽然用了好多图,但感觉还是有地方表达不清楚,后续考虑录个视频。

引用链接

[1]MuMu模拟器:https://mumu.163.com/[2]《打开“共享文件夹”提示没有ROOT权限》:https://mumu.163.com/help/20210513/35047_947573.html[3]在线工具:http://emn178.github.io/online-tools/md5.html[4]SQLCIPHER:https://pan.baidu.com/s/1IhAipYUKNeu41N00jAIgzg?pwd=ya8z

发表评论

登录后才能评论