【matlab】记一次微信聊天文字记录导出到Excel工作

2023-05-16

其实一直想把我和她的微信聊天记录导出到文本,整理出来拿出来翻翻,然后再查阅了大量网络资料后,我成功的将我和她的聊天记录整理成excel的形式,如下所示:

 

 

 

那么我们开始。

 

一、工具准备(苹果手机也可,在文末)

1、root的安卓手机,装有微信。

2、安装RE浏览器或者ES浏览器。

3、加密数据库DB文件打开工具:sqlcipher.exe(下载链接:微云分享)

4、Excel

5、MATLAB(可选)

 

二、找到加密的微信聊天记录文件

依次选择根目录/data/data/com.tencent.mm/MicroMsg,如下图

 

 

如上图,一般加密的数据库文件在两个长名字文件夹之一,自己寻找。

打开文件夹后,会找到EnMicroMsg.db这个文件,将这个文件用re管理器拷贝到手机主目录,然后拷贝到手机上即可。

 

三、打开数据库EnMicroMsg.db

下载加密数据库DB文件打开工具:sqlcipher.exe(下载链接:微云分享)。

 

直接运行,选择打开,如下图,需要密码:

 

 

 

那么请看下一步,找到密码。

 

四、寻找数据库文件密码

 

目前各种资料得出的密码获取方式是 <手机IMEI号+微信UIN号> 的MD5码前七位。

IMEI号位15位,比如000000000000000,微信UIN号为9位,比如123456789.

 

MD5码在线生成:MD5在线加密/解密/破解 - 站长工具

 

如下图,输入手机IMEI号+微信UIN号,选择加密方式32位小,取MD5码前七位即为密码。

 

 

所以,我们只需要知道手机IMEI号和微信UIN号即可获得密码,请看下步,怎么获得IMEI号和微信UIN号。

 

五、获取手机IMEI号和微信UIN号

1、手机IMEI号

这个很简单,拨号界面输入*#06#即可,双卡双待手机两个串号,这个自行尝试。

2、微信UIN号获取

还是在re管理器依次寻找

根目录/data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml

system_config_prefs.xml这个文件拷贝到手机主目录,才能打开,如下所示:

 

 

即可得到UIN号。

 

六、导出聊天记录到CSV

经过第四步和第五步,我们已经打开加密的db文件,如下所示:

 

 

我们直奔主题,如下图,找到message导出csv即可,修改文件后缀csv

 

 

 

七、处理聊天记录csv文件

导出的csv文件包含了所有的聊天记录,我们通过探索,发现如下图:

 

一般寻找图上这几项,分别是isSend(0则为对方发的消息,1是我发的消息),createTime(10位UNIX时间戳,可以算法转换为标准时间),talker(这个是关键,你与某个联系人的对话就为一个taker id,锁定了它就锁定了你与她的所有对话),content(聊天文字内容)。

 

那么,我们思路清晰了,我们只需要找到talker即可,通过Excel的筛选即可完成,excel操作很简单,但如此大的excel文件,打开编辑可是非常慢的,所以我用MATLAB实现处理,并将整理好的聊天记录导出到excel文件中。

 

程序如下:

clc;
clear all;

[FileName,PathName] = uigetfile('*.csv','选择导出的数据库csv文件');
file = fullfile(PathName,FileName);
 [num,txt,raw]=xlsread(file);

% clearvars -except  num txt raw
talkerid=input('请输入Talker的ID:','s');

talker=txt(:,8);%列出所有的talker ID

[ta , y] = find(strcmp(talker,talkerid));%寻找刚才输入的talker ID

 mcontent=cell(length(ta),1);
for i=1:length(ta)

 who(i)=num(ta(i)-1, 5)  ;%定义一个isSend cell数组,来鉴别是谁发的消息

 mtime(i)=num(ta(i), 7)  ;%定义一个createTime cell数组,来存储10位UNIX时间戳

 mcontent{i}=txt(ta(i), 9)  ;%定义一个content cell数组,来存储聊天内容
end

 who=who';
 %%%%%%%%%%%%%%%下面这段程序是将isSend cell数组中的0替换为对方,1替换为我%%%%%%%%%%%%
