You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CTF挑战求助:含PK头的文本文件与SHA256哈希解析问题

解决思路与实操步骤

1. 先确认文件完整性

先核对文件的SHA256哈希,确保你拿到的文件没有被篡改:

# Linux/macOS下执行
sha256sum notazipfile.txt
# Windows用PowerShell执行
Get-FileHash notazipfile.txt -Algorithm SHA256

如果输出和给定的e62391166a9c9fe0eefbc999958f87f2b454f36cadeb2c026b9000bdc9abddf6不一致,说明文件损坏,需要重新获取。

2. 把十六进制转储转成二进制Zip

你提到文件是十六进制转储形式,这是核心问题——之前直接改后缀、用ZipFile读取的是纯文本,不是原始二进制Zip数据。先完成格式转换:

用Python快速转换

with open('notazipfile.txt', 'r') as f:
    # 移除文件中的换行、空格,保留纯十六进制字符
    hex_raw = f.read().replace('\n', '').replace(' ', '')
# 将十六进制字符转为二进制数据
binary_zip = bytes.fromhex(hex_raw)

# 保存为可识别的Zip文件
with open('recovered.zip', 'wb') as f:
    f.write(binary_zip)

转换完成后尝试打开recovered.zip,如果仍失败,继续下一步。

3. 修复损坏的Zip文件

若转换后的Zip无法打开,大概率是文件结构损坏:

  • Linux/macOS用自带命令修复:
    zip -FF recovered.zip --fixed repaired.zip
    
  • 用7-Zip提取:7-Zip对损坏Zip的兼容性优于系统自带工具,右键选择「提取到当前文件夹」尝试。
  • 检查文件头:用十六进制编辑器查看recovered.zip开头是否为50 4B 03 04(标准Zip文件头),若不是,说明十六进制转储中混杂了其他数据,需要定位真正的Zip起始位置。

4. 定位隐藏的Zip片段

如果文件仅部分内容为Zip数据,用命令查找所有PK标识的位置:

# Linux/macOS下执行,输出所有PK出现的偏移量
grep -obUaP "PK" notazipfile.txt

拿到偏移值后,从该位置开始提取十六进制字符并转成二进制,再尝试打开。

5. 排查其他隐写可能

若以上方法均无效,试试这些方向:

  • 加密Zip:尝试CTF常见密码,如password、flag、ctf、123456。
  • 分卷Zip:检查文件中是否存在多个PK标识,合并对应片段后再转二进制。
  • 用binwalk扫描:识别文件内嵌的所有文件类型:
    binwalk recovered.zip
    

内容的提问来源于stack exchange,提问作者Dave Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 05:32:27