利用python分析微信聊天记录

2023-05-16

文章目录

  • 前言
  • 一、任务分析
  • 二、工具
  • 三、步骤
    • 1.数据获取
      • 获取DB
      • 计算密码
      • 导出数据库
    • 2. 数据清洗(具体方法以后补充)
    • 3. 数据分析


前言

昨天跟女朋友讨论谁给对方发的消息比较多,两人各执一词,事实证明是我输了^


一、任务分析

统计微信聊天记录分为三步——数据获取、数据清洗和数据分析。下面大致说一下各部分需要做什么。

三步中最难的就是数据获取。与QQ不同,微信并不提供导出聊天记录的工具,所以得去自己获取。微信将聊天记录存在一个名为 EnMicroMsg.db 的数据库里,很不幸是这个数据库是加密的,但幸运的是它的密码是可以计算出来的!因此我们首先需要获取这个db文件,再对它进行解密和导出,这样数据获取部分就大功告成啦!(是不是听起来很简单哈哈哈)
后面两步就比较简单了,无非就是筛一下记录,再用python分析。

二、工具

BlueStack蓝叠
SQLCipher
Python

三、步骤

1.数据获取

由前面的分析可知,我们需要获取 EnMicroMsg.db 这个数据库文件和它的密码,如果手机没有Root过的话,需要借助模拟器,我在这里用的是BlueStack。

获取DB

- 将手机上的聊天记录备份到PC

pc端微信左下角的三条杠->备份与恢复->备份聊天记录至电脑
按照提示备份即可

- 将刚备份的聊天记录恢复至模拟器

在模拟器上安装微信,并在PC上依此点击左下角的三条杠->备份与恢复->恢复聊天记录至手机。
依然按照提示恢复,这样我们就将原手机上的聊天记录迁移到了模拟器上。

-获取数据库文件

a. 首先获取模拟器的root权限

右上角向下的箭头 -> 设置 -> 引擎设置,勾选获取root权限

在这里插入图片描述
勾选

b.找到数据库文件存放的路径

在这里插入图片描述
在这个路径下有两个数字和字母命名的文件夹,其中有一个就存放着我们需要的 EnMicroMsg.db
在这里插入图片描述
在这里插入图片描述
鼠标长按,点击右上角复制图标,即可复制
在这里插入图片描述
c.将数据库复制到PC
在这里插入图片描述

蓝叠上也可以更改pc上的文件夹,因此直接将数据库文件复制到以上路径中。因为我是复制到了Document这个文件夹中,对应我电脑上的文档,打开就可以看到我们的数据库文件啦!
在这里插入图片描述

计算密码

根据前面的分析,我们现在还需要计算出数据库的密码,而这个密码是将机器的IMEI和auth_uin经过md5加密而来的。

a.获取IMEI
在蓝叠上下载一个小工具
在这里插入图片描述
打开后,点击分析器,再点击我的IMEI,就会将IMEI自动填充到输入框里,我们将它记录下来。
在这里插入图片描述
b.获取auth_uin
在这里插入图片描述

打开路径如上,在上面的文件夹中,好多文件里都会有auth_uin,比如上面指出来的那个文件中就有,把它记录下来。
在这里插入图片描述
c.计算密码

这样,我们就获取了计算密码的两大法器——IMEI和auth_id,我们利用MD5在线加密工具,将IMEI和auth_id输到左侧方框,中间不要有字符,加密方式选择32位小。
在这里插入图片描述
加密出来的前7位就是这个数据库的密码了,大功告成!

导出数据库

使用SQLCipher导出数据库,我在网上找了好久都不靠谱,之后会上传一个可以用的(也可以自己找)。
打开 EnMicroMsg.db ,会提示我们输入密码,将刚刚获取到的密码输入,就可以解开啦
在这里插入图片描述
在这里插入图片描述
找到message数据库并导出
在这里插入图片描述
在这里插入图片描述
这样就得到了全部的数据!
在这里插入图片描述

2. 数据清洗(具体方法以后补充)

1.要将时间戳转换为北京时间
2.处理图片和链接等非文字聊天记录

