BugkuCTF-MISC题FileStoragedat

知识点

FileStorage是微信存储数据的一个文件夹,该文件夹下存放的是经过加密后微信里发送、接受的图片而形成的文件后缀为dat的文件。就是微信dat文件。想要做出此题,就得先弄懂微信dat文件形成的原因。

微信的dat文件,将微信图片的各字节通过异或运算后,保存为dat后缀名存储方式。

解题流程

点击下载后,
打开,一个名伪keli.dat的文件

首先我们用winhex等二进制查看工具打开该图片。图片左边的字节为17CE。
在这里插入图片描述
这个17CE是重点,我们现在知道图片经过异或运算后,得到的结果是17CE,那么我们这里使用常见的几类图片格式进行逆推。

大概公式:文件头 XOR 17CE = 两个相同的字节。

下图为常见的几类图片文件头格式
后缀名 文件头
JPG FF D8 FF
PNG 89 50 4E 47
BMP 42 4D
GIF 47 49 46 38
ZIP 50 4B 03 04
RAR 52 61 72 21
AVI 41 56 49 20

先以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
文件下载完毕后,进入bin/debug/路径。运行WpfApp1.exe
在这里插入图片描述
手动输入要进行解码的dat文件路径。手动输入文件解码后的保存路径。点击开始转换。
在这里插入图片描述
会得到一个png结尾的图片,打开后为flag。
在这里插入图片描述
得到flag

方法二:
最好能通过脚本解码dat

import 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)   #os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。for fn in fsinfo:temp_path = os.path.join(f, fn)   #python路径拼接os.path.join()函数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)"""
os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
它不包括 . 和 .. 即使它在文件夹里。
"""

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524931.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jq之语法

语法:$(selector).action() 例子: $(this).hide(); 隐藏当前元素 $("p").hide(); 隐藏所有段落 $("p.test").hide();隐藏所有class"test"的段落 $("#test").hide();隐藏所有id"test"的元素 2.防…

官宣!张小龙史上最长演讲 4小时3万字完整版回应微信的一切

戳蓝字“CSDN云计算”关注我们哦!文章来自:腾讯科技(ID:qqtech)腾讯科技讯 1月9日消息,在今日举行的2019微信公开课PRO的微信之夜上,腾讯公司高级执行副总裁、微信事业群总裁张小龙做了他自己有史以来最长的一次演讲&a…

C语言 空指针 NULL - C语言零基础入门教程

目录 一.指针简介二.空指针 NULL三.关于 NULL 和 0四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.指针简介 在前面的文章有关于指针的介绍:指针很灵活,它可以指向任意类型的数据。指针的类型说明了它所指向地址空间…

Python os模块相关简介

Python里os.path.isdir()等函数的作用和用法 一 用法和概念: Python里的os模块用于和系统进行交互,其里: 1 os.listdir()用于返回一个由文件名和目录名组成的列表,需要注意的是它接收的参数需要是一个绝对的路径。 …

jq之元素选择器

1.$("p")选取所有<p>元素 2.$("#test")选取id为test的元素&#xff0c;因id是唯一的选的就是唯一的 3.$(".test")选取class为test的所有元素 4.css选择器 $("p").css("color","red");把所有p元素的颜色…

C语言 void 指针 - C语言零基础入门教程

目录 一.指针简介二.空指针 NULL三.void 指针四.重点总结五.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.指针简介 在前面的文章有关于指针的介绍&#xff1a;指针很灵活&#xff0c;它可以指向任意类型的数据。指针的类型说明了它所指向地…

有问有答 | 容器精华问答,如何玩转容器服务?

戳蓝字“CSDN云计算”关注我们哦&#xff01;容器这个词&#xff0c;当你第一眼看它或许脑子里是这东西&#xff1a;瓶瓶罐罐、装水、装其他东西的玩意。不管是什么&#xff0c;总的来说&#xff0c;容器给人第一印象就是——“装”。容器技术作为近两年热门的话题&#xff0c;…

BugkuCTF-WEB题文件上传

启动场景 发现是文件上传 只能上传图像&#xff0c;不能上传PHP文件&#xff0c;那应该是寻找漏洞上传PHP文件 PHP文件里写入一句话木马 <?php eval($_POST[caidao]);?> 使用burp抓包&#xff0c;不断尝试发现发现需要修改的地方有三个&#xff1a; 一个是http head里…

jq之$(“*“)隐藏所有元素

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>点击p段落&#xff0c;把它们隐藏</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js">&…

C语言 野指针 - C语言零基础入门教程

目录 一.简介二.野指针产生的原因 1.指针变量未初始化2.指针释放后之后未置空 三.避免野指针产生 1.初始化时置 NULL2.释放时置 NULL 四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.简介 野指针就是指针指向的位置是不可知的&#xff08;随…

阿里云获ITSS最高等级认证:公共云、专有云服务能力双一级

近日&#xff0c;阿里云在由ITSS&#xff08;中国电子工业标准化技术协会信息技术服务分会&#xff09;颁发的云计算服务能力标准评选中获公共云、专有云双一级资质&#xff0c;这也是该标准评选中的最高等级。 云计算服务能力评估由工信部信软司牵头&#xff0c;委托ITSS围绕…

C语言 函数声明和定义 - C语言零基础入门教程

目录 一.简介二.函数返回值 1.函数没有返回值2.函数有返回值 三.函数参数 1.函数没有参数2.函数有固定参数3.函数有不定长度参数 四.函数声明和定义 1.函数声明&#xff1a;不需要实现这个函数的功能2.函数定义&#xff1a;必须实现这个函数的功能 五.猜你喜欢 零基础 C/C 学习…

jq之$(“p.test“)

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

C语言 函数声明和调用 - C语言零基础入门教程

目录 一.简介二.函数声明和定义 1.函数声明&#xff1a;不需要实现这个函数的功能2.函数定义&#xff1a;必须实现这个函数的功能 三.函数调用四.函数形参和实参五.猜你喜欢 零基础 Python 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.简介 回顾以下学习C 语言的…

jq之$(“p:first“)

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

要闻君说:IBM最新量子计算机真真像个艺术品!鹅厂正式成立了自己的技术委员会哇!联想竟然也试着做了一款智能闹钟?...

关注并标星星CSDN云计算每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 嗨&#xff0c;大家好&#xff01;盼望着、盼望着&#xff0c;周五已到&#xff01;今天又有什么新鲜事儿呢&#xff1f;依旧抢先听个歌曲陶冶下&#xff0c;再容头条君慢慢道来&am…

C语言 函数值传递和址传递 - C语言零基础入门教程

目录 一.简介 1.函数声明&#xff1a;不需要实现这个函数的功能2.函数定义&#xff1a;必须实现这个函数的功能3.函数调用&#xff1a;调用之前必须先声明或者定义 二.函数值传递三.函数址传递四.函数值传递和址传递区别五.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 &…

jq之$(“ul li:first“)

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

Spring中的9种设计模式汇总

戳蓝字“CSDN云计算”关注我们哦&#xff01;文章来自&#xff1a;Java和Android架构1. 简单工厂又叫做静态工厂方法&#xff08;StaticFactory Method&#xff09;模式&#xff0c;但不属于23种GOF设计模式之一。简单工厂模式的实质是由一个工厂类根据传入的参数&#xff0c;动…

C语言 函数缺省参数 - C语言零基础入门教程

目录 一.函数简介 1.函数声明2.函数定义3.函数调用4.函数形参和实参 二.函数缺省参数 1.函数全缺省参数2.函数半缺省参数 三.注意事项四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.函数简介 1.函数声明 函数声明只是一个空壳&#xff0c…