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

作者:Zhanglw882 时间:2022-11-12 06:39:38 

用清理软件清理电脑垃圾的时候,发现微信存了很多图片,进入路径一看,全是以.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://www.jb51.net/article/200924.htm

来源:https://blog.csdn.net/Zhanglw882/article/details/110221075

标签:python,.dat文件,解密,.png
0
投稿

猜你喜欢

  • Python中的asyncio代码详解

    2022-03-14 00:01:33
  • python time.sleep()是睡眠线程还是进程

    2022-04-09 17:33:16
  • Python利用OpenCV和skimage实现图像边缘检测

    2023-01-27 01:08:43
  • 一文了解Python 流程控制

    2021-01-27 18:37:28
  • Python smallseg分词用法实例分析

    2023-02-09 01:04:26
  • 颜色渐变效果

    2013-07-13 14:14:52
  • Python 面向对象编程的三大特性之继承

    2021-08-18 18:19:04
  • 修炼设计能力的土办法

    2008-07-16 10:34:00
  • python使用urlparse分析网址中域名的方法

    2022-12-06 01:00:59
  • Python简单遍历字典及删除元素的方法

    2021-12-31 08:57:51
  • Python pandas的八个生命周期总结

    2023-02-08 17:01:04
  • 浅谈DataFrame和SparkSql取值误区

    2021-03-21 22:04:18
  • Python绘制正二十面体图形示例

    2022-01-10 18:27:08
  • 关于MySQL中隐藏空间的问题

    2009-07-30 08:15:00
  • python实现拼图小游戏

    2023-05-14 14:54:15
  • 浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点

    2023-12-10 09:54:31
  • 几个ASP字符串处理函数

    2008-04-23 12:55:00
  • 详解Bagging算法的原理及Python实现

    2021-06-10 00:20:41
  • PHP的HTTP客户端Guzzle简单使用方法分析

    2023-07-16 05:58:56
  • 轻松掌握 MySQL的数字类型以及建库策略

    2008-11-27 16:09:00
  • asp之家 网络编程 m.aspxhome.com