使用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 冒泡,选择,插入排序使用实例
Feb 05 Python
Python如何读取MySQL数据库表数据
Mar 11 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
Apr 22 Python
Python对ElasticSearch获取数据及操作
Apr 24 Python
在python里面运用多继承方法详解
Jul 01 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
Oct 23 Python
浅谈python中频繁的print到底能浪费多长时间
Feb 21 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
May 08 Python
Python实现弹球小游戏
Aug 01 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
python 进制转换 int、bin、oct、hex的原理
Jan 13 Python
Python3.8官网文档之类的基础语法阅读
Sep 04 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
Yii1.1框架实现PHP极光推送消息通知功能
2018/09/06 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
2020/04/14 PHP
通过正则格式化url查询字符串实现代码
2012/12/28 Javascript
js数组的操作指南
2014/12/28 Javascript
javascript显示中文日期的方法
2015/06/18 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
layui表格数据复选框回显设置方法
2019/09/13 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
2019/10/24 Javascript
基于vue.js实现购物车
2020/01/15 Javascript
基于vue实现探探滑动组件功能
2020/05/29 Javascript
Python控制多进程与多线程并发数总结
2016/10/26 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
python opencv捕获摄像头并显示内容的实现
2019/07/11 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
详解Python模块化编程与装饰器
2021/01/16 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
英国领先的男装设计师服装购物网站:Mainline Menswear
2018/02/04 全球购物
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
牵手50香港:专为黄金岁月的单身人士而设的交友网站
2020/08/14 全球购物
办公室文秘自我鉴定
2013/09/21 职场文书
12月红领巾广播稿
2014/02/13 职场文书
小学生春游活动方案
2014/08/20 职场文书
员工团队活动方案
2014/08/28 职场文书
幼儿园大班教师随笔
2015/08/14 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
思想品德课教学反思
2016/02/24 职场文书
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server