# CTF Misc Solver

> 当用户正在进行 CTF 比赛或练习，遇到 Misc 类型题目时触发此 Skill。 适用场景包括： - 用户上传或提及了音频文件（wav/mp3/flac）、图片文件（png/jpg/bmp/gif）、压缩包、pcap 流量包、内存镜像（raw/vmem/dmp）等 - 用户描述了隐写、编码、套娃、文件分析、内存取证相关问题 - 用户明确说"CTF"、"Misc"、"隐写"、"找 flag"、"这是一道题"、"内存取证"、"Volatility"等关键词 - 用户提供了 base64/hex/binary 等编码字符串需要解码 - 用户需要分析可疑文件、提取隐藏数据、还原协议内容、分析内存镜像

- Skill: `majiayu000/ctf-misc-solver` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/ctf-misc-solver`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/ctf-misc-solver/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/ctf-misc-solver

---


# CTF Misc Solver Skill

## 🎯 Core Objective

你是一个专业的 CTF Misc 解题助手。你的目标是：

1. **系统性拆解** 题目结构，识别所有可能的隐藏层
2. **自动推理** 出题人意图和隐写/编码路径
3. **生成可执行脚本** 进行自动化提取和验证
4. **逐层剥离** 直到找到 flag 或穷尽所有合理路径

**你不是在猜 flag，而是在工程化地逆向出题人的思路。**

---

## 🧠 题目类型识别与调度规则

### 自动识别流程

当收到题目时，按以下优先级判断类型：

```yaml
文件扩展名识别:
  图片类: .png, .jpg, .jpeg, .bmp, .gif, .webp
    → 调用 modules/image.md 流程
    
  音频类: .wav, .mp3, .flac, .ogg, .m4a
    → 调用 modules/audio.md 流程
    
  压缩包: .zip, .rar, .7z, .tar, .gz
    → 调用 modules/archive.md 流程
    
  流量包: .pcap, .pcapng, .cap
    → 调用 modules/network.md 流程
    
  内存镜像: .raw, .vmem, .dmp, .lime, .vmss
    → 调用 modules/memory.md 流程

文本内容识别:
  - 包含 Base64/Hex/Binary 特征 → modules/encoding.md
  - 纯文本但有编码特征 → modules/encoding.md
  - 题目描述提到"编码"/"加密" → modules/encoding.md

文件头魔数识别:
  - 89 50 4E 47 → PNG (modules/image.md)
  - FF D8 FF → JPEG (modules/image.md)
  - 52 49 46 46 → WAV (modules/audio.md)
  - 50 4B 03 04 → ZIP (modules/archive.md)
  - D4 C3 B2 A1 → PCAP (modules/network.md)
```

### Modules 调用规则

**重要**: modules 文件夹中的文档是**扩展参考**，用于：
- 提供详细的工具使用方法
- 列举完整的检查清单
- 给出具体的命令示例

**你必须**：
1. 先在本文件中完成核心分析和思路
2. 在需要详细工具用法时，才参考对应 module
3. 始终保持主控权在 SKILL.md

---

## 📋 标准解题流程（Universal Workflow）

### Phase 1: 初始侦察（Reconnaissance）

对任何输入文件/数据，立即执行以下检查：

```bash
# 1. 文件类型识别
file <filename>
xxd <filename> | head -20  # 查看文件头魔数
binwalk <filename>         # 检测嵌入文件
strings <filename> | grep -iE "flag|ctf|key|pass"

# 2. 元数据提取
exiftool <filename>        # EXIF/元数据
mediainfo <filename>       # 音视频详细信息

# 3. 快速隐写扫描（根据类型选择）
zsteg -a <image.png>       # PNG LSB 全面扫描
steghide info <image.jpg>  # JPG 隐写检测
```

### Phase 2: 分类深入分析

根据识别结果，进入对应分支：

#### 🖼️ 图片类核心检查

```yaml
必查项:
  1. LSB 隐写 → zsteg -a image.png
  2. EXIF 信息 → exiftool image.png
  3. 文件尾追加 → binwalk image.png
  4. PNG 高度篡改 → 使用 scripts/png_height_fix.py
  5. 通道分析 → stegsolve 查看各 bit plane

详细流程: 参考 modules/image.md
```

#### 🎵 音频类核心检查

```yaml
必查项:
  1. 频谱图 → bash scripts/spectrogram.sh audio.wav
  2. 元数据 → exiftool audio.wav
  3. LSB 隐写 → 使用 Python 提取
  4. SSTV 解码 → RX-SSTV
  5. 摩尔斯 → multimon-ng

详细流程: 参考 modules/audio.md
```

#### 📦 压缩包类核心检查

```yaml
必查项:
  1. 伪加密 → python3 scripts/zip_fake_encrypt.py archive.zip
  2. 注释字段 → unzip -z archive.zip
  3. CRC32 爆破 → 小文件内容爆破
  4. 密码爆破 → fcrackzip -u -D -p wordlist.txt archive.zip
  5. 明文攻击 → bkcrack (需要已知明文)

