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版微信红包分配算法
May 04 Python
用Python写脚本,实现完全备份和增量备份的示例
Apr 29 Python
python 信息同时输出到控制台与文件的实例讲解
May 11 Python
Python面向对象之静态属性、类方法与静态方法分析
Aug 24 Python
对pyqt5中QTabWidget的相关操作详解
Jun 21 Python
关于Pytorch的MNIST数据集的预处理详解
Jan 10 Python
Python模块future用法原理详解
Jan 20 Python
python打印文件的前几行或最后几行教程
Feb 13 Python
使用python实现时间序列白噪声检验方式
Jun 03 Python
浅析Python __name__ 是什么
Jul 07 Python
使用py-spy解决scrapy卡死的问题方法
Sep 29 Python
python 实现音频叠加的示例
Oct 29 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开发GUI
2006/10/09 PHP
php 操作调试的方法
2012/07/12 PHP
PHP检测移动设备类mobile detection使用实例
2014/04/14 PHP
php使用post数组的键值创建同名变量并赋值的方法
2015/04/03 PHP
PHP全局变量与超级全局变量区别分析
2016/04/01 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
2009/12/02 Javascript
情人节之礼 js项链效果
2012/02/13 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
基于bootstrap风格的弹框插件
2016/12/28 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
基于Vue-cli快速搭建项目的完整步骤
2018/11/03 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
python 禁止函数修改列表的实现方法
2017/08/03 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
利用Django-environ如何区分不同环境
2018/08/26 Python
Python连接Redis的基本配置方法
2018/09/13 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
python虚拟环境模块venv使用及示例
2020/03/04 Python
Pytorch转tflite方式
2020/05/25 Python
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
Carter’s官方旗舰店:美国受欢迎的婴童服装品牌
2018/01/21 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
防邪知识进家庭活动方案
2014/08/26 职场文书
南京导游词
2015/02/03 职场文书
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis
zabbix agent2 监控oracle数据库的方法
2021/05/13 Oracle
如何利用Python实现n*n螺旋矩阵
2022/01/18 Python
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python