• 如何将密切好友的微信聊天记录恢复到自己的微信中


    本文版权归cxun所有,如有转载请注明出处与本文链接,谢谢!
    原文地址:http://www.cnblogs.com/cxun/p/4544000.html

    在手机中把与自己联系好几年的好友的聊天记录不小心删除了,痛苦万分,好在对方的手机里还有一份完整的聊天记录,想把对方的聊天记录转移到自己的手机中来,以下是具体的补救方法。

    使用软件:SQLite Expert、iTools

    适用手机:iPhone

    假设A手机是误操作删除记录的手机,B手机是完整数据源手机。

    1.备份

    首先,先把B手机的数据备份好,建议使用iTools(现在已更新到3.0,本文截图依然是1.0的),找到微信App中的文档文件夹Documents,整个复制到本地硬盘保存起来吧。

    2.计算MD5值

    首先要弄清楚双方微信ID用户名的MD5值,这个很重要,在后面操作过程中极易弄混淆。在Documents中,会有若干个MD5哈希值为名称的文件夹,如果该手机只登录过一个微信帐号,就会只有一个MD5哈希值的文件夹;如果有多个,你不知道哪个才是你常用微信帐号文件夹的话,告诉你一个办法,哪个文件夹占用空间大,哪个就是你常用的。那么,这个文件夹名称就是A手机微信ID哈希值,以下简称“A_HASH”。

    依次打开其内部文件夹,找到聊天记录核心文件:MM.sqlite,很明显,是个sqlite数据库文件。

    使用数据库软件打开,这里推荐使用SQLite Expert,个人版是免费的。在左侧树状图中找到好友数据表“Friend”,其中,UsrName字段就是每个好友的微信ID用户名,NickName字段就是好友的昵称,可以通过昵称找到B手机的微信ID用户名,然后使用MD5计算工具算出它的MD5值,以下简称“B_HASH”。

    3.复制聊天记录

    首先把A手机的数据库文件复制到本地,即“/Documents/A_HASH/DB/MM.sqlite”,使用SQLite Expert打开,在左侧树状图中找到想恢复的好友的数据表“Chat_B_HASH”,这里有两个情况,分开讨论:

    (1)如果是刚刚在A手机中误删除的,且没有与B发生过后续通信,该表则不存在,点击SQLite Expert的SQL标签页,输入SQL语句创建该表:

    SQL语句如下(记得改为正确的“B_HASH”):

    CREATE TABLE [Chat_B_HASH]
    (TableVer INT4,
    MesLocalID INTEGER PRIMARY KEY,
    MesSvrID INTEGER,
    CreateTime INTEGER,
    Message TEXT,
    Status INTEGER,
    ImgStatus INTEGER,
    Type INTEGER,
    Des INTEGER);

    按F5,如果没报错的话,则该数据表创建成功。

    (2)如果在A手机中误删除之后,与B产生了新的通信,则该数据表已存在,且存有删除后的通信数据。由于一会要把B手机密切好友的所有聊天记录复制到A手机中,此时A手机与B好友的聊天数据已没有意义,为了避免出现数据重复与其它未知的错误出现,建议将A手机中与B好友的数据删除。删除方法是在左侧树状图中点击B好友的数据表“Chat_B_HASH”(千万别点错),在SQL标签页中输入SQL语句并执行:

    delete from Chat_B_HASH

    同时,还要使用iTools在iPhone中删除与B好友聊天记录相关的语音、图片、视频等文件(不放心的话可以先把这些数据备份出来),在iTools中找到这3个文件夹,在文件列表中按“CTRL + A”全选,按“Del”删除。

    /Documents/A_HASH/Audio/B_HASH
    /Documents/A_HASH/Img/B_HASH
    /Documents/A_HASH/Video/B_HASH

    接下来就是重头戏了,要把B手机中与A聊天的记录复制到A的数据库文件MM.sqlite中。首先找到并使用SQLite Expert打开第1步中B手机的数据库文件“DocumentsB_HASHDBMM.sqlite”,在左侧树状图中找到A的微信数据表“Chat_A_HASH”,点击,在右侧选择“Data”标签页,点击表中数据任意记录,按“CTRL + A”全选(数据量很大的话需要等几秒才有反应),再按“CTRL + C”复制,然后在左侧树状图中选择A手机的数据库,找到刚才3.(1)步创建或3.(2)步删除数据的数据表“Chat_B_HASH”,在右侧“Data”标签页下的数据记录位置中点击一下,按“CTRL + V”粘贴(数据量很大的话也要等几秒才有反应),完成数据的复制。为了避免将A和B的数据库弄混淆,复制完后最好把B的数据库关闭。

    4.修改收信与发信的标志位

    由于在B手机的微信中,看到的聊天记录中A是在左边,B是在右边,A的对话框泡泡是白色,B的是绿色,现在数据直接复制到A的数据库文件中后,需要将两者的发信收信标志位交换,才能在A的手机中正确显示,否则的话会看到原本是A说的话,变成B说的话了。

    在SQLite Expert中,点击刚才粘贴的数据表“Chat_B_HASH”,点击右侧的“SQL”标签页,依次输入并执行以下SQL语句:

    update Chat_B_HASH set des=2 where des==0
    update Chat_B_HASH set des=0 where des==1
    update Chat_B_HASH set des=1 where des==2

    切记!这3条语句要一条接一条地执行!即:输入第1条,按一次F5,删掉,再输入第2条,再按一次F5,再删掉,然后再输入第3条,按一次F5,完毕!

    5.修改视频数据的标志位

    这一步若不执行的话,在最后完成后会造成A手机中视频旁边出现感叹号的问题。在SQLite Expert中,点击刚才粘贴的数据表“Chat_B_HASH”,点击右侧的“SQL”标签页,输入并执行以下SQL语句:

    update Chat_B_HASH set message=replace(cast(message as varchar(80000)) ,'status="0"','status="4"') where type=43 and des=1; 
    update Chat_B_HASH set message=replace(cast(message as varchar(80000)) ,'status="1"','status="4"') where type=43 and des=1;
    update Chat_B_HASH set message=replace(cast(message as varchar(80000)) ,'status="2"','status="4"') where type=43 and des=1;
    update Chat_B_HASH set message=replace(cast(message as varchar(80000)) ,'status="3"','status="4"') where type=43 and des=1;
    update Chat_B_HASH set message=replace(cast(message as varchar(80000)) ,'status="0"','status="3"') where type=43 and des=0; 
    update Chat_B_HASH set message=replace(cast(message as varchar(80000)) ,'status="1"','status="3"') where type=43 and des=0;
    update Chat_B_HASH set message=replace(cast(message as varchar(80000)) ,'status="2"','status="3"') where type=43 and des=0;
    update Chat_B_HASH set message=replace(cast(message as varchar(80000)) ,'status="4"','status="3"') where type=43 and des=0;

    若最后完成后仍发现视频旁边有感叹号出现,请使用终极方法:拿另一台iPhone C,通过WIFI聊天记录迁移的方式迁移到C手机,再迁移回A手机。在迁移过程中会自动修复。

    另外,如果B手机的聊天记录是从Android版本的微信迁移过来的,需要执行以下SQL语句,原因是老版的Android微信将视频格式的标志位存储为“44”,需要改成“43”:

    update Chat_B_HASH set type=43 where type=44
    update Chat_B_HASH set message=replace(cast(message as varchar(80000)) ,'type="44"','type="43"') where type=43

     6.复制数据到A手机

    进行以上数据库修改操作之后,关闭SQLite Expert(否则复制回iPhone会出错),将修改好的MM.sqlite文件使用iTools导入回A手机微信APP的相应文件夹,即:“/Documents/A_HASH/DB/MM.sqlite”

    然后是将B手机中与A聊天的语音、图片、视频导入到A手机微信APP的相应文件夹中,假设在第1步中从B手机备份出来的Documents文件夹存放在D盘,使用iTools将这三个文件夹中的所有文件拖入A手机的微信APP对应的文件夹中:

    D:DocumentsB_HASHAudioA_HASH  --->  iTools:/Documents/A_HASH/Audio/B_HASH   (文件后缀是:*.aud 等等)
    D:DocumentsB_HASHImgA_HASH  --->  iTools:/Documents/A_HASH/Img/B_HASH       (文件后缀是:*.pic 与 *.pic_thum 等等)
    D:DocumentsB_HASHVideoA_HASH ---> iTools:/Documents/A_HASH/Video/B_HASH (文件后缀是:*.mp4 与 *.video_thum 等等)

    结语:

    在本文的这些操作中,难点就是将A与B弄混淆,因此,在进行此项工作以前,对A与B手机的备份显得尤为重要,一旦弄错,还可以重头再来。

  • 相关阅读:
    软件工程结对作业
    软件工程第二次作业
    软件工程第一次作业
    MATLAB安装教程
    实现生成小学四则运算练习题
    结对编程-审查代码
    软件第三次作业
    练习使用Eclipse进行单元测试
    软件工程第一次作业
    Visual Studio Code (vscode)
  • 原文地址:https://www.cnblogs.com/cxun/p/4544000.html
Copyright © 2020-2023  润新知