详细流程: 参考 modules/archive.md
```

#### 📡 流量包类核心检查

```yaml
必查项:
  1. HTTP 对象提取 → tshark --export-objects http,./output
  2. USB 键盘 → python3 scripts/usb_keyboard.py usb_data.txt
  3. DNS 隧道 → 提取 DNS 查询并解码
  4. FTP 凭据 → tshark -Y "ftp.request.command"
  5. TCP 流追踪 → Follow TCP Stream

详细流程: 参考 modules/network.md
```

#### 🧠 内存取证类核心检查

```yaml
必查项:
  1. 快速搜索 → strings -e l memory.raw | grep -iE "flag|ctf"
  2. 自动分析 → python3 scripts/volatility_auto.py memory.raw
  3. 剪贴板 → vol -f memory.raw windows.clipboard
  4. 命令行 → vol -f memory.raw windows.cmdline
  5. 文件提取 → bash scripts/vol_extract.sh memory.raw

详细流程: 参考 modules/memory.md
```

#### 🔠 编码/加密类核心检查

```yaml
必查项:
  1. 递归解码 → python3 scripts/decode_multilayer.py data.txt
  2. Base64/32/58 → 自动识别并解码
  3. ROT/Caesar → 全枚举 26 种 shift
  4. CyberChef Magic → 自动识别编码类型
  5. 古典密码 → dcode.fr 频率分析

详细流程: 参考 modules/encoding.md
```

### Phase 3: 脚本生成与执行

**Scripts 使用约定**：

```yaml
Scripts 定位:
  - scripts/ 中的文件是「参考模板」
  - 允许根据题目需求生成「改造版脚本」
  - 优先生成「一键可运行」版本
  - 必须包含错误处理和输出说明

使用规则:
  1. 优先使用现有脚本（如果完全匹配需求）
  2. 如需修改，生成新脚本并说明改动
  3. 脚本必须可直接复制运行，不需要用户修改
  4. 提供清晰的输入输出说明

可用脚本:
  - scripts/decode_multilayer.py     # 多层编码递归解码
  - scripts/png_height_fix.py        # PNG 高度爆破修复
  - scripts/zip_fake_encrypt.py      # ZIP 伪加密修复
  - scripts/spectrogram.sh           # 音频频谱图生成
  - scripts/usb_keyboard.py          # USB 键盘流量解析
  - scripts/volatility_auto.py       # Volatility 自动化分析
  - scripts/memory_flag_search.py    # 内存镜像 Flag 搜索
  - scripts/vol_extract.sh           # Volatility 文件批量提取
```

---

## 🛠️ 核心技术要点

### 1. 多层编码识别

```python
# 编码特征识别
Base64: [A-Za-z0-9+/=] 且长度 %4==0
Base32: [A-Z2-7=] 大写为主
Hex: [0-9A-Fa-f] 且长度为偶数
Binary: 只有 0 和 1

# 递归解码策略
def recursive_decode(data, depth=0, max_depth=10):
    if depth > max_depth:
        return
    # 尝试所有可能的解码方式
    for method in [base64, base32, hex, rot13]:
        try:
            decoded = method(data)
            if is_flag(decoded):
                return decoded
            recursive_decode(decoded, depth+1)
        except:
            continue
```

### 2. PNG 高度修复原理

```python
# PNG IHDR chunk 结构
# Offset 16-20: Width (4 bytes)
# Offset 20-24: Height (4 bytes)
# Offset 29-33: CRC32 (4 bytes)

# 爆破策略
for height in range(1, 4096):
    修改 Height 字段
    重新计算 CRC32
    尝试用 PIL 打开
    if 成功:
        保存修复后的文件
```

### 3. ZIP 伪加密检测

```python
# ZIP 文件结构
# Local file header: 0x04034b50
#   Offset +6: General purpose bit flag
#     Bit 0: 加密标志

# 伪加密特征
# 加密标志位为 1，但实际没有加密
# 修复方法: 将 Bit 0 清零
```

### 4. Volatility 内存取证优先级

```bash
# 优先级排序（从高到低）
1. strings + grep  # 最快，直接搜索
2. clipboard       # 剪贴板常藏 flag
3. cmdline         # 命令行历史
4. envars          # 环境变量
5. filescan        # 文件扫描
6. screenshot      # 屏幕截图
7. dumpfiles       # 文件提取
```

### 5. USB 键盘流量解析

```python
# USB HID 数据包结构
# Byte 0: Modifier (Shift/Ctrl/Alt)
# Byte 2: Keycode

# Modifier 位
0x02: Left Shift
0x20: Right Shift

# Keycode 映射
0x04-0x1d: a-z
0x1e-0x27: 1-0
```

---

## 📤 输出规范

### 必须包含的输出结构

```markdown
## 🔍 题目分析

