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实现面向对像的ASP程序实例
Nov 10 Python
介绍Python中内置的itertools模块
Apr 29 Python
python脚本设置系统时间的两种方法
Feb 21 Python
Python黑魔法Descriptor描述符的实例解析
Jun 02 Python
Python增量循环删除MySQL表数据的方法
Sep 23 Python
微信跳一跳python辅助脚本(总结)
Jan 11 Python
python脚本作为Windows服务启动代码详解
Feb 11 Python
使用requests库制作Python爬虫
Mar 25 Python
对python:threading.Thread类的使用方法详解
Jan 31 Python
详解python读取和输出到txt
Mar 29 Python
Python小白不正确的使用类变量实例
May 29 Python
Python中np.random.randint()参数详解及用法实例
Sep 23 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实现mysql事务处理的方法
2014/12/25 PHP
php中PDO方式实现数据库的增删改查
2015/05/17 PHP
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
JavaScript 学习笔记之一jQuery写法图片等比缩放以及预加载
2012/06/28 Javascript
jquery $.each() 使用小探
2013/08/23 Javascript
js获取某元素的class里面的css属性值代码
2014/01/16 Javascript
Jquery实现的角色左右选择特效
2014/05/21 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
Python进程间通信用法实例
2015/06/04 Python
5种Python单例模式的实现方式
2016/01/14 Python
Python如何实现MySQL实例初始化详解
2017/11/06 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
Python中使用filter过滤列表的一个小技巧分享
2020/05/02 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
中学生励志演讲稿
2014/04/26 职场文书
党性分析材料格式
2014/12/19 职场文书
自主招生专家推荐信
2015/03/26 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
Go语言基础函数基本用法及示例详解
2021/11/17 Golang
Apache Pulsar结合Hudi构建Lakehouse方案分析
2022/03/31 Servers
python APScheduler执行定时任务介绍
2022/04/19 Python