电脑端微信用户图片DAT格式解码为图片 |
您所在的位置:网站首页 › 微信里面的image文件夹的图片看不了 › 电脑端微信用户图片DAT格式解码为图片 |
电脑硬盘空间被大量占用发现是微信自己账号下的Image文件夹引起的,因不清楚里面的图片有些是否有用。想逐一整理清理。 进去后发现都是dat格式,无法打开。修改后缀后仍无法打开,被加密了。 二进制方式打开文件后发现是这样的规律。通过异或运算加密了。 jpg: ff d8 ff e0 20 10 4a 46 49 46 20 01 01 加密后: 17 30 17 08 e8 f8 a2 ae a1 ae e8 e9 e9 png: 89 50 4e 47 0d 0a 1a 0a 20 20 20 0d 加密后: 61 b8 a6 af e5 e2 f2 e2 e8 e8 e8 e5解码代码如下(批量操作): #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 功能:电脑端微信用户图片DAT格式转化为图片 环境:python3.7 日期:2019/12/31 22:28 作者:指尖魔法师 版本:1.0 """ import os def main(): indir = r'G:\wx\2019-06' outdir = r'G:\wx\out2019-06' # 获取文件夹下所有文件 infiles = os.listdir(indir) # 计数成功的文件个数 count = 0 # 循环每个文件进行判断、转换 for infile in infiles: # 获取文件名 filename = infile[0:infile.find('.')] # 二进制读取文件 f1 = open(os.path.join(indir, infile), 'rb') infilebytes = f1.read() newfile = [] # 判断图片类型JPG,通过异或判定 if (infilebytes[0] ^ 0xFF) == (infilebytes[1] ^ 0xD8): y1 = infilebytes[0] ^ 0xFF print('%s,文件是JPG图片,每个字节是根据0x%X异或进行加密' % (infile, y1)) # 字节进行异或转换,组合成新的文件 for i in infilebytes: newbyte = i ^ y1 newfile.append(newbyte) newfile2 = bytes(newfile) # 写入新文件 f2 = open(os.path.join(outdir, filename+'.jpg'), 'wb') f2.write(newfile2) count += 1 # 判断图片类型PNG,通过异或判定 elif (infilebytes[0] ^ 0x89) == (infilebytes[1] ^ 0x50): y1 = infilebytes[0] ^ 0x89 print('%s,文件是PNG图片,每个字节是根据0x%X异或进行加密' % (infile, y1)) for i in infilebytes: newbyte = i ^ y1 newfile.append(newbyte) newfile2 = bytes(newfile) f2 = open(os.path.join(outdir, filename+'.png'), 'wb') f2.write(newfile2) count += 1 # 判断图片类型GIF,通过异或判定 elif (infilebytes[0] ^ 0x47) == (infilebytes[1] ^ 0x49): y1 = infilebytes[0] ^ 0x47 print('%s,文件是GIF图片,每个字节是根据0x%X异或进行加密' % (infile, y1)) for i in infilebytes: newbyte = i ^ y1 newfile.append(newbyte) newfile2 = bytes(newfile) f2 = open(os.path.join(outdir, filename+'.gif'), 'wb') f2.write(newfile2) count += 1 else: print('%s无法识别的类型!' % infile) print('识别出图片%d张' % count) if __name__ == '__main__': main()运行结果:
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |