






















ZIP伪加密 → Robot36慢扫电视 → 二维码补齐
→ DeepSound隐写 → GPG解密 → Base64图片 → SilentEye隐写

伪加密 = 修改标志位骗过解压软件,数据本身未加密
修复方式 = 将加密标志位改回 00 00
使用 010 Editor 打开ZIP文件
搜索两处需要修改的位置:
| 标识 | 魔数 | 标志位偏移 | 修改前 | 修改后 |
|---|---|---|---|---|
| 本地文件头 | 50 4B 03 04 |
+6, +7 | 09 00 |
00 00 |
| 核心目录区 | 50 4B 01 02 |
+8, +9 | 09 00 |
00 00 |
⚠️ 注意:实验手册中写的是
504b0304和504b0102,即这两处都需要修改原则上只需修改
50 4B 01 02(Central directory)中的标志位因为解压软件优先读取Central directory来判断是否加密
本质就是图片和音频的相互转化
SSTV(慢扫描电视) 是一种通过音频信号传输图像的技术,Robot36 是其中一种编码模式。
音频文件(.wav) → SSTV解码 → 图像文件(.png/.jpg)
| 平台 | 工具 |
|---|---|
| Android | Robot36 App(Google Play) |
| Windows | MMSSTV / RX-SSTV |
| Linux | qsstv |
| 通用 | 在线解码器 |
方法一:手机App(最简单)
1. 安装 Robot36 App
2. 手机播放 sounds.wav
3. App自动识别并解码
4. 得到二维码图片
方法二:Linux qsstv
# 安装
sudo apt install qsstv
# 或使用 Python 库
pip install pySSTV
# 播放音频同时用软件接收
aplay sounds.wav # 同时运行qsstv监听
方法三:在线工具
网站:https://slowrx.com/
上传wav文件 → 自动解码 → 下载图片
解码出来的二维码可能不完整(缺少边框或定位角):
正常二维码结构:
┌──────────────────┐
│ ██ ░░░░░░ ██ │ ← 定位符(三个角)
│ ██ ░░░░░░ ██ │
│ │
│ ░░░░░░░░░░░ │ ← 数据区
│ ░░░░░░░░░░░ │
│ │
│ ██ │ ← 第三个定位符
│ ██ │
└──────────────────┘
补齐方法:
1. 用 PS / GIMP 打开二维码图片
2. 添加白色边距(四周留白至少4个模块宽度)
3. 若定位符缺失,手动补全三个角的黑色方块
4. 确保图片为黑白两色,无灰度
使用微信/支付宝/专业扫码App扫描补齐后的二维码
结果:lapsume
本质就是
DeepSound 是一款音频隐写工具,可以将文件隐藏在WAV/MP3等音频文件中,支持密码保护。
官网:https://github.com/Jpinsoft/DeepSound/releases
平台:Windows
1. 打开 DeepSound
2. 点击 "Open carrier files"
3. 选择 flag.wav
4. 输入密码:lapsume
5. 点击 "Extract secret files"
6. 选择输出目录
flag.wav (密码: lapsume)
├── *.asc ← GPG私钥文件
└── encrypted_file ← 被GPG加密的文件
.asc 文件是 ASCII 装甲格式的 GPG 密钥文件,通常包含:
文件内容格式:
-----BEGIN PGP PRIVATE KEY BLOCK-----
...base64编码的密钥数据...
-----END PGP PRIVATE KEY BLOCK-----
| 工具 | 平台 | 说明 |
|---|---|---|
| Kleopatra | Windows | GnuPG图形界面,推荐新手 |
| GnuPG | Linux/Windows | 命令行工具 |
| GPG Suite | macOS | Mac平台推荐 |
1. 安装 Gpg4win(包含Kleopatra)
下载:https://www.gpg4win.org/
2. 导入私钥
- 打开 Kleopatra
- 文件 → 导入...
- 选择 *.asc 文件
- 确认导入
3. 解密文件
- 文件 → 解密/验证...
- 选择加密文件
- 自动使用导入的私钥解密
- 保存解密结果
# 导入私钥
gpg --import secret.asc
# 查看已导入的密钥
gpg --list-secret-keys
# 解密文件
gpg --decrypt encrypted_file > decrypted_output
# 或指定输出文件
gpg --output decrypted.txt --decrypt encrypted_file
文件内容示例:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...
或纯 Base64:
iVBORw0KGgoAAAANSUhEUgAAAAUA...(以 iVBOR 开头通常是PNG)
方法一:Python脚本
import base64
# 读取base64文本
with open('decrypted.txt', 'r') as f:
content = f.read().strip()
# 去除data URI头部(如果有)
if ',' in content:
content = content.split(',')[1]
# 解码并保存为图片
img_data = base64.b64decode(content)
with open('output.png', 'wb') as f:
f.write(img_data)
print("[+] 图片已保存为 output.png")
方法二:在线工具
网站:https://base64.guru/converter/decode/image
粘贴Base64文本 → 点击解码 → 下载图片
方法三:Linux命令行
base64 -d decrypted.txt > output.png
SilentEye 是一款跨平台的隐写工具,支持在图片和音频中隐藏信息,使用默认密码(空密码)或自定义密码。
官网:https://achorein.github.io/silenteye/
平台:Windows / Linux / macOS
1. 打开 SilentEye
2. 拖入 output.png 图片
(或 文件 → 打开)
3. 点击 "Decode"
4. 密码设置:默认密码(留空)
按题目说明使用 "default password"
5. 点击解码
6. 查看提取的文本内容
SilentEye 解码结果:
flag{dorothy's_vision}
| 步骤 | 工具 | 用途 |
|---|---|---|
| 第一步 | 010 Editor / WinHex / HxD | ZIP伪加密修复 |
| 第二步 | Robot36 / qsstv | SSTV音频解码 |
| 第二步 | PS / GIMP | 二维码补齐 |
| 第三步 | DeepSound | 音频隐写提取 |
| 第四步 | Kleopatra / GnuPG | GPG解密 |
| 第五步 | Python / 在线工具 | Base64图片还原 |
| 第六步 | SilentEye | 图片隐写提取 |
def caesar_decrypt(text, shift):
result = ""
for char in text:
if char.isalpha():
base = ord('A') if char.isupper() else ord('a')
result += chr((ord(char) - base - shift) % 26 + base)
else:
result += char
return result
# 爆破所有位移
for i in range(26):
print(f"shift {i}: {caesar_decrypt('密文', i)}")
ECDSA 常见于 GPG 密钥中
特点:相比RSA,密钥更短但安全性相当
在CTF中:若出现 ECDSA 漏洞题,
通常考察随机数重用 → 可恢复私钥
challenge.zip (伪加密)
│
├─[修改 09 00 → 00 00]
│
├── sounds.wav
│ └─[Robot36 SSTV解码]
│ └── 二维码图片
│ └─[补齐 + 扫码]
│ └── 密码: lapsume
│
└── flag.wav
└─[DeepSound + 密码 lapsume]
├── private.asc (GPG私钥)
└── encrypted_data
└─[Kleopatra/GPG导入私钥解密]
└── base64_image.txt
└─[Base64解码]
└── image.png
└─[SilentEye默认密码]
└── flag{dorothy's_vision} ✓
这道题考察了多层隐写和加密的综合运用:
💡 CTF解题核心思路:遇到文件先看文件头魔数,判断真实文件类型;每一层都可能是一种隐写或加密手段,逐层剥开即可找到Flag。
免责声明 本文档所有内容仅供安全研究、学术交流与技术学习使用,严禁用于任何未经授权的逆向破解、网络攻击、隐私窃取、恶意软件开发及其他违反《中华人民共和国网络安全法》《数据安全法》等法律法规的行为,使用者应确保已获得目标软件权利人的合法授权并自行承担因使用本文档内容所产生的一切法律责任与后果,作者不对任何直接或间接损害承担任何责任,继续阅读即视为您已知悉并同意上述全部条款。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。