[关闭]
@EVA001 2024-03-03T12:35:06.000000Z 字数 2694 阅读 694

微信聊天记录分析

列表项


未分类


导出、解锁、查看微信的聊天数据记录

作案工具:Win11+夜神安卓模拟器
这里以win10电脑上的Android模拟器为例,简要说明一下操作步骤:

步骤一:打开安卓模拟器的root权限,并在模拟器中安装微信,注意安装完成后不用登陆。
步骤二:用你的手机微信选择“迁移聊天记录”,将需要分析的聊天内容选中并选择开始迁移,此时手机会弹出二维码等待新设备扫描。
步骤三:保持二维码页面截屏,并将此图片传送到电脑(邮件、QQ等任何方式),将其在电脑中打开备用。
步骤四:打开模拟器微信并登陆,点击微信的“扫一扫”,此时选择实时截取屏幕,将截取区域放在打开的二维码之上,此时二维码将被识别,模拟器微信开始接收聊天记录。
步骤五:完成迁移后,打开模拟器的文件管理,定位到“根目录/data/data/com.tencent.mm/MicroMsg”,该目录下有一个或多个名字是32位字符的文件夹,挨个打开直到在其中找到EnMicroMsg.db文件,该文件即聊天记录文件。
步骤六:将该文件复制到宿主机电脑(借助模拟器的共享目录)。
步骤七:打开该db文件,使用工具为sqlcipher,下载链接:https://pan.baidu.com/s/1Rg35hFES-gvE6bir0SPBJA?pwd=ooqe(提取码:ooqe),此时需要输入密码。
步骤八:构造密码(手机IMEI+微信UIN码),新手机IMEI码为固定值1234567890ABCDEF;微信的uin码获取方式需要到模拟器中的该文件查看:根目录/data/data/com.tencent.mm/shared_prefs/auth_info_key_prefs.xml,此文件中的auth_uin后跟的值就是微信uin码。拼接两者得到密码,输入密码框解锁。
步骤九:现在可以看到db内的表已经全部读取完毕,此处建议直接导出sql文件(全部导出),再用Naivcat重建该数据库,后续通过Navicat进行操作分析。
步骤十:使用sqlite3新建一个连接ConnectName,用Navicat打开、连接并且创建数据库DatabaseName,右键点击运行sql文件,等待导入完毕,表有很多,但我们的分析局限在message这张表。

开始分析message

该表有非常多的字段,我们并不需要全部分析,只需要几个字段即可。考虑到此表只有时间戳,在自定义聚合时难以处理,因为我们要加两个字段。首先右键表名点击设计表,添加上time、hour和lens三个字段,然后更新数据内容:

  1. ----将时间戳转化并截取为“仅限日期”,例如“2022-11-222022-11-23
  2. update message set time = SUBSTR(datetime(createTime/1000, 'unixepoch', 'localtime'),0,11);
  3. ----将时间戳转化并截取为“仅限时刻”,例如“2324
  4. update message set hour = SUBSTR(datetime(createTime/1000, 'unixepoch', 'localtime'),11,3);
  5. ----仅在聊天内容为文本时,计算文本长度并储存
  6. update message set lens = LENGTH(content) where type = 1;

为了便于操作,我们创建一个该表的视图(打开设计视图):

  1. SELECT
  2. message.msgId,
  3. message.type, --聊天内容类型
  4. message.isSend, --标识发送方,1表示自己,0表示对方
  5. message.time, --聊天时间,精确到天
  6. message.lens, --聊天内容长度
  7. message.hour, --聊天时间,精确到小时
  8. message.content --聊天内容
  9. FROM
  10. message

以上字段即我们需要用到的部分。关于消息的type,详细解释如下:

type值 表示内容
1 文本内容
2 位置信息
3 图片及视频
34 语音消息
42 名片(公众号名片)
43 图片及视频
47 表情包
48 定位信息
49 小程序链接
10000 撤回消息提醒(某某撤回了一条消息)
1048625 照片
16777265 链接
285212721 文件
419430449 微信转账
436207665 微信红包
469762097 微信红包
11879048186 位置共享

每日发消息的数量(聊天强度)

  1. --总体数量
  2. select time,count(time) from mmp GROUP BY time ORDER BY time
  3. --你(每日)发送消息的数量
  4. select time,count(time) from mmp where isSend = 0 GROUP BY time ORDER BY time
  5. --相减得我每日发送消息的数量
  6. --柱状图为两人数量差

每日发消息的字数(聊天篇幅)

  1. --整体篇幅
  2. select time,sum(lens) from mmp where lens > 0 and GROUP BY time ORDER BY time
  3. --你(每日)发送消息的长度
  4. select time,sum(lens) from mmp where lens > 0 and isSend = 0 GROUP BY time ORDER BY time
  5. --相减得我每日发送消息的长度
  6. --柱状图为两人数量差

发送时间统计(聊天时间分布)

  1. --总体时间分布后/count
  2. select hour,count(hour) from mmp GROUP BY hour ORDER BY hour
  3. --你回国之后/cn
  4. select hour,count(hour) from mmp where time > '2022-12-19' GROUP BY hour ORDER BY hour
  5. --相减即得回国之前/nl
  6. --消息数量对比/谁说话多

消息文本的词云(概括内容)

  1. --28号之前,我说过的话进行统计(仅限文本消息)
  2. select content from mmp where isSend = 1 and type = 1 and time < '2022-11-28' ORDER BY time
  3. --28号之后,你说过的话进行统计
  4. select content from mmp where isSend = 0 and type = 1 and time < '2022-11-28' ORDER BY time

1128前你说的话

1128后你说的话

1128前我说的话

1128后我说的话

词云使用该网站在线生成 https://www.amz123.com/tools-ciyun
该网站没有大小限制,也没有参数设置,只需要输入文本即可,不过这个工具的分词水平一般,可以借助其他工具再来使用这个词云生成工具。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注