Advertisement

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文件的方法

本文地址: http://www.cppcns.com/jiaoben/python/366738.html

全部评论 (0)

还没有任何评论哟~