使用python将微信image下.dat文件解密为.png的方法

 更新时间:2020年11月30日 08:51:08   作者:Zhanglw882  
这篇文章主要介绍了使用python将微信image下.dat文件解密为.png的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

用清理软件清理电脑垃圾的时候,发现微信存了很多图片,进入路径一看,全是以.dat为格式的文件:

微信图片储存的格式

尝试了直接把后缀名的.dat 改 .jpg和.png,都打不开,感觉事情没那么简单,随后立刻度娘了一下,并找到了代码。下面一步一步的来看一下。

微信客户端保存的路径一般是这样的,相信你能找到。
F:\Users\Tencent Files\WeChat Files\wxid_\FileStorage\Image\2020-11

在这里插入图片描述

就可以发现里面保存了一堆.dat格式的东西,微信保存的这个格式是16进制存储的,所以需要一个可以查看16进制的软件,如果你有就更好了,没有的话推荐一个:微软出的文本编辑器,官方链接:https://www.ultraedit.com/

在这里插入图片描述

用它就可以打开我们的.dat文件。打开后就可以看到是这个样子的,注意图中标红的位置,就是这个文件的开头部分,你会发现你不管打开哪个.dat文件,开头的四个数都是一样的(你的4个数可能和我的不一样,很正常,就像微信号一样,但是你的.dat文件都是以特定的4位数字开头)。这四个数相当于一把解锁的钥匙。

在这里插入图片描述

我们用能打开16进制的软件打开.jpg时,会发现.jpg的格式都是以FFD8为开头的,同样.png的也是FFD8。

在这里插入图片描述

用你的4位数钥匙与FFD8做异或运算,就能得到你的解锁密码:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

异或运算的结果是一个16进制的4位数,但是我们只需要最后两位。所以最终你得到的是一个16进制的两位数。记住它,后面要用的。

准备工作到这里就结束了,接下来就是代码,用的python语言。
需要你改的地方有三个(代码中有相应的注释):
两个路径:将.dat的路径、你要保存解密后文件的路径都改为你自己的;
一个值:用你自己的密码(两位数)代替我的密码。

import os

def imageDecode(dat_dir,dat_file_name):
 dat_read = open(dat_dir, "rb")
 if not os.path.exists(target_path):
 os.makedirs(target_path)
 out=target_path+"\\"+dat_file_name+".png"
 png_write = open(out, "wb")
 for now in dat_read:
 for nowByte in now:
 newByte = nowByte ^ xor_value
 png_write.write(bytes([newByte]))
 dat_read.close()
 png_write.close()

def findFile(dat_path):
 fsinfo = os.listdir(dat_path)
 for dat_file_name in fsinfo:
 temp_path = os.path.join(dat_path, dat_file_name)
 if not os.path.isdir(temp_path):
 #print('文件路径: {}' .format(temp_path))
 imageDecode(temp_path,dat_file_name)
 else:
 pass
  
if __name__=='__main__':

 # 修改.dat文件的存放路径
 dat_path = r'F:\Users\Tencent Files\WeChat Files\wxid\FileStorage\Image\2020-04'
 
 # 修改转换成png图片后的存放路径
 target_path = r'F:\Users\Tencent Files\WeChat Files\image'
 
 # 修改加密的异或值,比如说我的异或值最后两位是B2,则xor_value = 0xB2,0x表示16进制
 xor_value = 0xB2
 
 findFile(dat_path)
 print("end")

运行后,可以看到输出都是一个有一个图片,直观明了,就可以保存自己想要的图片,清理不需要的:

在这里插入图片描述

最后,我对比了一下解密前后的空间占用情况,占用空间的完全相同,不知道为啥腾讯要以.dat文件存储。

左图为.dat,右图为.png

参考:https://www.jb51.net/article/200924.htm

到此这篇关于使用python将微信image下.dat文件解密为.png的方法的文章就介绍到这了,更多相关python 微信image .dat文件解密为.png内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例

    Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例

    这篇文章主要介绍了Python数据结构与算法之图的最短路径(Dijkstra算法),结合完整实例形式分析了Python图的最短路径算法相关原理与实现技巧,需要的朋友可以参考下
    2017-12-12
  • python3实现ftp服务功能(服务端 For Linux)

    python3实现ftp服务功能(服务端 For Linux)

    这篇文章主要介绍了python3实现ftp服务功能,服务端 For Linux,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • python实现趣味图片字符化

    python实现趣味图片字符化

    这篇文章主要为大家详细介绍了python实现趣味图片字符化,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • 详解Python如何使用并发模型编程

    详解Python如何使用并发模型编程

    这篇文章主要为大家详细介绍了如何让 Python 能够同时处理多个任务,即如何使用并发模型编程,文中的示例代码讲解详细,需要的可以参考一下
    2023-05-05
  • Python中WebService客户端接口调用及身份验证的问题

    Python中WebService客户端接口调用及身份验证的问题

    这篇文章主要介绍了Python中WebService客户端接口调用及身份验证的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Python requests模块session代码实例

    Python requests模块session代码实例

    这篇文章主要介绍了Python requests模块session代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Python并行分布式框架Celery详解

    Python并行分布式框架Celery详解

    今天小编就为大家分享一篇关于Python并行分布式框架Celery详解的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Python中decimal.Decimal类型和float类型的比较

    Python中decimal.Decimal类型和float类型的比较

    这篇文章主要介绍了Python中decimal.Decimal类型和float类型的比较,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 如何使用Python进行OCR识别图片中的文字

    如何使用Python进行OCR识别图片中的文字

    这篇文章主要介绍了使用Python进行OCR识别图片中的文字 ,本文通过实例代码加文字说明的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • python使用pandas库导入并保存excel、csv格式文件数据

    python使用pandas库导入并保存excel、csv格式文件数据

    CSV格式文件很方便各种工具之间传递数据,平时工作过程之中会将数据保存为CSV格式,这篇文章主要介绍了python使用pandas库导入并保存excel、csv格式文件数据的相关资料,需要的朋友可以参考下
    2017-12-12

最新评论