BugkuCTF-MISC题FileStoragedat

本文解析了微信dat文件的加密原理,通过异或运算逆推出常见图片格式,演示如何使用工具解码并复现过程,揭示了如何将dat转回PNG图片获取关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

知识点

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 os

def 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 ^ 0x36
            png_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() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
它不包括 . 和 .. 即使它在文件夹里。
"""
<think>嗯,用户想在Windows系统的腾讯云服务器上搭建frp,存放路径是C:\FrpHelp1.0\FrpHelp。我需要详细说明配置步骤。首先,frp需要服务端和客户端,用户可能用的是腾讯云作为服务端?或者客户端?可能用户是想让腾讯云服务器作为服务端,但通常内网穿透是让云服务器作为服务端,内网机器作为客户端。不过用户提到的是在Windows腾讯云服务器上搭建,可能用户是想让这台服务器作为客户端,连接另一个服务端?或者反过来? 需要先确认用户的具体场景。不过根据常见的frp使用情况,比如用户可能有一个内网的Windows机器,想通过腾讯云服务器暴露到公网。这时候腾讯云服务器运行frps(服务端),内网机器运行frpc(客户端)。但用户的问题提到的是在Windows系统的腾讯云服务器配置,所以可能用户的情况不同。或者用户可能误解了,因为通常云服务器已经有公网IP,可能不需要内网穿透,除非用户想通过云服务器访问另一个内部网络。 可能用户是想在云服务器配置frp服务端,然后让其他内网机器连接到这里。或者相反,用户可能想用云服务器作为客户端连接到另一个frp服务端。需要仔细分析。 根据引用中的内容,引用的是腾讯云服务器centos7搭建frp内网穿透访问内网windows远程桌面。原引用中的情况可能是在CentOS上搭建frps,然后内网Windows运行frpc。现在用户的问题是针对Windows系统的腾讯云服务器,所以可能用户想在Windows服务器上安装frps或frpc? 假设用户需要的是在Windows服务器配置frp,存放路径为C:\FrpHelp1.0\FrpHelp。可能的两种情况: 1. 用户将云服务器作为frps服务端,允许其他客户端连接。 2. 用户将云服务器作为frpc客户端,连接到另一台frps服务器,以暴露某些服务。 需要进一步明确,但用户的问题可能更倾向于作为服务端,因为通常云服务器有公网IP,适合作为服务端。但根据用户提供的存放路径,可能用户已经有特定的目录结构,需要指导如何配置frps或frpc的配置文件。 接下来,步骤应包括下载frp,解压到指定目录,配置frps.ini或frpc.ini,设置防火墙规则,启动服务,并设置开机启动。可能需要区分服务端和客户端的配置。 比如,用户可能需要在腾讯云服务器运行frps,所以需要配置frps.ini,设置bind_port等。然后配置Windows防火墙放行端口,并设置服务端开机启动。另外,如果用户是要让云服务器作为客户端,则配置frpc.ini,连接到远程的frps服务器,并转发远程桌面端口。 但用户的问题提到的是“在 Windows 腾讯云服务器配置 frp”,所以需要明确是作为服务端还是客户端。可能用户的需求是作为服务端,所以需要配置frps。但需要进一步确认。 在回答时,可能需要分两种情况说明,或者根据常见的用法,假设用户需要配置服务端,并指导如何设置。同时,根据用户提供的路径,确保解压到该目录,并正确配置ini文件。 此外,用户可能还需要配置安全组规则,在腾讯云控制台开放所需的端口,比如7000、3389等。这部分也需要提及。 总结步骤: 1. 下载frp并解压到指定目录。 2. 配置frps.ini(假设作为服务端)或frpc.ini(作为客户端)。 3. 配置Windows防火墙,开放端口。 4. 配置腾讯云安全组,允许端口访问。 5. 启动frp服务,并设置开机启动。 需要根据用户的具体需求,但可能用户的情况是将云服务器作为服务端,所以重点放在frps的配置。例如,引用中的例子是CentOS作为服务端,所以现在用户可能需要在Windows服务器配置frps,然后内网的其他Windows机器运行frpc连接到此,实现远程桌面访问。 因此,回答应详细说明服务端的配置步骤,包括编辑frps.ini,设置bind_port,配置安全组和防火墙,启动frps等。同时,可能还需要说明客户端的配置方法,以便用户知道如何连接。 另外,用户提供的存放路径是C:\FrpHelp1.0\FrpHelp,需要确保解压后的文件在此目录下,或者将文件移动到此目录。可能用户已经解压了文件,所以需要指导如何编辑配置文件,并运行。 最后,设置开机启动可以通过创建计划任务或服务来实现,比如使用nssm工具将frp注册为服务,或者使用批处理脚本添加到启动文件夹。</think>### 在Windows腾讯云服务器配置frp的详细步骤 #### 1. 下载并部署frp文件 1. 从[frp GitHub Release页面](https://github.com/fatedier/frp/releases)下载Windows版本(如`frp_0.25.0_windows_amd64.zip`) 2. 解压到指定目录`C:\FrpHelp1.0\FrpHelp`,确保包含以下文件: - `frps.exe`(服务端程序) - `frpc.exe`(客户端程序) - `frps.ini`(服务端配置模板) - `frpc.ini`(客户端配置模板) #### 2. 服务端配置(frps) **适用场景**:将腾讯云服务器作为中转节点,代理内网其他机器的服务(如远程桌面)[^1]。 1. 编辑`C:\FrpHelp1.0\FrpHelp\frps.ini`: ```ini [common] bind_port = 7000 # 服务端监听端口 token = your_secure_token # 建议设置鉴权令牌 ``` 2. 开放防火墙端口: ```powershell New-NetFirewallRule -DisplayName "FRP Server" -Direction Inbound -LocalPort 7000 -Protocol TCP -Action Allow ``` 3. 启动服务端: ```cmd cd C:\FrpHelp1.0\FrpHelp frps.exe -c frps.ini ``` #### 3. 客户端配置(frpc) **适用场景**:内网机器通过腾讯云服务器暴露服务。 1. 编辑`C:\FrpHelp1.0\FrpHelp\frpc.ini`: ```ini [common] server_addr = 云服务器公网IP server_port = 7000 token = your_secure_token [rdp] type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 6000 # 通过云服务器6000端口访问远程桌面 ``` 2. 启动客户端: ```cmd cd C:\FrpHelp1.0\FrpHelp frpc.exe -c frpc.ini ``` #### 4. 腾讯云安全组配置 1. 登录[腾讯云控制台](https://console.cloud.tencent.com/cvm/securitygroup) 2. 在安全组中开放端口:`7000`(服务端通信)、`6000`(远程桌面代理) #### 5. 设置开机自启 通过任务计划程序实现: 1. 创建新任务: - 操作:`启动程序` → 选择`frps.exe`或`frpc.exe` - 参数:`-c C:\FrpHelp1.0\FrpHelp\frps.ini` 2. 设置触发器:`登录时`或`系统启动时`
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值