您的位置:首页 > 数据 >
今日快看!微信聊天记录导出成纯文本文件 用安卓模拟器破解了
来源:CSDN 2023-01-29 14:21:31

2020年10月29日,我终于将微信里面的聊天记录导出成纯文本文件了,至于后面的制作词云图,就相对简单了。


(资料图片)

现在对这个过程记录一下,帮助有需要的人。

注意:我的手机是安卓手机,且没有在其他操作系统上尝试过下述方法。

1、基本思路

和网上说的一样,基本思路就是拿到手机里面存储聊天记录的数据库并解锁,然后导出成文本文件,接下来怎么分析就全凭所好了。

最耗费时间的,就是拿到并破解聊天数据库的过程。

2、获取数据库文件

微信的聊天记录在手机上是以SQLite数据库存储的。

一般情况下,我们是看不到这个数据库文件的,除非获取Root权限。但是,获取Root权限后会降低手机的安全性,所以现在的安卓手机越来越难以被Root。

为此,就需要“曲线救国”:利用安卓模拟器。

下面是具体的步骤:

将手机上的聊天记录备份至电脑,这个是微信自带的功能,只需要按照微信的操作指引即可。

安装安卓模拟器,我用的是网易mumu,支持mac和win。

打开安卓模拟器,注意,此时不要安装微信,先完成以下操作: 3.1 获取Root权限(右上角菜单栏-->系统设置-->开启ROOT权限): 3.2 设置IMEI编码(右上角菜单栏-->系统设置-->属性设置-->自定义型号-->随机): 点击保存后,模拟器会提示是否重启,点击重启以生效之前的设置。

在模拟器中下载微信(通过模拟器的搜索框直接下载)并登录微信。在上一步操作过程中,电脑上的微信会因为手机端微信登录状态的变化而自动退出,这时需要重新登录电脑微信。 将备份的电脑端的聊天记录恢复至模拟器中的手机微信。下载RE文件管理器(通过模拟器的搜索框直接下载) 打开RE,从根目录/下开始,路径为:/data/data/com.tencent.mm/MicroMsg//EnMicroMsg.db,其中,为一数字字母组成的字符串,因微信号不同而不同;EnMicroMsg.db就是我们的数据库文件了。可以将该数据库文件复制到模拟器的共享文件夹中,这样,数据库文件就到了电脑上了。

3、解密

3.1 获取密码

微信对该数据库文件进行了加密,加密规则是:先对IMEI和UIN进行拼接,然后利用MD5算法对拼接后的字符串进行转换,转换后的前7位字符为密码。

IMEI上面已经在模拟器中获取到了,接下来获取UIN。

UIN是微信的用户信息号,许多地方可以获取到,这里举一个例子。仍需要回到模拟其中,打开RE,进入到如下目录:/data/data/com.tencent.mm/shared_prefs,然后直接用RE打开其中的system_config_prefs.xml,找到其中的name为default_uin的标签所对应的value的值,就是UIN。

拿到两个编号之后,将它们按照IMEI+UIN的顺序拼接(注意,没有+号),然后进行在线MD5转换,转换后,取前7个字符。

3.2 打开数据库

尽管获取了密码,但并不能向其他数据库一样用密码登录即可(你可以尝试一下用Navicat进行登录看看是否成功),这是由于微信使用了SQLCipher对其进行了加密。如果熟悉SQLCipher的使用,可以下载源码,依据3.1得到的密码,用命令行进行解密。

我不熟悉,所以,可以用到别人的工具进行解密。

下载地址为:链接: https://pan.baidu.com/s/1Im3n02yseo-4IxeDY9srqQ 提取码: ka4z。

该工具是一个.exe文件,因此,必须在windows操作系统中运行。软件打开之后使用起来应该没什么难度,选择File-->Open database-->选择数据库文件,然后弹窗就让你输入密码了,输入7个字符的密码即可打开数据库。

打开之后,里面的表有很多,主要用到的是一张名为message的表,从名字就知道了它存储的是聊天记录。

4、制作词云

其实导出成csv文件之后,想基于这个文件做什么操作反而就比较简单了,这里只是记录一下。

4.1 文件转码

导出成的csv文件的编码需要转换成utf-8,这一点要记住。

4.2 python代码

代码不作解释了,都是很基础的,有问题欢迎评论。