myname=find(who==1);
hername=find(who==0);
% all=find(who==2);




ourname=cell(length(who),1);


for i=1:length(myname)
ourname{myname(i),1}='我';
end


for i=1:length(hername)
ourname{hername(i),1}='真好';
end

% for i=1:length(all)
% ourname{all(i),1}='未知';
% end


%%%%%%%%%%%%%%%%%%%%%%%%%下面这段程序是将createTime cell数组中时间戳取前10位转换位北京时间%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ourname=ourname';
  mtime=mtime';
  mtime=num2str(mtime);%转换成字符串,取前10位时间戳
  mtime=mtime(:,1:10);
 mtime=str2num(mtime);
mtime=dateconvert(mtime);
mtime=mtime';


%%%%%%%%%%%%%%%%%%%%%%%%%下面这段程序是将content cell数组中汉字去掉引号,否则写入excel报错%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:length(mcontent)
    mcontent1(i)=mcontent{i};
end
mcontent1=mcontent1';




%%%%%%%%%%%%%%%%%%%%%%%%%下面这段程序是将时间、发言人、聊天内容汇总,写入excel中%%%%%
ultimate=[mtime,ourname,mcontent1];
xlswrite('lovemore1.xlsx',ultimate);



%UNIX时间戳转换成标准时间,北京时间需要加8小时,也就是8*3600秒
function [ date ] = dateconvert(x)  

for i=1:length(x)
date{i}=datestr(datetime(x(i)+8*3600, 'ConvertFrom', 'posixtime' ));

end  

end

 

 

然后,就可以搞定啦,如果嫌最终的excel打开还是慢,你可以用excel导出到txt也行啊。

 

 

---------------------------------下面是苹果的-----------------------------------------------------------------------

 

一、工具准备

1、iTunes

2、pp助手

3、加密数据库DB文件打开工具:sqlcipher.exe(下载链接:微云分享)

4、Excel

5、MATLAB(可选)

 

二、获取数据库db文件

苹果的db文件没有加密,所以只要找到db文件即可用sqlcipher打开。

我们开始!

1、iTunes备份手机

如下图,手机链接电脑,备份即可。

 

 

2、PP助手导出备份

电脑安装pp助手,手机链接PP助手,点击备份还原,找到iTunes备份文件夹,如下图:输入AppDomain-com.tencent.xin:/,即可看到,将Documents文件夹拷贝到电脑即可。

 

 

然后,我们打开Documents文件夹,找到如下图所示的fts_message.db就是要的聊天记录数据库。

 

 

 

然后,我们直接用sqlcipher打开,如下所示:

苹果的和安卓不一样,苹果将你与某个人的对话放到各自的table里,所以直接导出csv即可。

 

 

但是只有创建时间和聊天内容,谁发送的消息没找到。。。

程序也简单多了,如下:

clc;
clear all;

[FileName,PathName] = uigetfile('*.csv','选择导出的数据库csv文件');
file = fullfile(PathName,FileName);
 [num,txt,raw]=xlsread(file);


% clearvars -except  num txt raw
 
 mtime=dateconvert(num(:,4))';
 mcontent1=txt(2:end,5);
 
 
ultimate=[mtime,mcontent1];
 xlswrite('ILoveYouForever.xlsx',ultimate);



%UNIX时间戳转换成标准时间,北京时间需要加8小时,也就是8*3600秒
function [ date ] = dateconvert(x)  

for i=1:length(x)
date{i}=datestr(datetime(x(i)+8*3600, 'ConvertFrom', 'posixtime' ));

end  

end

 

导出的excel如下:

 

 

 

------------------------------------------------------------------------

from 微信公众号:万能搜吧 (每天来点精简的分享)

------------------------------------------------------------------------

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

