python解析一个dat文件_Python解析微信dat文件的方法
今天打算查看某个微信聊天记录的图片内容。由于发现所有文件记录均为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'C:\Users\zhang\Desktop\dat_dir'
修改转换成png图片后的存放路径
target_path = r'C:\Users\zhang\Desktop\dat_dir\image'
修改加密的异或值
xor_value = 0x5f
findFile(dat_path)
接下来代码在本地运行时,有注释的地方需要自行进行修改。
这里的对 xor_value的具体修改值说明:
——————————————————————————
据说微信图片是用异或值加密?(or转码?)
——————————————————————————
紧跟步骤
首先,在~\WeChat Files目录下的某个文件夹内\Image~目录下的一个名为dat的文件一定是一张图片,默认常见的图像格式包括PNG和JPG。我依次使用十六进制的方法打开了一个PNG格式和一个JPG格式的图像。
图1 PNG16进制
图2 JPG的16进制jpg
强迫症请忽略图片不完全一致
发现 PNG 和 JPG图片格式的文件分别是 “89 50” **“FF D8”**来开头的。
随意打开一个dat文件,同样是16进制格式打开
文件开头为 “a0 87”,于是电脑计算器程序员专用走一波~
PNG XOR
JPG XOR
这个图片基于JPG实施XOR加密,并采用16进制的5F作为密钥。因此,在设置xor_value时应将其设置为0x5f。
至此,本文涉及Python解析微信dat文件的内容已全部介绍完毕。更多相关内容,请参考往期文章或继续阅读本文后方的推荐文章。感谢大家一直以来的支持与关注!
本文标题: Python解析微信dat文件的方法