import pandas as pdimport jiebaimport codecsfrom imageio import imreadimport matplotlib.pyplot as pltfrom wordcloud import ImageColorGeneratorfrom wordcloud import WordClouddef load_file_and_seg(file_path):    """导入文件并分词"""    f = codecs.open(file_path)    content = f.read()    f.close()    segment = []    segs = jieba.cut(content)    for seg in segs:        if len(seg) > 1 and seg != "\r\n":            segment.append(seg)    return segmentdef get_words_count(file_path, stopwords_file=None):    """统计词频"""    segment = load_file_and_seg(file_path)    df = pd.DataFrame({"segment": segment})    if stopwords_file:        stopwords = pd.read_csv(stopwords_file, index_col=False, quoting=3, sep="\t",                                names=["stopword"], encoding="utf-8")        df = df[~df.segment.isin(stopwords.stopword)]    words_count = df["segment"].value_counts()    return words_count.to_dict()def has_chinese(string):    """字符串中是否含有中文"""    for char in string:        if u"\u4e00" <= char <= u"\u9fa5":            return True    return Falsedef preprocessing(file_path):    """数据的预处理"""    df = pd.read_csv(file_path, sep=",")    keep_indexes = []    for i in range(df.shape[0]):        txt = df.loc[i, "content"]        if txt.startswith(""):            continue        if txt.startswith("欢迎你再次回到微信"):            continue        if has_chinese(txt):            keep_indexes.append(i)    df2 = df.iloc[keep_indexes, :]    df2.sort_values(by="createTime", inplace=True)    df2 = df2.content    file = open("raw_msg.txt", "w+", encoding="utf-8")    for i in df2:        file.write(i + "\n")    file.close()if __name__ == "__main__":    file = "msg2.csv"    preprocessing(file)    words_count = get_words_count("./raw_msg.txt")    bimg = imread("./ai.jpeg")  # 使用一张图片为模板    wordcloud = WordCloud(background_color="white", mask=bimg, font_path="AquaKana.ttc")  # 注意字体    wordcloud = wordcloud.fit_words(words_count)    bimgColors = ImageColorGenerator(bimg)    plt.axis("off")    plt.imshow(wordcloud.recolor(color_func=bimgColors))    plt.show()

5、参考

1 、Python 520情人节超强技能 导出微信聊天记录生成词云

相关文章
观点:1月以来大秦铁路煤炭运输突破3000万吨

观点:1月以来大秦铁路煤炭运输突破3000万吨

  从中国铁路太原局了解到,今年以来,中国铁路太原局充分发挥大秦铁路能源通道作用,优先保障电煤运输,提高电煤装车比重,1月份以来(截至更多

2023-01-29 12:18:01
全球热资讯!1月第二周河南省洛阳市煤炭价格环比上涨

全球热资讯!1月第二周河南省洛阳市煤炭价格环比

  据商务部业务系统统一平台洛阳市重要生产资料监测系统数据显示,上周(1月7日-1月13日)洛阳市煤炭(烟煤)平均零售价为7615元吨,环比上更多

2023-01-29 10:07:02
今日快讯:1月第二周山西省煤炭价格微幅上涨

今日快讯:1月第二周山西省煤炭价格微幅上涨

  据山西省商务厅生产资料市场监测数据显示:(1月9日-15日)山西省煤炭均价13109元吨,环比上涨09%。其中,无烟煤2号均价1648元吨,环比上更多

2023-01-29 10:11:23
2022年12月山西省煤炭价格以涨为主-环球报资讯

2022年12月山西省煤炭价格以涨为主-环球报资讯

  监测系统数据显示:12月份山西煤炭价格以涨为主。煤炭平均价格为130475元吨,环比上涨14%。其中:无烟煤2号洗选块煤平均价格为16156元吨,更多

2023-01-29 10:04:11
1月第二周内蒙古煤炭价格环比上涨

1月第二周内蒙古煤炭价格环比上涨

  据商务部重要生产资料市场监测系统数据显示:(1月7日-1月13日),从监测品种样本数据来看煤炭平均价格为89697元吨,与前一周比(下称环比更多

2023-01-29 09:57:40
天天快讯:内蒙古全力保障春节期间能源供应安全

天天快讯:内蒙古全力保障春节期间能源供应安全

  针对春节期间能源供需形势,内蒙古自治区能源局积极研判,加强煤、电、天然气供应的监测预警,全力保障春节期间能源供应安全。  煤炭保更多

2023-01-29 08:53:44
统计局:1月中旬全国各煤种价格各有涨跌

统计局:1月中旬全国各煤种价格各有涨跌

  国家统计局1月24日公布的数据显示,1月中旬全国煤炭价格各有涨跌。各煤种具体价格变化情况如下:  无烟煤(洗中块,挥发份&le;8%)价格2更多

2023-01-28 11:04:37
当前速讯:山西公布2023年度煤矿分类名单

当前速讯:山西公布2023年度煤矿分类名单

山西省安全生产委员会办公室关于公布2023年度煤矿分类名单的通知各市应急管理局(地方煤矿安全监督管理局):为进一步推动全省煤矿分类工作,更多

2023-01-28 10:00:40
黑龙江哈尔滨:日均装运4000车电煤全力应对极寒天气 世界快资讯

黑龙江哈尔滨:日均装运4000车电煤全力应对极寒天

  连日来,黑龙江省大部地区遭遇强冷空气,局地最低气温接近或低于历史同期极值。中国铁路哈尔滨局集团有限公司积极应对极寒天气影响,全力更多

2023-01-28 10:06:44
世界今头条!三个时间刻度,带你看煤炭保供日常

世界今头条!三个时间刻度,带你看煤炭保供日常

  年味是什么?对于大多数人来说,是灯火里平安团圆的祈愿,是街市上人来人往的喧嚷是,与家人在一起的喜乐团圆……  而对于煤炭保供战线更多

2023-01-28 09:55:19