【matlab】记一次微信聊天文字记录导出到Excel工作 的相关文章

  • 我可以用文本框设置变量名称吗? excel

    我可以使用 TextBox Vba Excel 设置变量的名称吗 我必须以在文本框中写入组名称并单击命令按钮的方式输入新的产品组 代码必须从文本框中获取字符串 并将该字符串设置为新创建的数组的名称 我只想在运行时创建一个新变量 或数组 据信
  • 使用 pythoncom 在 Python 进程之间编组 COM 对象

    我希望有人可以帮助我从 Python 进行编组跨进程调用到 Excel 我有一个通过 Python 启动的 Excel 会话 我知道当需要从单独的 Python 进程访问它时 该会话将会启动并运行 我已经使用编组让一切按预期工作CoMars
  • EPPlus Excel 行高不一致

    我已经使用 EPPlus 生成了一个 excel 文件 在 MS Office 2007 中一切似乎都很完美 但客户端使用的是 MS Office 2010 2013 并且在第 29 行之后未设置行高 这是一个非常奇怪的问题 我已经尝试了
  • MATLAB 编译器与 MATLAB 编码器

    两者有什么区别 据我了解 MATLAB Compiler将MATLAB代码包装成 exe文件 这样就可以在不安装MATLAB的情况下使用它 并且只需要MCR 除此之外 MATLAB Builder NE 还可以用于生成与 Net 框架一起使
  • 文件夹.文件的相对路径

    我有一个 Excel 文件 在同一文件夹中还有一个包含我想要包含的 CSV 文件的文件夹 使用 来自文件夹 查询 第一步将给出以下查询 Folder Files D OneDrive Documents Health Concept2 现在
  • 获取向量幂的有效方法

    我编写了一个代码 在数值上使用勒让德多项式直至某个高 n 阶 例如 case 8 p 6435 x 8 12012 x 6 6930 x 4 1260 x 2 35 128 return case 9 如果向量x太长这会变得很慢 我发现说之
  • 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

    我在之前的回答里发现了问题 https stackoverflow com q 19325258 159684一种无需注册即可调用 C xll 中定义的函数的方法 我之前使用 XLW 提供的注册基础结构 并且使用 XlfOper 类型在 V
  • VSTO 替代方案 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 VSTO 有哪些替代方案 ManagedXll 能做什么而 VSTO 不能 你什么时候使用其中一个而不
  • Excel 工作表名称的有效字符

    在 Java 中 我们使用以下包以编程方式创建 Excel 文档 org apache poi hssf 如果您尝试设置工作表的名称 不是文件 而是内部 Excel 工作表 在以下情况下您将收到错误消息 名称超过 31 个字符 该名称包含以
  • MATLAB 除法...29/128 应该返回 0 吗?

    我真的不认为这是一个精度问题 答案应该是0 226左右 这是确切的代码 val I i j bucketSize pos val bucketSize I只是我从中获取值的矩阵 以下是 MATLAB 的输出 val 29 bucketSiz
  • Redim Preserve 给出“下标超出范围”

    我想要Redim Preserve一个数组我不断收到错误 下标超出范围 我知道只有最后一个维度的大小可以更改 这正是我正在做的事情 这里出了什么问题 数组的类型是Variant BmMatrix Sheets BENCH Range a60
  • Excel 2013 数据透视表不会更改当前页面,除非手动导航到

    我们有一小段 VBA 代码 多年来一直完美运行 本质上是 Me PivotTables APivot PivotFields AField CurrentPage Some text 这种方法一直有效 直到 Excel 2013 该行将失败
  • 使用 ClosedXML 创建数据透视表

    我正在尝试使用 ClosedXML V0 91 1 创建数据透视表 但我不断遇到问题 因为我的 Excel 文件包含不可读的内容 然后 Excel 工作簿在单击时删除了我的数据透视表Yes below 下面是我击中时的显示Yes 它正在删除
  • MATLAB:将当前文件夹设置为脚本位置

    我在不同的文件夹中有一些脚本和数据 我使用addpath和相对路径经常 我的问题是 只有当我的当前文件夹是我执行的脚本所在的位置时 这才有效 例如 如果我执行添加路径 X 的脚本 A 然后执行位于路径 X 中的脚本 B 则 Matlab 不
  • 使用 VBA 将 Excel 电子表格中嵌入的 Word 文档保存到磁盘

    我们有一个 Excel 电子表格 当前使用存储在公司 LAN 上的 Word 模板生成报告 这对于内部用户来说效果很好 但对于没有连接到 LAN 的任何人来说就不行了 例如 笔记本电脑用户 管理层不希望将模板作为单独的文件分发给外部用户 而
  • 返回条件格式化单元格内部颜色的函数

    我想要一个返回条件格式单元格颜色索引值的函数 它用于检查一行中的多个单元格 如果它们使用条件格式突出显示 则需要执行操作 检查单元格中是否有颜色比创建覆盖条件的组合条件公式更简单所有细胞的 或者说我是这么想的 尽管代码在消息框中有效 但下面
  • Powershell - 在不安装 Excel 的情况下将 CSV 转换为 XLS

    我有一台自动生成报告的服务器 报告采用 CSV 格式 我需要能够直接加密文件 无需第三方压缩 无 WinZIP 或 WinRAR 我认为最好的想法是将 CSV 转换为 XLS 然后通过 Powershell 密码保护 XLS 文件 不幸的是
  • 图像梯度角计算

    我实际上是按照论文的说明进行操作的 输入应该是二进制 边缘 图像 输出应该是一个新图像 并根据论文中的说明进行了修改 我对指令的理解是 获取边缘图像的梯度图像并对其进行修改 并使用修改后的梯度创建一个新图像 因此 在 MATLAB Open
  • 如果 Excel 中的表格包含单元格引用,如何对其进行排序?

    我在工作表 1 中有一个 Excel 数据表 它引用了许多其他工作表中的各种不同单元格 当我尝试对工作表进行排序或过滤时 引用会随着单元格的移动而发生变化 但是 我不想手动进入每个单元格并在各处插入 符号 因为有些引用是连续的 我可能想稍后
  • Excel 2010 在 IF 函数中搜索文本 - 单独的单元格数据

    Program Excel 2010 Require 一种将名字 姓氏 电子邮件提取到各个单元格的方法 Data 我的数据有一个包含原始 脏数据 的表 它是原始的并且一团糟 我用一个简单的方法整理它 IF A7 Order 1 然后其余单元

