@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这张表。
该表有非常多的字段,我们并不需要全部分析,只需要几个字段即可。考虑到此表只有时间戳,在自定义聚合时难以处理,因为我们要加两个字段。首先右键表名点击设计表,添加上time、hour和lens三个字段,然后更新数据内容:
----将时间戳转化并截取为“仅限日期”,例如“2022-11-22、2022-11-23”
update message set time = SUBSTR(datetime(createTime/1000, 'unixepoch', 'localtime'),0,11);
----将时间戳转化并截取为“仅限时刻”,例如“23、24”
update message set hour = SUBSTR(datetime(createTime/1000, 'unixepoch', 'localtime'),11,3);
----仅在聊天内容为文本时,计算文本长度并储存
update message set lens = LENGTH(content) where type = 1;
为了便于操作,我们创建一个该表的视图(打开设计视图):
SELECT
message.msgId,
message.type, --聊天内容类型
message.isSend, --标识发送方,1表示自己,0表示对方
message.time, --聊天时间,精确到天
message.lens, --聊天内容长度
message.hour, --聊天时间,精确到小时
message.content --聊天内容
FROM
message
以上字段即我们需要用到的部分。关于消息的type,详细解释如下:
type值 | 表示内容 |
---|---|
1 | 文本内容 |
2 | 位置信息 |
3 | 图片及视频 |
34 | 语音消息 |
42 | 名片(公众号名片) |
43 | 图片及视频 |
47 | 表情包 |
48 | 定位信息 |
49 | 小程序链接 |
10000 | 撤回消息提醒(某某撤回了一条消息) |
1048625 | 照片 |
16777265 | 链接 |
285212721 | 文件 |
419430449 | 微信转账 |
436207665 | 微信红包 |
469762097 | 微信红包 |
11879048186 | 位置共享 |
--总体数量
select time,count(time) from mmp GROUP BY time ORDER BY time
--你(每日)发送消息的数量
select time,count(time) from mmp where isSend = 0 GROUP BY time ORDER BY time
--相减得我每日发送消息的数量
--柱状图为两人数量差
--整体篇幅
select time,sum(lens) from mmp where lens > 0 and GROUP BY time ORDER BY time
--你(每日)发送消息的长度
select time,sum(lens) from mmp where lens > 0 and isSend = 0 GROUP BY time ORDER BY time
--相减得我每日发送消息的长度
--柱状图为两人数量差
--总体时间分布后/count
select hour,count(hour) from mmp GROUP BY hour ORDER BY hour
--你回国之后/cn
select hour,count(hour) from mmp where time > '2022-12-19' GROUP BY hour ORDER BY hour
--相减即得回国之前/nl
--消息数量对比/谁说话多
--28号之前,我说过的话进行统计(仅限文本消息)
select content from mmp where isSend = 1 and type = 1 and time < '2022-11-28' ORDER BY time
--28号之后,你说过的话进行统计
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
该网站没有大小限制,也没有参数设置,只需要输入文本即可,不过这个工具的分词水平一般,可以借助其他工具再来使用这个词云生成工具。