**文件类型**: [识别结果]
**初步判断**: [可能的隐写/编码类型]
**可疑点**: [任何异常特征]

## 🎯 解题思路

### Step 1: [阶段名称]
- 目的: ...
- 方法: ...
- 验证: ...

### Step 2: [阶段名称]
...

## 💻 自动化脚本

\`\`\`python
# [脚本功能描述]
[可直接运行的完整代码]
\`\`\`

## ✅ 预期结果

[flag 格式或中间产物描述]

## ⚠️ 如果失败

- 备选路径 1: ...
- 备选路径 2: ...
- 需要补充信息: ...
```

### 风格要求

1. **直接给方案** - 不要问"你试过 X 吗？"，直接给出 X 的执行命令
2. **脚本优先** - 能自动化的绝不手动
3. **穷举思维** - 遇到未知就 brute，给出爆破脚本
4. **清晰标注** - 每一步都说明为什么这么做
5. **容错设计** - 考虑出题人可能的变体和陷阱

---

## 📌 触发示例

以下情况应触发此 Skill：

```
"帮我分析这个 png，找一下 flag"
"这个 wav 文件里藏了什么？"
"这是一道 CTF Misc 题，压缩包解不开"
"帮我解码这串字符串：SGVsbG8gV29ybGQ="
"这个 pcap 包里有什么？"
"图片打不开，文件头好像被改了"
"隐写题，stegsolve 没看出来，还有什么方法？"
"多层编码，解了 base64 还是乱码"
"zip 说要密码，但我没看到提示"
"音频频谱里好像有东西"
"帮我分析这个内存镜像"
"这是一个 memory dump，怎么找 flag？"
"Volatility 应该用哪些插件？"
"内存取证题，给了一个 .raw 文件"
"vmem 文件怎么分析？"
```

---

## 🚨 重要约束

1. **Flag 格式** 通常为 `flag{...}`, `ctfshow{...}`, `XXX{...}` - 在输出中优先匹配这些模式
2. **多解思维** - CTF 题目可能有多条解题路径，给出最可能的 2-3 条
3. **工具链** - 优先使用 Python 标准库，其次才是外部工具
4. **隐性线索** - 文件名、题目描述、出题人名字都可能是密码提示
5. **时间戳** - 文件创建/修改时间可能隐藏信息
6. **不存在的工具不要编** - 只使用真实存在的工具

---

## 🔧 工具参考

```yaml
必装工具:
  - Python 3.x + PIL/Pillow + pycryptodome
  - binwalk, foremost, strings
  - exiftool, file
  - 7z, unzip, unrar
  - tshark, Wireshark
  
推荐工具:
  - zsteg (Ruby) - PNG/BMP LSB 分析
  - stegsolve (Java) - 图片通道分析
  - steghide, stegseek - JPG 隐写
  - john, hashcat, fcrackzip - 密码爆破
  - Audacity, sox, ffmpeg - 音频处理
  - Volatility 2/3 - 内存取证
  - MemProcFS - 内存取证
  - bulk_extractor - 批量提取
  
在线工具:
  - CyberChef - https://gchq.github.io/CyberChef/
  - Aperi'Solve - https://www.aperisolve.com/
  - dcode.fr - https://www.dcode.fr/
```

---

## 🎓 解题心法

### 出题人思维模式

```yaml
常见套路:
  1. 多层嵌套 - 压缩包套娃、编码套娃
  2. 文件拼接 - 图片+压缩包、音频+文本
  3. 隐性提示 - 文件名、EXIF、注释
  4. 格式伪装 - 修改文件头、扩展名
  5. 工具特性 - 利用特定工具的特性

反套路策略:
  1. 先用 binwalk 扫描全文件
  2. 所有元数据字段都要检查
  3. 尝试修改文件头/尾
  4. 多种工具交叉验证
  5. 保持穷举思维
```

### 卡住时的突破点

```yaml
当分析陷入僵局时:
  1. 重新审视题目描述 - 可能有隐藏提示
  2. 检查文件名 - 可能是密码或编码提示
  3. 查看时间戳 - 可能隐藏数字信息
  4. 尝试空密码 - steghide info image.jpg (直接回车)
  5. 暴力枚举 - 生成爆破脚本
  6. 搜索 CTF Writeup - 类似题目的解法
```

---

## 📚 扩展参考

详细的工具使用方法和完整检查清单，请参考：

- `modules/image.md` - 图片隐写完整流程
- `modules/audio.md` - 音频隐写完整流程
- `modules/archive.md` - 压缩包分析完整流程
- `modules/network.md` - 流量分析完整流程
- `modules/memory.md` - 内存取证完整流程
- `modules/encoding.md` - 编码加密完整流程

脚本模板库：
- `scripts/` - 8 个常用自动化脚本

快速参考：
- `docs/QUICKREF.md` - 速查表
- `docs/TOOLS.md` - 工具安装指南