随机推荐

  • windows 安装 wsl 及 mate 桌面

    windows 安装 wsl 及 mate 桌面 步骤 1 安装 wsl 先打开 wsl 选项 打开终端执行指令 xff1a wsl list online span class token comment 查看可安装版本 span wsl
  • mysql 8.0设置密码 (doc命令)

    1 进入mysql内修改密码 alter user 名字 64 主机名 identified by 34 设置的新密码 34 xff1b 2 不进入mysql内进行修改密码 mysqladmin u用户名 p 旧密码 password 34
  • selenium获取某网站工作岗位信息(含火狐浏览器的驱动下载安装步骤)

    目录 一 说明 二 Firefox驱动下载并配置环境变量 2 1 下载火狐浏览器驱动 2 2 配置驱动环境变量 三 selenium概念 3 1 概念引入 3 2 一些函数 3 2 1 切换不同窗口 3 2 2 切换到不同iframe 3
  • C#中的枚举 Enum和enum的区别

    枚举类型本质上是一个字典 xff0c 它将一组字符串映射到一组整数值 每个枚举常量都具有一个关联的整数值 xff0c 默认情况下 xff0c 第一个枚举常量的值为 0 xff0c 后续枚举常量的值会自动加 1 C 中有两种枚举类型 xff1
  • 【VScode远程连接虚拟机(ubuntu)】

    VScode远程连接虚拟机 前言一 安装VScode二 安装中文插件三 安装其他远程连接插件1 C C 43 43 Extension Pack2 Live Preview3 Live Server4 Remote Development
  • (错误都已改正)AS608指纹+STM32串口通信录入或删除指纹

    目录 一 硬件使用分类 1 整体图展示 2 STM32F103RCT6单片机 3 AS608指纹模块 4 USB转TTL 二 软件设计 1 接线设计 2 程序设计 一 硬件使用分类 1 整体图展示 采用STM32F103RCT6作为主控制器
  • 基于Maix IDE的编程环境 K21O人脸识别+串口输出

    如果你想进行人脸识别首先要进行对K210的模型以及固件的配置 xff0c 在你去Maix官网去下载模型以及固件 目录 一 如何申请机械码 1 前往这个网站 xff0c 也就是Maix的官网 xff08 需要提前申请账号 xff09 2 要进
  • K210模型训练(物体分类)

    目录 一 打开Maix IDE 的官网找到需要训练模型的平台Maix Hub 模型训练的分类 xff1a 二 如何使用Maix Hub模型训练平台 数据集的采集 三 训练模型后的文件分类 一 打开Maix IDE 的官网找到需要训练模型的平
  • Openstack Swift 安装部署总结

    环境 硬件 这里只使用了一台服务器 xff0c 既作为Controller Node xff0c 也作为Storage Node 主机名IPOS磁盘文件系统sf dev10 202 127 4Centos 7 4 dev sdb dev s
  • 针对于esp8266-01的刷AT固件

    目录 1 esp8266 01的结构与引脚分布 1 1对应各引脚的功能分布 2 如何与USB转TTL接线进行刷固件 3 使用 FLASH Download Tool刷固件 3 1打开该文件 3 2按照此选项进行选择 3 3接着进行选择 3
  • 阿里云物联网平台如何进行云产品流转

    一 什么是云产品流转 简单来说就是如何将数据从这个设备发送到另一个设备中 二 如何在同一产品上的俩个设备之间进行数据转移 1 创建一个产品 xff0c 并添加两个设备 可以看到RP DPJ 与RP WX 都是属于RP WXX 产品上的俩个设
  • 本地包含与远程包含

    注意 xff1a 仅用于本人学习的笔记记录 xff0c 禁止进行传播分享 xff0c 一旦造成严重后果与本人无关 xff01 xff01 xff01 一 什么是文件包含漏洞 文件包含 xff1a 就是去其他的php文件读取源码来运行 xff
  • Linux下的shell

    NC反向shell 1 查看shell类型 echo SHELL chsh s 需要修改shell的类型 cat etc shells 查看存在哪些shell 然后反弹对应的shell xff08 正向连接 xff09 被控制端 nc lv
  • 单片机之步进电机驱动篇(一)

    步进电机的简介 xff1a 步进电机是一种将电脉冲转化为角位移的执行机构 当步进电机驱动器接收到一个脉冲信号 xff0c 它就驱动步进电机按设定的方向转动一个步距角 通过控制脉冲来控制角位移量 xff0c 也可以实现对电机的加减速和正反转的
  • ROS使用Python编写的步骤

    第一步 xff1a 和C 43 43 编写一样 xff0c 配置好工作空间 第二步 xff1a 在功能包下面建立一个scripts文件夹 第三步 xff1a 在scripts文件里面建立一个 py文件 第四步 编写python文件 注意 x
  • 解决js脚本加载失败的问题

    当我们在运行某一个项目时 xff0c 它的某些JavaScript脚本可能加载不出来 xff0c 报错 像现在单页界面应用基本上都是通过js来构建 xff0c 一旦加载不出 xff0c 这个项目就不能运行了 xff0c 那怎么办 xff1f
  • 能在 Switch 中使用 String 吗?

    答 xff1a 从 Java 7 开始 xff0c 我们可以在 switch case 中使用字符串 xff0c 但这仅仅是一个语法糖 内部实现在 switch 中使用字符串的 hashCode 补充 xff1a 在JDK7以前 xff0c
  • C语言基础编程练习(精选例题+题解)

    目录 1 求最大公约数和最小公倍数 2 打印图形 3 质数因子 4 数字排序 5 十进制数转换为八进制数 xff08 进制转换 xff09 6 寻找完数 1 求最大公约数和最小公倍数 题目描述 xff1a 输入两个正整数m和n xff0c
  • 判断字符向量是否为回文

    回文是指正读反读均相同的字符序列 xff0c 如 34 abba 34 和 34 abdba 34 均是回文 xff0c 但 34 good 34 不是回文 试写一个算法判定给定的字符向量是否为回文 xff08 提示 xff1a 将一般字符
  • 【matlab】记一次微信聊天文字记录导出到Excel工作

    其实一直想把我和她的微信聊天记录导出到文本 xff0c 整理出来拿出来翻翻 xff0c 然后再查阅了大量网络资料后 xff0c 我成功的将我和她的聊天记录整理成excel的形式 xff0c 如下所示 xff1a 那么我们开始 一 工具准备