怎么寻找微信撤回的图片

news/2024/7/20 0:51:36 标签: 数据库, 小程序, 前端

1 回顾

自从发布文章“寻找微信撤回的图片”之后,骗了不少粉啊。

总之,之前提出了一种可以找到微信撤回图片的方法。

2 真相

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

2.1 PC端

微信所有接收到的图片都储在[X]:\Users[USER]\Documents\WeChat Files[WECHAT_USER]\Data。里面有一堆以.dat为后缀的文件,他们大小不一,都经过了加密。而加密的方法便是对字节逐一“异或”。

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

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

其实,我们无需关心magic码的计算方式。因为,我们可以肯定的是,.dat文件是图片,而对于JPEG的图片,其对应二进制的第一个字节是0xFF。

所以,问题变成了,已知:.dat文件对应二进制的第一个字节 = 0xFF ^ magic码,求magic码。

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

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

修改后的解密代码:

2.2 手机端(Android)

之前提到,/sdcard/tencent/MicroMsg/diskcache中存放类似cache.data.10的文件,大小在2MB左右。如果把文件后缀改为.jpg,是可以打开的,JPEG文件里实际上是“串联”了一堆图片,可以通过以下代码把所有的图片拆分出来:

通过实验,发现这些拆分出来的图片并不包含撤回的图片。坏消息是,在手机端没有找到撤回的图片。好消息是,在微信的缓存文件夹里找到了撤回图片的“缩略图”。肯定是没有大图好看啦,但是如果我们早些年看过一种3GP格式的视频的话,这些缩略图的品质还是可以接受的。至少能知道对方发的是什么。

路径为:/sdcard/tencent/MicroMsg/[USER_HASH]/image2/[HASH1]/[HASH2]/th_[HASH],比如这样:/sdcard/tencent/MicroMsg/202cb962ac59075b964b07152d234b70/image2/6b/3a/th_c4ca4238a0b923820dcc509a6f75849b。给文件名加上.jpg后缀就可以打开啦。

由于缓存文件夹里的文件非常多,建议根据修改时间来定位HASH1和HASH2。

3 并不神奇的0x51

之前说的最大的一个bug是,对于PC端图片的加密,工程师选择了一个神奇的数字0x51与各个字节进行异或。而且我还自圆其说了,说什么0x51是“Q”的ASCII码。为啥选择“Q”呢,因为“QQ”。

不忍直视啊,上面已经解释了,magic码并不固定。最后献上修改后的微信图片解密、找回撤回的图片工具:http://www.sdxlp.cn/tool/wechatdat 。


http://www.niftyadmin.cn/n/1738082.html

相关文章

张孝详javascript讲座笔记四

一&#xff0c;全局变量和局部变量的比较 <script type"text/javascript"><!--var msg 全局变量;function show(){msg 局部变量; //修改全局变量的值}show();alert(msg); //此时的值为‘局部变量’//--></script> <script type"text/jav…

继微信dat之后的PC端微信解密后数据库数据抽取

前段时间弄了下微信的dat图片的解码&#xff0c;后续有同学问数据库的解码怎么弄.. 当然&#xff0c;后边陆陆续续的看了下&#xff0c;加上住院乱七八糟的事情&#xff0c;一直没处理&#xff0c;最近几天处理了下&#xff0c;发现微信数据库的数据格式是真的麻烦... 如何查看…

张孝详javascript讲座笔记五

一&#xff0c;javascript中的对象 。对象和对象实例 1&#xff0c;对象是对某一类事物的描述&#xff0c;是抽象上的概念&#xff0c;而对象实例是一类事物中的具体个例。&#xff08;这里对象相当于java&#xff0c;c中的类的概念&#xff09; 2&#xff0c;能够被用来创建…

python微信图片dat转码

微信dat转码看这里 http://sdxlp.cn/tool/wechatdat 环境 Python 3.6.3 模块 os 工具 程序员计算器 目的 通过python 实现电脑版微信中图片转码&#xff08;原.dat转成JPG&#xff09; 示例图 分析 微信图片是用异或值加密 1.先用工具打开.bat文件&#xff0c;但会看…

电脑端微信文件的存储位置在哪?

在微信聊天中会产生很多文件&#xff0c;首先微信的文件存放位置&#xff1a; (默认情况下) c:/users/administrator/document/wechat files/xxx/ 以下所有文件截图都是从这个父级目录开始的。 示例图 Backup/BackupFiles : 是备份存储&#xff0c;PC软件可以进行备份&#xf…

张孝详javascript讲座笔记六(结局篇)

一&#xff0c;javascript的内部对象&#xff08;相当于系统调用&#xff0c;其实本质是一个构造函数&#xff09; 1&#xff0c;动态对象 使用“对象实例名.成员”的格式来访问其属性和方法。&#xff08;用new先创建对象实例&#xff09; 2&#xff0c;静态对象 直接使用“…

微信电脑版聊天图片DAT格式转为普通JPG图片

微信是我们现在最常用的社交软件之一&#xff0c;它的功能越来越强大&#xff0c;我们的手机运行越来越慢。我们手机的运行内存越来越大的原因就是软件的功能越来越多&#xff0c;我们在使用这些功能的时候就会产生越来越多的无用垃圾&#xff0c;处理这种问题只有3种方法。 1.…

微信聊天记录加密图片还可查看??

微信聊天记录加密图片查看 通常聊天窗口收到的照片 在PC端会被加密后保存为 dat 文件 发现一款软件直接支持查看dat文件 不用登录微信在线解码的地址&#xff1a; 登陆http://www.sdxlp.cn/tool/wechatdat 好不好用&#xff0c;试试再说。 就可以查看存在本地 任何账号…