3. 数据分析

目前仅统计了两人的消息数量和做了一个简单的词云:
消息数量(啊,是我输了呜呜):
在这里插入图片描述

词云:
在这里插入图片描述

代码:

from os import path
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud, STOPWORDS

# 当前文件路径
d = path.dirname('__file__')
# Read the whole text
file = open(path.join(d, 'message.txt'), encoding='utf-8').read()
# 进行分词
punc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ<>0123456789\/"
temp = []
for c in file:
    if c not in punc:
        temp.append(c)
newText = ''.join(temp)

default_mode =jieba.cut(newText)
text = " ".join(default_mode)
alice_mask = np.array(Image.open(path.join(d, "2.jpg")))
stopwords = set(STOPWORDS)
stopwords.add("said")
wc = WordCloud(  
    #设置字体,不指定就会出现乱码,这个字体文件需要下载
    font_path=r'D:\study\tools\WenQuanWeiMiHei\WenQuanWeiMiHei-1.ttf',  
    background_color="white",   
    max_words=200,   
    mask=alice_mask,  
    stopwords=stopwords)  
# generate word cloud
wc.generate(text)

# store to file
wc.to_file(path.join(d, "qq_result.jpg"))

# show
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.figure()
plt.imshow(alice_mask, cmap=plt.cm.gray, interpolation='bilinear')
plt.axis("off")
plt.show()

