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函数学习笔记
Oct 07 Python
Python代码的打包与发布详解
Jul 30 Python
python获取指定时间差的时间实例详解
Apr 11 Python
python爬虫框架talonspider简单介绍
Jun 09 Python
python 日期操作类代码
May 05 Python
Pycharm 设置默认头的图文教程
Jan 17 Python
pyqt5与matplotlib的完美结合实例
Jun 21 Python
python yield关键词案例测试
Oct 15 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
Feb 14 Python
Python递归函数特点及原理解析
Mar 04 Python
使用Python文件读写,自定义分隔符(custom delimiter)
Jul 05 Python
基于python的matplotlib制作双Y轴图
Apr 20 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
全国FM电台频率大全 - 21 海南省
2020/03/11 无线电
PHP数据库开发知多少
2006/10/09 PHP
php+mysql分页代码详解
2008/03/27 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
2019/09/29 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
2019/10/15 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
javascript操作JSON的要领总结
2012/12/09 Javascript
浅谈javascript 迭代方法
2015/01/21 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
Vue2.0实现购物车功能
2017/06/05 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
jquery-ui 进度条功能示例【测试可用】
2019/07/25 jQuery
Angular6使用forRoot() 注册单一实例服务问题
2019/08/27 Javascript
python实现自动发送邮件
2018/06/20 Python
Python基于opencv调用摄像头获取个人图片的实现方法
2019/02/21 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
学习两会精神心得范文
2014/03/17 职场文书
美国留学经济担保书
2014/05/20 职场文书
团干部培训方案
2014/06/03 职场文书
庆六一宣传标语
2014/10/08 职场文书
出纳岗位职责范本
2015/03/31 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书
学生病假条怎么写
2015/08/17 职场文书
解决python3安装pandas出错的问题
2021/05/20 Python
Python Pygame实战在打砖块游戏的实现
2022/03/17 Python
教你在 Java 中实现 Dijkstra 最短路算法的方法
2022/04/08 Java/Android
docker-compose部署Yapi的方法
2022/04/08 Servers