提醒:本文最后更新于 74 天前,其中某些信息可能已经过时,请谨慎使用!
你似乎正在查看一篇很久远的文章。
为了你这样的访客,我特地保留了我的历史博文。不要笑话过去的我,用温柔的目光看下去吧。

电子取证之微信聊天记录提取

Windows

获取聊天记录数据库文件

一般在C:\Users\Administrator\Documents\WeChat Files\********\Msg

**********为微信id

MicroMsg.db就是聊天记录文件

从内存中读取密钥

打开OllyDBG然后打开微信,使用OllyDBG附加微信登录进程

在菜单中选择可执行模块

从中找到wechatwin模块

在插件中选择搜索ASCII

在中文字符串里面查找DBFactory::encryptDB

查找到后选择

双击进去,会定位到所在位置

向下查找TEST EDX,EDX,就是用来对比密码的汇编语言

双击设置断点,会被标红

然后运行,并登录微信,等待寄存器里edx的值不全为0

右键edx数据,选择数据窗口跟随

跟随后的数据前32位就是密钥

即56 5A 90 E8 03 90 49 AD B8 89 46 D3 A3 0B 1D 9F 80 0B A8 DB 66 5B 4F 5C 84 E5 41 D6 38 9E 59 D1

使用vs编译程序进行解密

读取数据

使用sqlcipher直接读取数据

Android

获取微信聊天记录数据库文件

数据库文件位于/data/data/com.tencent.mm/MicroMsg/一大串字母数字/EnMicroMsg.db (本文使用的工具为MT管理器2.0)

获取解密需要的IMEI和UIN

很多手机可以在拨号界面输入*#06#获取IMEI,双卡手机会有两个,只需要第一个。

UIN所在路径为/data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml

在文件里找到default_uin,后面的数字就是UIN

图中的1866607182就是uin,如果uin为负数,则需要加上4294967296

再进行下面的操作

获取密钥

将IMEI和UIN连在一起进行md5加密

取加密后的数据的前七位0364371,这就是数据库密钥。

读取数据

因为微信使用的是SQLite数据库,所以使用能读取此数据库的工具进行读取(本文使用的是windows端的sqlcipher)

解密出数据库文件

指定数据查询

select datetime(subStr(cast(m.createTime as text),1,10),'unixepoch', 'localtime') as theTime,case m.isSend when 0 then r.nickname when 1 then '我'end as person,m.content from message m inner join rcontact r on m.talker = r.username where m.type=1 and r.nickname = '对方微信昵称'

成功获取到聊天记录

成功查询到联系人

MAC OS

找到微信数据库文件

~/Library/Containers/com.tencent.xinWeChat/Data/Library/Application\ Support/com.tencent.xinWeChat/*/*/Message/*.db

从内存中读取密钥

打开Mac版微信

在终端下下输入 lldb -p $(pgrep WeChat) 进入 lldb 的子shell界面(LLDB是mac下的调试工具)

再输入br set -n sqlite3_key和c

此时登录微信,可能会卡死,但是不影响操作

然后在终端输入memory read --size 1 --format x --count 32 $rsi 获取密钥

处理多余文本

f0d402d2800e40e1

b43bb6a0853ed86c

e6351ce21a0447ce

a2f2e81cad1dc3c3

这个64位的字符串就是密钥

读取数据

因为微信使用的是sqlite数据库,这里我们使用 DB Browser for SQLite MAC版进行读取

选择SQLCipher 3 defaults 密码类型选择为raw key 在密码框输入0x后再输入之前的密钥共64位进行解密

成功获取到聊天记录

iOS

通过备份获取数据库文件

使用iTunes备份整机数据

在文件夹中查找备份文件

文件路径在隐藏文件下,所以先显示隐藏文件 Command + Shift + .

路径为

/Users/username/资源库/Application Support/MobileSync/Backup/

在文件夹里查找Manifest.db

Manifest.db里面记录了各个 app 备份文件的存放状况,但数据太多,这里用sql语句查询下

MM.sqlite就是微信的主要数据库

用fileID搜索文件

将文件复制出来,并把后缀改为db

读取数据

因为iOS微信数据库未加密,这里我们使用 DB Browser for SQLite MAC版直接读取

成功读到微信聊天记录

发表评论

共有 0 条看法