参考教程: https://www.jianshu.com/p/3065087ea1b0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用python分析微信聊天记录 的相关文章

  • ftp服务器的搭建

    Windows中自带了ftp的服务 xff0c 只需要配置即可搭建 xff0c 同时支持用户创建及访问控制 此外 xff0c 还有专门的工具可以简便操作 xff0c 也更丰富的手段 目前用的比较多的两款工具是FileZilla和Serv U
  • Git客户端的安装

    1 概述 Git有自带的命名行客户端 xff0c 也有自己的图形化客户端 xff0c 这个就是git exe 此外还有TortoiseGit 在这之上又封装了一层 xff0c 使我们用起来更加的方便 xff0c 这个跟TortoiseSVN
  • Git的使用

    正在学习中 xff0c 搜集了好几个比较好的 暂时记录下 xff0c 后续整理 1 Git使用 官方文档 xff1a https git scm com doc 其中包含了帮助 书籍和视频教程 网上传的比较多的就是廖雪峰的介绍 xff0c
  • 【禅道】如何登陆后直接跳到用户登入界面

    1 问题描述 本人用的开源的禅道xampp xff0c 在windows下部署了服务器 xff0c 部署方法参见我的另一个介绍 xff1a https blog csdn net kevinshift article details 120
  • Windows11右键菜单改回经典模式

    window11的右键菜单设计感觉有点反人类 xff0c 网友也想了破解之道 xff1a 改注册表或者使用网友的小工具 其中小工具这里下载 https www sordum org 14479 windows 11 classic cont
  • [python]启动两个spyder工程

    spyder中一次只能开一个工程 xff0c 为了能够开两个 xff0c 进行同时的编辑和运行 xff0c 则默认是不行的 xff0c 是无法同时打开两个spyder的进程的 方法是启动spyder时加上运行参数 xff1a new ins
  • Git按照目录分权限问题

    1 xff09 Git不能像SVN那样 xff0c 在一个库中 xff0c 按照目录为单位进行权限的设置 也不允许对整个库设置为读权限 xff0c 只对某个目录设置为写权限 哎 xff0c 有些失望 xff01 但人家说这是与Git分布式控
  • python

    问题1 xff1a TypeError module takes at most 2 arguments 3 given https www cnblogs com kevin hou1991 p 14806598 html
  • PID控制

    目录 1 基本情况1 1 位置式PID1 2 增量式PID1 3 PID控制适用系统 2 PID三个量的含义解析2 1 P xff1a 比例2 2 I xff1a 积分2 3 D xff1a 微分2 4 PID xff1a 三者的关系 3
  • VSCode Python运行环境配置

    背景 创建了一个python的虚拟运行环境 xff0c 比如说tensoflow xff0c 想在VS Code下运行调试 步骤 参考说明 xff1a https blog 51cto com u 15127658 2783413 xff0
  • Tomcat中文乱码解决方案【亲测有效】

    场景一 xff1a SpringBoot项目 xff0c 在IDEA中启动 xff0c 访问接口 xff0c 无乱码 场景二 xff1a SpringBoot项目 xff0c 打成war包 xff0c 发到本地tomcat下 xff0c 启
  • 【Python】How to center an image in canvas Python Tkinter

    https www tutorialspoint com how to center an image in canvas python tkinter https www tutorialspoint com how to insert
  • [python]使用pyinstaller打包带界面的Pytorch程序的多个问题

    1 opencv兼容性问题 1 1 现象 打包为一个exe完成后 xff0c 在执行exe时 xff0c 报错 xff1a ImportError ERROR recursion is detected during loading of
  • VS2019下载与安装

    下载 xff0c 这里有一个说明 xff0c 下载说明 不再赘述 补充一下 xff0c 上面的地址中 xff0c 是VS2022的 xff0c 应该放的最新的 老的版本在这里下载 xff1a https visualstudio micro
  • Ubuntu下QtCreator的C++工程调用python

    目录 1 概述1 1 参考1 2 库引用1 3 初始与善后 2 函数调用3 类调用4 参数传递4 1 传递数值类型4 2 传递字符串4 3 传递bool4 4传递图片 5 解析放回的参数5 1 调用方法5 2 数值解析5 3 字符串解析5
  • Ubuntu的QTCreator中c++调用opencv方法

    注意 xff1a 这里用的是opencv 4 0以上版本 如果是4 0下的版本 xff0c 配置不同 xff0c 4 0在这个头文件之类的有变化 QTCreator下创建工程 xff0c 在工程文件 pro中增加配置 xff1a span
  • Ubuntu Qtcreator c++调用python报错

    调用时候 xff0c 报错 xff1a modpython 13107 Gtk ERROR 20 32 18 627 GTK 43 2 x symbols detected Using GTK 43 2 x and GTK 43 3 in
  • [Ubuntu, Ajax Nx]C++调用python报from import错误

    1 现象描述 c 43 43 调用python程序 调用的main函数 xff0c 该main函数中有如下代码 xff1a span class token keyword from span matching span class tok
  • Linux下c++串口编程

    1 NX串口管理 参见https blog csdn net weixin 42447868 article details 109051005 spm 61 1001 2014 3001 5506 2 串口权限管理 2 1 串口权限 xf
  • Jetson Nx 串口接收数据丢失首字节问题

    1 问题描述 I write a uart program using c 43 43 on Jetson Nx Jetpack 4 6 1 Ubuntu version 18 04 LTS to communicate with a PC

随机推荐

  • Linux下的一些基础功能

    1 关于命令行输出到文件 xff1a https www iplayio cn post 6296803 2 kz 64 JetsonNx ls l dev ttyS dev ttyUSB dev ttyTHS dev ttyCUDA ls
  • SpringBoot ☞ logback日志配置【屏蔽第三包中日志输出】

    一 项目配置文件如下 二 场景 项目启动时 xff0c 控制台无缘无故输出很多error级别的日志 xff0c 让人看着很不舒服 xff0c 断点调试 43 跟踪 xff0c 发现原来是第三方jar包里设置了日志输出 xff0c 如下 xf
  • 通过Xshell操作Jetson Nx

    1 Jetson Nx Nx留有Uart2 口 xff0c 便于使用xshell等进行操作 串口有三根线 链接后使用 2 XShell 软件 2 1 XShell软件介绍 XShell 软件是一个Windows上运行的终端模拟器 xff0c
  • Nx C++程序使用spdlog库进行日志存储

    1 spdlog简介 spdlog是一个开源的日志库 xff0c 在github上有 代码见这里 xff0c 文档这里 C 43 43 语言的 xff0c 支持Linux windows等系统 csdn上也有许多介绍 xff0c 这里列举两
  • C++下的Boost库

    1 介绍 xff08 引子网络 xff09 Boost库是为C 43 43 语言标准库提供扩展的一些C 43 43 程序库的总称 xff0c 由Boost社区组织开发 维护 Boost库可以与C 43 43 标准库完美共同工作 xff0c
  • Opencv之边界跟踪

    问题描述 一般是将二值化后的图像进行边界的提取 需要说明的是这个提取不是简单的找到边界 xff0c 而是按照顺序的找出来 即边界上的点是按照邻接关系依次给出 相关算法 xff08 1 xff09 这里解释 xff1a https blog
  • OpenCV之滤波

    图像滤波 xff0c 指在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制 xff0c 是图像预处理中不可缺少的操作 xff0c 其处理效果的好坏将直接影响后续图像处理和分析的准确性 这里有个概述 xff0c 很好的 xff1a Ope
  • C++文件读写

    这个不错 xff1a C 43 43 文件读写详解 xff08 ofstream ifstream fstream xff09 C 43 43 文件读写详解 xff08 ofstream ifstream fstream xff09 c 4
  • python及其工具

    目录 1 conda xff1a 包管理器2 Anoconda xff1a 开源的包 环境管理器3 labelme4 tensorflow5 cuda和cudnn6 使用yml文件创建环境并安装文件6 1 yml文件由来6 2 如何获得ym
  • C++之文件操作移动、复制、重命名

    1 C 43 43 笔记之CopyFile和MoveFile的使用 2 删除和重命名 include lt fstream gt include lt windows h gt 与opencv的命名空间CV有冲突 xff0c 不能在一个文件
  • (转)C#数字转固定长度的字符串

    转 C 数字转固定长度的字符串
  • 进程监视工具

    Process Monitor 搜索能下到 xff0c 记下 xff0c 以后用 Process Monitor分析某个应用行为 Process Monitor 系统进程监视器 介绍教程 Using Process Monitor 帮助文档
  • UML建模工具Enterprise Architect(EA) -- 安装及简单使用

    目录 一 什么是EA xff1f 二 安装EA 三 为什么要学会用EA 四 创建EA工程 五 创建类视图 xff0c 构建类和接口 六 选中模型目录 xff0c 自动检出Java代码 七 构建内部类 八 趁热打铁 xff0c 构建数据表视图
  • SVN目录结构与分支等

    TortoiseSVN打分支 合并分支 切换分支 SVN创建分支 合并分支 切换分支
  • WPF上下标

    这里有个介绍的文章 xff1a 定义显示的上标和下标 里面介绍了三种方法 我之前有的是这个方法 xff1a Typography Variants 61 Superscript xff0c 如下所示 xff1a lt TextBlock g
  • [WPF] HamburgerMenu

    有两个库支持的 xff1a Metro App库中的 VS自己的控件 xff1a https docs microsoft com zh cn windows communitytoolkit archive hamburgermenu
  • 面积误差三种计算表达的比较

    引自 xff1a 面积误差三种计算表达的比较 有三种理论 xff0c 最基本的经典的 xff0c 引用一个吧 xff1a 网上有个题目 xff0c 求桌面面积的测量结果 桌面为矩形 用米尺测量 xff0c 长L为100 0 cm xff0c
  • 【转】WPF:Canvas中元素的定位

    概述 xff1a Canvas中的元素的大小和位置都是相对于Canvas容器的 xff0c 他的左上角为原点 xff0c 长度也是相对于他的 WPF xff1a Canvas中元素的定位 https blog csdn net chz cs
  • 【转】C#中计时

    一般可以用Environment TickCount xff0c 但是25天后会翻转 有很多 xff0c 见下面两个转的 C 中精确计时的一点收获 https www cnblogs com jintianhu archive 2010 0
  • 利用python分析微信聊天记录

    文章目录 前言一 任务分析二 工具三 步骤1 数据获取获取DB计算密码导出数据库 2 数据清洗 xff08 具体方法以后补充 xff09 3 数据分析 前言 昨天跟女朋友讨论谁给对方发的消息比较多 xff0c 两人各执一词 xff0c 事实