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


Posted in Python onNovember 30, 2020

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

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

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

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

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

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

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

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

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

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

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

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

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

异或运算的结果是一个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")

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

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

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

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

参考:https://3water.com/article/200924.htm

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

Python 相关文章推荐
使用python加密自己的密码
Aug 04 Python
浅析python打包工具distutils、setuptools
Apr 20 Python
Python多进程multiprocessing.Pool类详解
Apr 27 Python
Python 存储字符串时节省空间的方法
Apr 23 Python
python实现动态创建类的方法分析
Jun 25 Python
对Python的交互模式和直接运行.py文件的区别详解
Jun 29 Python
关于Python中定制类的比较运算实例
Dec 19 Python
Python实现鼠标自动在屏幕上随机移动功能
Mar 14 Python
如何让PyQt5中QWebEngineView与JavaScript交互
Oct 21 Python
python re模块常见用法例举
Mar 01 Python
python实现求纯色彩图像的边框
Apr 08 Python
深入探讨opencv图像矫正算法实战
May 21 Python
Python 微信公众号文章爬取的示例代码
Nov 30 #Python
python爬虫工具例举说明
Nov 30 #Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
Nov 29 #Python
运行python提示no module named sklearn的解决方法
Nov 29 #Python
基于python的opencv图像处理实现对斑马线的检测示例
Nov 29 #Python
python3实现名片管理系统(控制台版)
Nov 29 #Python
python3实现简单飞机大战
Nov 29 #Python
You might like
Apache2 httpd.conf 中文版
2006/12/06 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
2012/01/10 PHP
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
PHP xpath提取网页数据内容代码解析
2020/07/16 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
js宝典学习笔记(上)
2007/01/10 Javascript
javascript 硬盘序列号+其它硬件信息
2008/12/23 Javascript
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
Javscript删除数组中指定元素并返回新数组
2014/03/06 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
jquery仿百度经验滑动切换浏览效果
2015/04/14 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
简介JavaScript中的unshift()方法的使用
2015/06/09 Javascript
JavaScript地理位置信息API
2016/06/11 Javascript
jQuery事件对象总结
2016/10/17 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
解决Layui 表单提交数据为空的问题
2018/08/15 Javascript
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
Python脚本实现网卡流量监控
2015/02/14 Python
Python实现文件信息进行合并实例代码
2018/01/17 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
浅谈tensorflow 中的图片读取和裁剪方式
2020/06/30 Python
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
十佳青年个人事迹材料
2014/01/28 职场文书
个人作风剖析材料
2014/02/02 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
班级元旦晚会开幕词
2015/01/29 职场文书
Win11软件图标固定到任务栏
2022/04/19 数码科技
Nginx如何配置根据路径转发详解
2022/07/23 Servers