Bugku FileStoragedat详解 MISC

news/2024/11/20 15:39:27/

文章目录

  • 一、题目
  • 二、思路
    • 1、知识点
  • 三、复现
    • 1、利用工具
    • 2、利用脚本
  • 四、总结

一、题目

在这里插入图片描述
点击下载后,一个名伪keli.dat的文件。
在这里插入图片描述

二、思路

下载完成后,我们利用winhex打开该文件,并没有发现有价值的信息。然后通过该后缀名为jpg、avi等格式也行不通。
重新读题,题目是 FileStoragedat,有经验的小伙伴可能会知道, FileStorage是微信存储数据的一个文件夹,该文件加下存放的是经过加密后微信中发送、接受的图片而形成的文件后缀为dat的文件。就是微信dat文件。想要做出这到题来,就得先弄懂微信dat文件形成的原因。

1、知识点

微信dat文件

微信的dat文件,将微信图片的每个字节通过异或运算后,保存为dat后缀名存储方式。以这到题为例,我们进行讲解。

  1. 首先我们用winhex等二进制查看工具打开该图片。图片左边的字节为17CE。
    在这里插入图片描述
  2. 这个17CE是重点,我们现在知道图片经过异或运算后,得到的结果是17CE,那么我们这里使用常见的几种图片格式进行逆推。
    大概公式:文件头 XOR 17CE = 两个相同的字节。

下图为常见的几种图片文件头格式

后缀名文件头
JPGFF D8 FF
PNG89 50 4E 47
BMP42 4D
GIF47 49 46 38
ZIP504B0304
RAR52617221
AVI41564920

先以jpg图片格式为例。打开计算器,并调制程序员模式,进行异或运算,输入FFD8 XOR 17CE运算后的结果是E816,先然,每个字节和17CE进行异或运算,应该相等才对。所以这张图片并不是jpg格式。

在这里插入图片描述
我们以PNG文件头格式为例。png文件头为8950,dat文件头为17CE。经过异或运算后,得到的结果是9E9E。说明原图的每一个字节同9E进行异或运算后得到的字节保存后,就是dat文件。
在这里插入图片描述
3. 已知dat文件所有字节,已知异或运算字节为9E,所以将这个dat文件的每个字节和9E进行异或运算后,就会得到一张PNG的图片了。思路有了我们进行复现。

三、复现

1、利用工具

一个大佬写的工具:
https://github.com/PiaoZhenJia/WeChatDatFileDecoder

  1. 文件下载完毕后,进入bin/debug/路径。运行WpfApp1.exe
    在这里插入图片描述
  2. 手动输入要进行解码的dat文件路径。手动输入文件解码后的保存路径。点击开始转换。
    在这里插入图片描述
  3. 会得到一个png结尾的图片,打开后为flag。
    在这里插入图片描述
    在这里插入图片描述
    flag:bugku{WeChatwithSteg0}

2、利用脚本

想要成为一名合格的黑客,必须要学会编程,拒绝做脚本小子。我很菜,但是也在不断学习,这里借鉴一个大佬的脚本。

# -*- coding: utf-8 -*-
# @Time    : 3/27/2019 21:54
# @Author  : MARX·CBR
# @File    : 微信Dat文件转图片.pyimport osdef imageDecode(f,fn):dat_read = open(f, "rb")out='P:\\'+fn+".png"png_write = open(out, "wb")for now in dat_read:for nowByte in now:newByte = nowByte ^ 0x36png_write.write(bytes([newByte]))dat_read.close()png_write.close()def findFile(f):fsinfo = os.listdir(f)for fn in fsinfo:temp_path = os.path.join(f, fn)if not os.path.isdir(temp_path):print('文件路径: {}' .format(temp_path))print(fn)imageDecode(temp_path,fn)else:...path = r'C:\Users\输入自己微信存储路径\Data'
findFile(path)
复制代码

四、总结

1、微信dat文件的生成原理。
2、利用工具解码。
3、利用脚本解码。


http://www.ppmy.cn/news/140690.html

相关文章

戴尔XPS 8960台式机 评测

配置方面,XPS 8960 搭载了最新的 i9-13900K 24 核处理器,显卡为 RTX 4080,配备 32GB 内存、1TB SSD 和 2TB 机械硬盘。 扩展性方面,这款台式机最高支持 64GB DDR5 内存,拥有两个 M.2 插槽和两个 3.5 英寸硬盘位。 戴尔…

Springboot 2.6 + Mybatis Plus 3.5 集成 Sharding-jdbc 5.1 分库分表

文章目录 1 摘要2 Maven 核心依赖3 核心配置3.1 公共配置3.2 只分表,不分库3.3 分库,不分表3.4 分库分表 4 核心代码4.1 实体类4.2 DAO 层4.3 Service 层4.4 控制层4.5 SpringBoot 启动类 5 测试5.1 只分表,不分库5.1.1 插入数据5.1.2 查询单条5.1.3 分页查询 5.2 只分库&#…

matlab学习笔记(一)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 matlab学习笔记(一) 一、matlab简介matlab的主要特点 二、matlab的基本语法三、matlab的常用运算符matlab特殊变量和常量变量的命名规则 四、matlab的…

PNG文件格式详解

概述 PNG是20世纪90年代中期开始开发的图像文件存储格式,其目的是替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。流式网络图形格式(Portable Network Graphic Format,PNG)名称来源于非官方的“PNG’s Not GIF”&#xff0c…

戴尔外星人戴尔外星人Alienware m15R7原厂预装win11中文家庭版系统带F12 Support Assist OS Recovery一键还原恢复功能

戴尔外星人戴尔外星人Alienware m15R7原厂预装win11中文家庭版系统带F12 Support Assist OS Recovery一键还原恢复功能 恢复各机型预装系统,带所有dell主题壁纸、dell软件驱动、带戴尔SupportAssist OS Recovery恢复功能,一次性恢复成新机状态&#xff…

LabVIEW实现MODBUS协议CRC的计算

MODBUS协议是广泛用于工业控制的通讯协议,通讯协议的报文如:01 06 07D0 01F4 8950,可以分为以下部分: 项目Value从机地址01功能号06数据地址07D0数据01F4CRC8950 CRC算法部分: 输出结果为: 根据CRC计算…

AD9850

AD9850内部具有高精度的D/A转换器和比较器。 只要提供一个准确的时钟参考频率,AD9850就能输出一个纯净的频率和相位可编程的正弦波。 CLKIN:参考时钟输入。 Rset: 管脚与地之间的电阻决定了芯片内部的DAC最大输出电流。 AGND:模拟地; DGND:数…

Intel® QAT加速卡之性能简介

Intel QuickAssist Adapter 8950 设备简介 支持英特尔QuickAssist技术的英特尔QuickAssist适配器提供加密加速和压缩加速服务。 1. Key features Intel 的QAT技术支持IPsec, SSL协议的加解密加速和数据压缩服务。Intel DH8955控制器具有良好的可扩展性能支持SR-IOV…