【日常】如何将微信中对方所撤回的消息恢复?——电脑PC端微信教程:附源码[通俗易懂]

【日常】如何将微信中对方所撤回的消息恢复?——电脑PC端微信教程:附源码[通俗易懂]1前言寻找微信撤回的图片是不少人一直在寻找的方法但苦于在网上一直找不到结果因此本文提出了一种可以找到微信撤回图片的方法。区别于网上其他的不可用代码,本文能成功恢复!2原理之前的说法是,工程师并没有真正把撤回的图片删除,而是加密后藏起来了。其实这样说并不严谨,经过后续测试,发现PC端的确如此,而手机端(Android)撤回的图片是有删除的,但是删除的不干净。2.1PC端微信所有接收到的图片都储在:C:\Users\你的用户名\Documents\WeChatFiles\wxid_你

大家好,又见面了,我是你们的朋友全栈君。

1 前言

寻找微信撤回的图片是不少人一直在寻找的方法

但苦于在网上一直找不到结果

因此本文提出了一种可以找到微信撤回图片的方法。

区别于网上其他的不可用代码,本文能成功恢复!

2 原理

之前的说法是,工程师并没有真正把撤回的图片删除,而是加密后藏起来了。其实这样说并不严谨,经过后续测试,发现PC端的确如此,而手机端(Android)撤回的图片是有删除的,但是删除的不干净。

2.1 PC端

微信所有接收到的图片都储在:

C:\Users\你的用户名\Documents\WeChat Files\wxid_你的微信ID\FileStorage\Image\日期

里面有一堆以.dat为后缀的文件,他们大小不一,都经过了加密。而加密的方法便是对字节逐一解密。
在这里插入图片描述

加密后的字节 = 原始字节 ^ 0x51。为了方便,我们把0x51称作“magic码”。

其中,magic码不一定是0x51,有的机器是0x50。经过一些测试,结论是,magic码与微信号有关,即不同的微信号在同一台机器可能得到不同的magic码,而同一个微信号在不同的机器上得到了相同的magic码。因此,magic码是由微信号或者微信ID计算得来的。

其次,.dat文件是图片,而对于JPEG的图片,其对应二进制的第一个字节是0xFF。

根据此原理,我们使用以下算法进行解密:.dat文件对应二进制的第一个字节 = 0xFF ^ magic码,求magic码。

我们已经知道,如果C=AB,则AC=(AA)B,而AA=0,所以AC=B,即B=A^C。

magic码 = 0xFF ^ 已知.dat文件对应二进制的第一个字节。

3 得到最终的复原方法:

3.1 调用我们写的恢复函数:

在这里插入图片描述

3.2 源文件:

在这里插入图片描述

3.3 恢复文件:

在这里插入图片描述

在这里插入图片描述

4 附上源码:

https://download.csdn.net/download/weixin_39589455/85300198

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149793.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 《纳什均衡与博弈论》_纳什均衡与博弈论pdf

    《纳什均衡与博弈论》_纳什均衡与博弈论pdf所谓纳什均衡,指的是参与人的这样一种策略组合,在该策略组合上,任何参与人单独改变策略都不会得到好处。换句话说,如果在一个策略组合上,当所有其他人都不改变策略时,没有人会改变自己的策略,则该策略组合就是一个纳什均衡。

    2022年10月16日
    4
  • ThreadPoolExecutor详解

    ThreadPoolExecutor详解一、ThreadPoolExecutor类讲解1、线程池状态:五种状态: 线程池的状态 说明 RUNNING 允许提交并处理任务 SHUTDOWN 不允许提交新的任务,但是会处理完已提交的任务 STOP 不允许提交新的任务,也不会处理阻塞队列中未执行的任务, 并设置正在执行的线程的中断标志位 TIDYING .

    2022年7月26日
    22
  • TypeScript–es5中的类,继承,静态方法

    TypeScript–es5中的类,继承,静态方法

    2021年6月30日
    106
  • git拉取代码冲突了怎么解决_github拉取代码慢

    git拉取代码冲突了怎么解决_github拉取代码慢问题描述在idea通过git从develop分支拉取最新代码时,又遇到了git冲突,特此记录一下原因分析:大部分原因都是其他同事更改了某些文件然后本地也更改了同样的文件导致冲突,所以每天上班先拉取一下最新代码,这样会大大减少冲突发生的可能(别问我怎么知道的)解决方案:如下图所示:我们点击merge去合并即可,解决冲突,不建议直接选择acceptyours或者accepttheirs会导致代码覆盖…

    2022年10月20日
    4
  • python strip()方法使用

    python strip()方法使用描述pythonstrip(),用于去除述字符串头尾指定字符(默认为空格或换行符)或字符序列。注意:此方法只能去除头尾的空格或是换行符,不能去除中间的。语法:参数:chars–移除

    2022年7月5日
    23
  • archwing任务流程_机器的武器任务流程

    archwing任务流程_机器的武器任务流程有两台机器 A,B 以及 K 个任务。机器 A 有 N 种不同的模式(模式 0∼N−1),机器 B 有 M 种不同的模式(模式 0∼M−1)。两台机器最开始都处于模式 0。每个任务既可以在 A 上执行,也可以在 B 上执行。对于每个任务 i,给定两个整数 a[i] 和 b[i],表示如果该任务在 A 上执行,需要设置模式为 a[i],如果在 B 上执行,需要模式为 b[i]。任务可以以任意顺序被执行,但每台机器转换一次模式就要重启一次。求怎样分配任务并合理安排顺序,能使机器重启次数最少。输入格

    2022年8月10日
    23

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号