Python解析微信dat文件的方法


Posted in Python onNovember 30, 2020

今天想查看某个微信聊天记录的图片内容,查看文件记录全部是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文件一定是图片,常用的图片格式为 PNGJPG!我分别用十六进制方式打开了一张PNG和JPG的图片

Python解析微信dat文件的方法

图1 PNG16进制

Python解析微信dat文件的方法

图2 JPG的16进制jpg

强迫症请忽略图片不完全一致

发现 PNGJPG图片格式的文件分别是 “89 50” **“FF D8”**来开头的。

随意打开一个dat文件,同样是16进制格式打开

Python解析微信dat文件的方法

文件开头为 “a0 87”,于是电脑计算器程序员专用走一波~

Python解析微信dat文件的方法

PNG XOR

Python解析微信dat文件的方法

JPG XOR

这个图片是针对于JPG来进行的一个XOR加密,并且加密用的16进制 5F。因此 xor_value*值填写0x5f

到此这篇关于Python解析微信dat文件的文章就介绍到这了,更多相关Python微信dat文件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现Tab自动补全和历史命令管理的方法
Mar 12 Python
Python itertools模块详解
May 09 Python
python实现list元素按关键字相加减的方法示例
Jun 09 Python
使用Django Form解决表单数据无法动态刷新的两种方法
Jul 14 Python
django将图片上传数据库后在前端显式的方法
May 25 Python
搞清楚 Python traceback的具体使用方法
May 13 Python
python3使用print打印带颜色的字符串代码实例
Aug 22 Python
python 画函数曲线示例
Dec 04 Python
TensorFlow实现指数衰减学习率的方法
Feb 05 Python
在python中利用pycharm自定义代码块教程(三步搞定)
Apr 15 Python
Python网络爬虫四大选择器用法原理总结
Jun 01 Python
Python尝试实现蒙特卡罗模拟期权定价
Apr 21 Python
Python应用自动化部署工具Fabric原理及使用解析
Nov 30 #Python
使用python将微信image下.dat文件解密为.png的方法
Nov 30 #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
You might like
php做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
使用php转义输出HTML到JavaScript
2015/03/27 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
PHP生成指定范围内的N个不重复的随机数
2019/03/18 PHP
javascript仿qq界面的折叠菜单实现代码
2012/12/12 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
2014/02/12 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
SyntaxHighlighter 3.0.83使用笔记
2015/01/26 Javascript
第十章之巨幕页头缩略图与警告框组件
2016/04/25 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
JavaScript forEach中return失效问题解决方案
2020/06/01 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
python time模块用法实例详解
2014/09/11 Python
Python open()文件处理使用介绍
2014/11/30 Python
Python中exit、return、sys.exit()等使用实例和区别
2015/05/28 Python
详解 Python 读写XML文件的实例
2017/08/02 Python
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
python实现控制COM口的示例
2019/07/03 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
Python连接mysql方法及常用参数
2020/09/01 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
HearthSong官网:儿童户外玩具、儿童益智玩具
2017/10/16 全球购物
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
疾病捐款倡议书
2014/05/13 职场文书
2014年行政部工作总结
2014/11/19 职场文书
民事答辩状范本
2015/05/21 职场文书
建国大业观后感
2015/06/01 职场文书
Python WSGI 规范简介
2021/04/11 Python
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python
python自动化操作之动态验证码、滑动验证码的降噪和识别
2021/08/30 Python
css样式important规则的正确使用方式
2022/06/10 HTML / CSS