小米手机提取微信聊天记录为csv文件或txt文件(免root,免安装java)

2021年6月27日 4点热度 0条评论 来源: 松礼礼

此文数据本分仅适用于小米手机,其他品牌手机不确定有无此功能。
参考链接:微信聊天记录导出(2020新版)
参考链接:微信聊天记录导出为电脑txt文件教程
参考链接:微信聊天记录统计

1.手机操作
拨打“ *#06# ”获得手机的IMEI码

手机->设置->更多设置->备份和重置->本地备份,输入开机密码,点击 新建备份,点击软件程序右侧 尖括号,仅选择 微信 ,点击 确定,点击 开始备份,等待备份完成。

将手机连接至电脑,选择 MIUI/backup/ALLBackup/yyyymmdd_xxxxxx/ 文件夹下的 com.tecent.mm.bak , 将文件剪切至电脑。

2.电脑操作
使用解压软件7-zip直接对 com.tecent.mm.bak进行解压。
使用winRAR没能打开,使用7-zip后打开了
将文件 com.tecent.mm\apps\com.tencent.mm\r\MicroMsg\xxxx\EnMicroMsg.db
和文件 com.tecent.mm\apps\com.tencent.mm\sp\ auth_info_key_prefs.xml 复制到同一文件夹下。

打开 auth_info_key_prefs.xml ,获得微信的uin码。其中“auth_uin”左侧的“int_value”为微信uin码。

3.获取数据库密码
将第1步获得的 手机IMEI码 与 第2步获得的 微信uin码 拼接,对拼接的字符串进行MD5的32位小写 加密,前7位即为数据库密码。
一个MD5加密网站
例:如IMEI为123456,uin为abc,则拼接后的字符串为123456abc 将此字符串用MD5加密(32位)后为 df10ef8509dc176d733d59549e7dbfaf,那么前7位 df10ef8 就是数据库的密码。

4.聊天记录导出

转载的GITHUB上的软件及程序下载链接https://github.com/Heyxk/notes/tree/master/resource/wechat-tools

下载sqlicipher.exe文件,用sqlicipher打开EnMicroMsg.db数据库,输入第3步获得的数据库密码。

点击菜单栏的 File->Export->Table as CSV file,在table name 中选择message,点击 Export,导出csv文件。

新建excel表格,点击数据->来自文本,选择此csv文件,格式选择为简体中文(GB2312),点击 下一步;分隔符选择 Tab键 和 逗号,点击下一步。


在 talker 一栏,点击 数据->筛选与排序->筛选,选择想要筛选的聊天对象。isSend 列中的1代表聊天中的己方,0代表聊天中的对方。

至此已粗略的将微信聊天记录进行了格式转换。

5.某个人的聊天记录筛选
在python环境中编写如下。得到包含 标准时间、人物id、对话内容 三者的文件。(未筛除无效链接类信息,如果要得到词云等,还需改进。)

import pandas as pd
import time
import csv
from operator import itemgetter

def to_struct_time(t):
    struct_time = time.localtime(t)  # 将时间戳转换为struct_time元组
    year = struct_time.tm_year
    month = struct_time.tm_mon
    day = struct_time.tm_mday
    hour = struct_time.tm_hour
    minute = struct_time.tm_min
    secend = struct_time.tm_sec
    return year, month, day, hour, minute, secend
    
chat = pd.read_csv('message.csv', sep=',', usecols=[4,6,7,8])
myBoy = 'wxid_xxxxxxx' # talker
chat_all = []
for i in range(len(chat)-1):
    content = chat[i:i+1]
    if content['talker'].values[0] == myBoy:
        iss = content['isSend'].values[0]
        t = content['createTime'].values[0]//1000
        c = content['content'].values[0]
        chat_all.append([t,iss,c])
chat_all = sorted(chat_all, key=itemgetter(0))

#将时间转换为标准格式
chat_time = [x[0] for x in chat_all]
standard_time = []
for t in chat_time:
    year, month, day, hour, minute, secend = to_struct_time(t)
    standard_time.append(str(year)+"//"+str(month)+"//"+str(day)+" "+str(hour)+":"+str(minute)+":"+str(secend))
for i in range(len(chat_all)-1):
    chat_all[i][0]=standard_time[i]
    
#将时间,人id,内容 写入新的文件
datas = chat_all
# encoding='utf-8-sig' 解决文件中的中文乱码问题
with open('time-id-chat.csv','w',newline='',encoding='utf-8-sig') as csvfile:
    writer = csv.writer(csvfile)
    for row in datas:
        writer.writerow(row)

    原文作者:松礼礼
    原文地址: https://blog.csdn.net/weixin_45281629/article/details/118274792
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。