# Ddos Analysis

> 专业的 DDoS 攻击流量分析技能。支持解析本地或 URL 形式的 PCAP/CAP 文件，精准识别攻击类型与溯源地理分布，并自动生成包含腾讯云DDoS高防防护建议的安全分析报告。

- Skill: `infometa/ddos-analysis` (Agent Skill, multi-file: 19 files)
- Install (CLI): `npx skillmds@latest add infometa/ddos-analysis`
- Raw SKILL.md: https://api.skillmd.com/api/skills/infometa/ddos-analysis/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: infometa (https://skillmd.com/u/infometa)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/infometa/ddos-analysis

---


# DDoS 攻击流量分析技能（通用版）

## 🚨🚨🚨 唯一正确的调用方式（必须第一步执行！）

**直接复制以下命令执行，不要尝试任何其他路径或方式！PCAP 输入支持本地绝对路径或 http(s) URL，脚本内部会自动判断。**

```python
# ✅✅✅ 唯一正确的调用方式 ✅✅✅
skill_run({
    'skill': 'ddos-analysis',
    'command': 'python3 ./scripts/ddos_attack_analysis.py "<PCAP 绝对路径或 URL>"',
    'timeout': 1800
})
```

**示例：**
```python
# 示例1：分析本地文件（必须用绝对路径）
skill_run({
    'skill': 'ddos-analysis',
    'command': 'python3 ./scripts/ddos_attack_analysis.py "/absolute/path/to/file.pcap"',
    'timeout': 1800
})

# 示例2：分析 URL 指向的远程文件（http(s) URL 原样透传，不需要预先下载）
skill_run({
    'skill': 'ddos-analysis',
    'command': 'python3 ./scripts/ddos_attack_analysis.py "https://example.com/sample.cap"',
    'timeout': 1800
})
```

### 🟡 关于相对路径（重要约定）

本 skill 对外承诺两种输入：**本地 PCAP/CAP 文件的绝对路径** 或 **http(s) URL**。

当用户在对话中使用 `@相对路径` 附件、或直接写出相对路径（例如 `pcap包样本/xxx.cap`）时，
**调用本 skill 的 LLM 必须先把它解析为绝对路径再传入 `skill_run`**，不要把相对路径直接喂给脚本。
URL（`http://...` / `https://...`）则**原样透传**，不要做任何"解析为本地路径"的转换。

| 用户输入 | LLM 传入 `skill_run` 的实际路径 |
|---|---|
| `@pcap包样本/xxx.cap` | `<PCAP绝对路径>` |
| `./tmp/traffic.cap`（相对路径） | `<PCAP绝对路径>` |
| `<PCAP绝对路径>`（已是绝对路径） | 原样使用 |
| `https://example.com/xxx.cap` / `http://...`（URL） | 原样使用，不做任何解析 |

**为什么必须由调用方转换？** 因为 `skill_run` 执行命令时 `cwd` 会被切换到 skill 自身目录
（`skills/soe/references/attack-analysis/ddos-analysis/`），skill 内部拿不到用户的工作区根目录；相对路径在 skill 内会找不到文件。

### ❌❌❌ 禁止尝试以下错误调用（会导致文件找不到）：

```python
# ❌ 错误1：尝试探测路径（不需要！直接用 ./scripts/ 即可）
skill_run({'skill': 'ddos-analysis', 'command': 'ls -la /workspace/inputs/', ...})  # ❌ 路径不存在

# ❌ 错误2：尝试 pwd（不需要！cwd 已自动设置）
skill_run({'skill': 'ddos-analysis', 'command': 'pwd && ls -la', ...})  # ❌ 浪费时间

# ❌ 错误3：使用 $(pwd)（会导致路径字面量）
skill_run({'skill': 'ddos-analysis', 'command': 'python3 "$(pwd)/scripts/..."', ...})  # ❌ 路径错误

# ❌ 错误4：把用户工作区的相对路径直接传给脚本（URL 不在此列，URL 应原样透传）
skill_run({'skill': 'ddos-analysis', 'command': 'python3 ./scripts/ddos_attack_analysis.py "pcap包样本/xxx.cap"', ...})  # ❌ 相对路径在 skill 内会找不到

# ❌ 错误5：尝试不存在的脚本名
skill_run({'skill': 'ddos-analysis', 'command': 'python3 scripts/ddos_analyzer.py --help', ...})  # ❌ 脚本不存在

# ❌ 错误6：调用 skill_list_docs（不需要！文档在本 SKILL.md 中）
skill_list_docs({'skill_name': 'ddos-analysis'})  # ❌ 浪费时间
```

### ⚠️ 关键规则：

| 规则 | 说明 |
|------|------|
| **脚本路径固定** | 始终是 `./scripts/ddos_attack_analysis.py`，不要探测 |
| **PCAP 输入必须是绝对路径或 URL** | 用户给的相对路径或 `@附件` 必须由调用方先解析为绝对路径；URL（`http(s)://`）原样透传，不做任何路径解析 |
| **不需要 ls/pwd/cd** | cwd 已自动设置，直接执行即可 |
| **不需要 --help** | 脚本接收一个参数：PCAP 文件绝对路径或 URL |

---

## 技能概述

通用的 DDoS 攻击流量分析技能，用于统计分析 PCAP/CAP 网络抓包文件中的 DDoS 攻击特征。自动识别多种攻击类型（SYN Flood、UDP Flood、DNS Amplification、ICMP Flood 等）。**输入支持本地文件路径与 http(s) URL**——脚本内部会自动判断输入形式，URL 通过 HTTP Range 请求按需读取，无需预先下载到本地。**本技能分析逻辑厂商无关；防护建议章节绑定腾讯云 DDoS 高防产品文档**——AI 须在生成防护建议前通过平台可用的联网文档查阅工具实时查阅腾讯云 DDoS 高防文档（入口 https://cloud.tencent.com/document/product/297），针对本次实际检测到的攻击类型给出腾讯云高防的配置建议。

### 🔴 核心执行原则

> **⚠️ 重要：必须先调用本地分析工具！**
> 
> 在生成任何报告之前，**必须首先调用本地 Python 分析脚本**对 PCAP 文件进行实际分析。
> 禁止在未执行本地工具的情况下直接生成报告或编造分析数据。
> **禁止使用 tcpdump 或自行编写代码分析流量包**，必须使用本技能提供的分析脚本。
> 如果分析脚本执行失败或找不到文件，应优先排查路径问题（是否为绝对路径），而不是尝试其他分析方式。
> 
> **⚠️ 重要：检测到攻击时，报告必须包含 ECharts 可视化图表！**
> 
> 只要分析结果中存在可用于生成图表的数据（攻击类型分布、国家分布、协议分布等），
> **就必须以 ECharts 图表的形式输出分布图**，不能只用文字或表格描述。
> 图表是报告的核心组成部分，缺少图表的报告视为不合格。
> 此外，**每个 ECharts 代码块后必须紧跟一份与之数据完全等价的 markdown 表格**，作为不支持 ECharts 渲染的环境（终端、纯文本工具等）下的数据兜底。

### 🔴 防护建议联网查阅红线（过程层硬约束，输出形式不限）

> **⚠️ 真红线只有一条：防护建议必须基于联网文档查阅工具对腾讯云 DDoS 高防文档的实时查阅生成，禁止凭模型记忆臆造配置项。**
>
> - **过程层硬约束（必须守）**：生成防护建议**之前**，必须用平台可用的联网文档查阅工具（`web_fetch` / `WebFetch` / `web_search` / `fetch_url` 等任一可用工具）完成两步查阅（入口/聚合页 + 至少 1 个具体配置子页）；详细工作流、推荐子页、未完成两步即输出的判定见 4.4 节"文档查阅强制要求"。
> - **输出形式不限定次数**：**建议一次性输出**完整报告（攻击事实层 + 防护建议层），体验更连贯；也允许根据上下文自然分段，但**不强制**分两次输出，**不要求**任何"⏳ 稍后追加"或"续上：……"过渡话术。
> - **联网失败降级**：在**同一份报告**的"防护建议"章节开头明示 `> 联网文档查阅失败，以下为通用 DDoS 防护建议（非基于腾讯云高防文档具体配置项）：`，由 LLM 输出 ≤5 条通用建议，**禁止**整段省略防护建议章节。
> - **未检测到攻击时**：直接回复"未发现攻击行为"，无需生成报告，也无需联网查阅。

### 🔴 强制输出要求
- **必须先执行本地分析工具**（见上方「唯一正确的调用方式」）
- **🔴 未检测到攻击时**：直接回复"未发现攻击行为"即可，**不需要生成完整报告**，不要列出未发现的攻击类型，**不需要输出防护建议**
- **检测到攻击时**：输出一份**完整报告**，包含以下所有章节（建议一次性连贯输出）：
  - **参考报告模板输出**：报告结构参考 `./resources/report_template.md`，但不必逐项硬填
  - **攻击概况 + 协议分布**：流量基础统计、协议占比、攻击时间线
  - **攻击类型深度分析**：每种**实际检测到的**攻击类型的技术原理、行为模式、危害评估
  - **地理位置深度分析**：攻击源国家分布 TOP 10、国家 × 攻击类型分布、地理特征
  - **威胁评估与影响分析**：威胁等级、业务影响、应急响应措施
  - **🔴🔴🔴 必须包含 ECharts 图表（最容易遗漏！）**：
    - 只要有可做图表的数据，**必须生成 ECharts 图表**，不能仅用文字/表格替代
    - 攻击类型有分布数据 → **必须**生成攻击类型分布饼图
    - 国家有分布数据 → **必须**生成国家分布柱状图
    - 协议有分布数据 → **必须**生成协议分布饼图
    - 国家×攻击类型有交叉数据 → **必须**生成堆叠柱状图
    - **每个 ECharts 代码块后必须紧跟一份与之数据完全等价的 markdown 表格**（作为不支持 ECharts 渲染的环境下的兜底）
    - **图表缺失或对应等价表格缺失 = 报告不合格，必须补充后重新输出**
  - **防护建议章节（4.4 节）**：必须基于联网文档查阅工具实时抓取的腾讯云 DDoS 高防文档生成；针对本次实际检测到的攻击类型定制；具体过程层规则、条数硬性要求、降级策略、降级提示句字面模板等，详见 4.4 节

### 🔴 技能路径说明（重要）

**⚠️ 路径规则**：
- `skill_run` 执行命令时，工作目录（cwd）自动设置为**本技能目录** `skills/ddos-analysis/`
- **所有相对路径的父目录即为本技能目录 `skills/ddos-analysis/`**
- 直接使用 `./` 开头的相对路径引用技能内的文件即可
- **🔴 禁止使用 `$(pwd)` 或 `$PWD`**（在某些执行环境中 shell 变量展开可能失败，导致路径为字面量）
- **🔴 禁止使用 `cd skills/ddos-analysis/` 前缀**（cwd 已经在该目录，重复会导致路径不存在）
- **🔴 PCAP 等用户输入文件必须使用绝对路径或 http(s) URL**（因为 cwd 在技能目录下，非用户目录；URL 由脚本内部自动识别并通过 HTTP Range 请求按需读取）

| 资源类型 | 路径写法 | 实际解析为 |
|---------|-------------|-----------|
| 分析脚本 | `./scripts/ddos_attack_analysis.py` | `skills/ddos-analysis/scripts/ddos_attack_analysis.py` |
| 报告模板 | `./resources/report_template.md` | `skills/ddos-analysis/resources/report_template.md` |
| 依赖文件 | `./scripts/requirements.txt` | `skills/ddos-analysis/scripts/requirements.txt` |

## 工作流程

### 步骤1: 直接执行分析（🚨 不需要检查环境！）

> **⚠️ 不要执行 pwd/ls/cd/--help 等探测命令！直接执行分析即可！**
> 
> 环境和依赖已经预先配置好，无需检查。

**直接执行以下命令：**

```python
skill_run({
    'skill': 'ddos-analysis',
    'command': 'python3 ./scripts/ddos_attack_analysis.py "<PCAP 绝对路径或 URL>"',
    'timeout': 1800
})
```

**⚠️ 注意事项**：
- PCAP 文件必须使用**绝对路径**（如 `/absolute/path/to/file.pcap`）或 **http(s) URL**（如 `https://example.com/sample.cap`）
- 用户给的相对路径或 `@附件`，先解析为绝对路径再传入；URL 不做解析，原样传入
- URL 不需要预先下载到本地，脚本会自动通过 HTTP Range 请求按需读取
- 不需要任何前置检查步骤

### 步骤2: 超时处理（仅在超时时执行）

**工具调用可能会因为文件较大出现超时，必须按以下策略处理：**

| 超时情况 | 处理策略 | 具体操作 |
|---------|----------|----------|
| **首次超时** | 延长超时时间重试 | 设置超时时间为 30 分钟（1800秒）后重新执行 |
| **二次超时** | 继续延长重试 | 设置超时时间为 60 分钟（3600秒）后重新执行 |
| **三次超时** | 分片处理 | 如果文件过大，尝试分片参数或提示用户文件过大 |

**超时重试示例**：
```python
# 首次调用（30分钟超时）
skill_run({
    'skill': 'ddos-analysis',
    'command': 'python3 ./scripts/ddos_attack_analysis.py "/absolute/path/to/file.pcap"',
    'timeout': 1800
})

# 如果超时，延长到60分钟
skill_run({
    'skill': 'ddos-analysis',
    'command': 'python3 ./scripts/ddos_attack_analysis.py "/absolute/path/to/file.pcap"',
    'timeout': 3600
})
```

**⚠️ 重要提示**：
- 调用时务必设置合理的超时时间（`timeout` 参数）
- 大文件（>100MB）分析可能需要 10-30 分钟
- 超时不代表失败，应该增加超时时间重试而非放弃

### 步骤3: 理解工具输出

分析工具会输出 JSON 格式的分析结果，包含：
- `total_packets`: 总包数
- `attack_types`: 检测到的攻击类型列表
- `geo_distribution`: 攻击源地理分布
- `protocol_stats`: 协议统计
- `severity`: 威胁等级

**工具处理流程**：
1. **文件读取**: 直接读取用户传入的本地 PCAP/CAP 文件（绝对路径）
2. **分片读取**: 按 20000 包为单位分片读取，降低内存占用
3. **攻击检测**: 识别 SYN Flood、UDP Flood、DNS Amplification、ICMP Flood 等攻击类型
4. **地理定位**: 通过内置 CSV 查询表查询攻击源 IP 的地理位置
5. **结果汇总**: 合并所有分片的分析结果，输出攻击信息概要

**🔴 数据过滤规则（重要）：**

| 数据类型 | 过滤规则 | 说明 |
|---------|---------|------|
| 攻击类型 | 只统计 `detected_attacks` 中的类型 | 未检测到的攻击类型不显示 |
| 攻击包数 | 只统计包数 > 0 的类型 | 包数为0的攻击类型不予统计 |
| 国家分布 | 只显示有攻击数据的国家 | 攻击次数为0的国家不显示 |
| 系统异常 | 单独列出，不计入攻击统计 | High Packet Rate、High Connection Rate 等 |

**示例**：如果工具输出中 `udp_flood: 0`，则报告和图表中**不应该**出现 UDP Flood 这一项。

**必须基于工具的实际输出结果生成报告，禁止编造数据。**

### 步骤4: 根据分析结果生成完整报告

> **前置条件**: 必须已完成步骤1的本地工具分析，获取到实际分析结果。
>
> **🔴 输出形式**：
> - **未检测到攻击时**：直接回复"未发现攻击行为"，无需生成报告。
> - **检测到攻击时**：**建议一次性输出**一份完整报告（4.2 攻击事实层 + 4.3 图表 + 4.4 防护建议层），体验更连贯。
> - **过程层硬约束（不可省略）**：在生成 4.4 防护建议章节**之前**，必须按 4.4 节"文档查阅强制要求"完成两步查阅；触发条件与降级提示句字面模板详见 4.4 节"降级策略"。
> - **不强制要求**分两次输出，**不要求**任何"⏳ 稍后追加"或"续上：……"过渡话术。

#### 4.1 未检测到攻击的情况

> 🔴 **如果分析结果未检测到任何攻击行为，直接回复"未发现攻击行为"即可。**
> - 不需要生成完整报告
> - 不需要列出未发现的攻击类型
> - 不需要编写防护建议
> - 可以简要说明流量基础统计信息（总包数、协议分布等）

#### 4.2 检测到攻击时生成报告（攻击事实层 · 完整报告的前半部分）

> **🔴🔴🔴 报告必须包含 ECharts 图表！这是最容易被遗漏的步骤！**
> 生成报告时，必须检查是否已嵌入图表。没有图表的报告不合格。
>
> **🔴 一次性输出建议**：本节内容（攻击概况、攻击类型深度分析、地理位置深度分析、威胁评估）与 4.3 图表、4.4 防护建议**建议一次性连贯输出**为同一份报告，**不强制**分次输出。

基于步骤2输出的攻击信息概要，参考报告模板生成详细的分析报告。

**📋 报告模板**: `./resources/report_template.md`

> **模板使用说明**：
> - 报告模板**仅作为格式参考**，不是必须逐项填充的表单
> - **只写实际检测到的攻击类型**，模板中未检测到的攻击类型**不要写**
> - **如果检测到模板中没有的攻击类型，必须补充说明**
> - 禁止编造数据或列出未检测到的攻击类型

##### 攻击概况分析（检测到攻击时必需）
- **流量基础统计**：总包数、持续时间、峰值PPS、带宽占用
- **协议分布统计**：TCP/UDP/ICMP包数量和占比分析
- **攻击时间线**：攻击开始/结束时间、持续时长、强度变化

##### 攻击类型深度分析（仅针对实际检测到的攻击类型）
- **只分析实际检测到的攻击类型**，未检测到的不要列出
- **如果检测到模板中没有的攻击类型，必须补充分析**
- **攻击类型统计表**：各类型攻击次数、占比、严重程度
- **🔴 重要规则**：
  - 不统计 High Packet Rate 和 High Connection Rate（这是系统异常，非攻击类型）
  - **只统计实际检测到的攻击类型**，未检测到或包数量为0的攻击类型不予显示
  - 图表中只展示有实际攻击包的类型，避免空数据干扰分析
- **攻击技术特征**：每种检测到的攻击的技术原理、数据包特征、攻击模式
- **攻击行为分析**：源IP分布规律、攻击协调性、是否为僵尸网络

##### 地理位置深度分析（检测到攻击时必需）
- **攻击源国家分布TOP 10**：包含具体数量和占比
- **按国家维度的攻击类型统计**：每个国家的主要攻击类型分布
- **地理分布特征**：攻击源集中度、跨国协调性分析

##### 威胁评估与影响分析（检测到攻击时必需）
- **风险等级评定**：基于攻击规模、复杂度、持续时间的综合评分
- **业务影响分析**：服务可用性、用户体验、资源消耗具体数据


#### 4.3 可视化图表要求（🔴🔴🔴 检测到攻击时必须生成，最易遗漏！）

**⚠️ 这是最常被忽略的步骤！生成报告后务必回头检查是否已嵌入图表！**

**核心原则：有数据就必须出图，不能只用文字或表格描述分布情况。每个 ECharts 代码块后必须紧跟一份与之数据完全等价的 markdown 表格，作为不支持 ECharts 渲染的环境下的兜底。**
- **未检测到攻击**：不需要生成图表，直接回复未发现攻击行为
- **检测到攻击**：报告必须包含可视化图表，且每个图表后紧跟等价 markdown 表格

| 条件 | 处理方式 |
|------|----------|
| 检测到攻击 | 生成完整报告，**必须**包含图表 |
| 未检测到攻击 | **直接回复"未发现攻击行为"**，不需要生成报告和图表 |

**🔴 图表数据过滤规则（重要）：**
- **只统计检测到的攻击类型**：攻击类型分布图中只展示实际检测到的攻击类型
- **过滤零值数据**：包数量为0的攻击类型不在图表中显示
- **避免空数据干扰**：未检测到的攻击类型不应出现在统计表和图表中
- **国家分布同理**：只展示有实际攻击数据的国家

**🎯 必须在报告中直接嵌入以下4个ECharts图表数据：**

| 图表名称 | 报告章节位置 | 内容要求 | 强制性 |
|---------|-------------|----------|--------|
| 攻击类型分布图 | 攻击类型分析章节 | 各攻击类型的数量和占比 | ✅ 检测到攻击时必需 |
| 攻击源国家分布图 | 地理位置分析章节 | TOP10国家的攻击数量分布 | ✅ 检测到攻击时必需 |
| 协议分布图 | 攻击概况分析章节 | TCP/UDP/ICMP协议占比 | ✅ 必需 |
| 国家攻击类型图 | 地理位置分析章节 | 各国家的主要攻击类型分布 | ✅ 检测到攻击时必需 |

**🔴 ECharts JSON嵌入格式要求：**

每个图表必须以以下格式直接嵌入到报告的相应章节中：

```markdown
### X.X 图表标题

```echarts
{
  "title": {
    "text": "图表标题",
    "left": "center"
  },
  "tooltip": {
    "trigger": "item",
    "formatter": "{a} <br/>{b}: {c} ({d}%)"
  },
  "series": [
    {
      "name": "数据系列名",
      "type": "pie",
      "radius": "55%",
      "data": [
        {"value": 实际数值, "name": "类别名称"},
        {"value": 实际数值, "name": "类别名称"}
      ]
    }
  ]
}
```
```

**⚠️ 重要说明：**
- **不生成独立的JSON文件**，而是将ECharts JSON数据直接嵌入到Markdown报告中
- 使用 ````echarts` 代码块格式包裹JSON数据
- JSON数据**必须基于本地工具的实际分析结果**，禁止使用示例数据或编造数据
- 确保JSON格式正确，可直接用于ECharts渲染
- `echarts` 代码块内容必须是可被 `JSON.parse` 直接解析的严格 JSON：属性名和字符串必须使用双引号，禁止单引号、注释、尾随逗号、变量、`function(...) {}`、`new echarts.graphic.LinearGradient(...)` 等任意 JavaScript 表达式
- 图表必须显式设置非黑色配色：顶层 `color` 可使用字符串数组，例如 `"color": ["#dc143c", "#ff8c00", "#3cb371", "#1e90ff"]`；`itemStyle.color` 只能使用单个字符串色值，例如 `"itemStyle": {"color": "#dc143c"}`，禁止写成数组；不要使用纯黑色 `#000` / `#000000`、动态回调函数或 ECharts 构造函数
- 同一图表同时存在 `title` 和 `legend` 时，必须避免重叠：横向图例建议设置 `"legend": {"top": 38, "left": "center"}`，直角坐标系图表建议设置 `"grid": {"top": 82, "left": "3%", "right": "4%", "bottom": "10%", "containLabel": true}`；不要让 `legend` 使用默认顶部位置覆盖标题

#### 4.4 防护建议（基于腾讯云 DDoS 高防产品文档实时联网查阅）

检测到攻击时，必须输出防护建议章节作为完整报告的一部分（建议与 4.2/4.3 一次性连贯输出）。针对本次本地工具实际检测到的攻击类型给出腾讯云高防针对性配置建议。**唯一红线**：所有配置项必须基于联网文档查阅工具对腾讯云高防文档的实时抓取（详见下方"文档查阅强制要求"），禁止凭模型记忆臆造；联网失败时按下方"降级策略"在同一份报告内由 LLM 自主生成通用建议（条数硬性要求与降级语义见下方）。

**报告骨架：**

```
## X. 防护建议（基于腾讯云 DDoS 高防产品文档）

> 文档总入口：https://cloud.tencent.com/document/product/297

针对本次检测到的 <攻击类型，如 NTP 反射放大攻击 / SYN Flood / ...>，防护配置建议如下：

1. **【<配置项实际名称>】**：<对本次攻击为何有效，与本地工具输出挂钩>
2. ...
```

**🔴 过渡导语要求**：

- 标题与第 1 条之间**必须**有一句过渡导语，格式为 `针对本次检测到的 <实际攻击类型>，防护配置建议如下：`
- `<实际攻击类型>` 必须使用本地工具输出的真实攻击类型名（中文表述，如 "NTP 反射放大攻击"、"SYN Flood 攻击"、"DNS 放大攻击"），**禁止**写成"本次攻击"等空泛词
- 多种攻击类型并存时用顿号连接，例如 `针对本次检测到的 SYN Flood 与 UDP Flood，防护配置建议如下：`

**🔴 输出层 URL 呈现规范（务必遵守）：**

- **标题下只贴一次文档总入口** `https://cloud.tencent.com/document/product/297`，**5 条建议正文不要带任何 URL / 链接 / 子页号**
- **禁止**在条目末尾追加 "参考：xxx"、"详见 xxx"、行内 `[↗](url)` 等任何形式的 URL 引用
- **禁止**在条目正文里嵌入子页号码（如 `94673`）、API 名称等技术性引用——所有这些信息只在生成过程中用于核对配置项措辞，**不要外露到最终报告**

##### 🔴 文档查阅强制要求

- **入口 URL**：`https://cloud.tencent.com/document/product/297`（腾讯云 DDoS 高防产品文档总入口）
- **强制工作流（两步）**：① 先用平台可用的「联网文档查阅工具」（如 `web_fetch` / `WebFetch` / `web_search` / `fetch_url` 等任一可用工具，下同）抓取入口页或下方推荐子页拿目录与子页链接；② 再用同类工具抓取具体配置子页拿**配置项实际措辞**——入口页是导航型不含配置项字面措辞，仅靠第一步无法获得真实配置项措辞，必须下钻
- **fetchInfo 模板**：「针对本次检测到的攻击类型 `<X Flood / X Reflection / ...>` 查找腾讯云 DDoS 高防的对应防护配置项与操作步骤」
- **推荐优先 fetch 的子页**（已实测可用，可跳过爬入口页）：

  | 用途 | URL |
  |------|-----|
  | 防护配置主入口（DDoS 攻防配置聚合页） | https://cloud.tencent.com/document/product/297/94673 |
  | CC 防护策略配置流程及注意事项 | https://cloud.tencent.com/document/product/297/94714 |
  | DDoS 攻击防护策略 API | https://cloud.tencent.com/document/product/297/95395 |
  | 防护配置 API | https://cloud.tencent.com/document/product/297/95341 |
  | 攻击相关 FAQ | https://cloud.tencent.com/document/product/297/94729 |
  | 封堵相关 FAQ | https://cloud.tencent.com/document/product/297/94728 |

- **未完成两步 fetch 即输出 = 不合格**：仅 fetch 入口页就生成配置建议、或完全未调用联网文档查阅工具直接凭"自己知道"写出腾讯云高防配置项，均视为不合格，必须补调用第二步 fetch 后重新输出

##### 🔴 内容质量要素（每条建议必含）

每条配置建议必须明确以下两个要素：

1. **配置项名称**：使用腾讯云高防控制台/文档中的实际措辞（如"协议封禁"、"CC 防护频率限制"、"精准访问控制"、"IP 封禁"、"速率阈值"等），**禁止意译、禁止臆造**——该措辞必须来自本次联网文档查阅工具实际返回的具体配置子页
2. **对本次攻击为何有效**：简要说明该配置项如何针对本次本地工具实际输出的攻击类型/速率/源分布生效，不要空泛

> **过程层 vs 输出层（务必区分）**：上方"文档查阅强制要求"与"两步 fetch"是**过程层**红线——AI 生成建议**之前**必须用联网文档查阅工具抓取具体配置子页，从中提取配置项实际措辞与适用场景；但子页 URL **不要外露到最终报告**（最终报告只在标题下贴一次总入口，5 条建议正文不带任何 URL，详见上方"输出层 URL 呈现规范"）。这两层是同时生效的：过程层管"建议是不是真基于文档"，输出层管"读者看到的是不是清爽"。

##### ⚠️ 降级策略（联网文档查阅工具不可用 / 失败时）

联网文档查阅失败时，**在同一份报告的"防护建议"章节开头**明示降级，由 LLM 针对本次实际检测到的攻击类型，输出**不超过 5 条**通用 DDoS 防护建议；章节标题保留，**不允许整段省略**。

**降级提示句模板（必须置于章节标题之后、第 1 条建议之前）**：

```
> 联网文档查阅失败，以下为通用 DDoS 防护建议（非基于腾讯云高防文档具体配置项）：
```

##### 通用质量约束

- **整段最多 5 条**：聚焦本次攻击最关键的处置动作，不允许超过 5 条；条数不足时宁可少写也不要凑数
- **数据驱动**：建议必须基于本地工具实际输出的攻击类型、速率、源 IP/国家分布、协议占比来定制，不要给出与实际观测无关的"模板话"
- **配置项措辞忠于文档**：配置项名称必须使用腾讯云高防文档/控制台的实际措辞，不意译、不臆造、不沿用过时入口名
- **过程层文档真实下钻**：生成每条建议前必须用联网文档查阅工具抓取该配置项对应的具体子页（不是只抓入口页），从中抽取配置项措辞与适用场景；**子页 URL 不要外露到最终报告**（输出层 URL 呈现规范见上方"报告骨架"小节）
- **可操作 + 说明为什么**：每条建议简要说明"针对哪种攻击/为什么对本次有效"，避免空泛
- **未观测不补**：本次没检测到的攻击类型，对应的防护项不要凭空列出（例如未检测到 HTTP Flood 就不要写 CC/WAF 相关条目）
- **文档未覆盖即省略**：如果腾讯云高防文档中未找到针对某攻击类型的对应配置项，对应条目省略而非编造

**未检测到攻击时不要输出防护建议章节。**

## 执行检查清单

在执行分析任务时，**必须按顺序完成以下检查项**：

### ✅ 执行前检查（无需执行探测命令！）
- [ ] 确认用户提供了 PCAP/CAP 文件路径
- [ ] 如果是相对路径或 `@附件`，**已在传参前解析为绝对路径**

### ✅ 执行中检查
- [ ] **直接调用分析工具**（`python3 ./scripts/ddos_attack_analysis.py "<绝对路径>"`）
- [ ] **不要执行** ls/pwd/cd/--help 等探测命令
- [ ] 如遇超时，按超时处理策略重试
- [ ] 已获取到工具输出的分析结果

### ✅ 输出后检查（检测到攻击时统一校验，无需区分输出次数）

- [ ] **未检测到攻击时**：直接回复"未发现攻击行为"，无需生成报告，无需联网查阅
- [ ] **检测到攻击时**：已参考报告模板 `./resources/report_template.md` 输出**完整报告**（攻击事实层 + 防护建议层，建议一次性连贯输出）
- [ ] 报告数据来源于本地工具的实际分析结果，仅包含实际检测到的攻击类型
- [ ] 已覆盖攻击概况、攻击类型深度分析、地理位置深度分析、威胁评估等必要分析维度
- [ ] **🔴 报告已包含 ECharts 可视化图表**，且每个 ```echarts 代码块后紧跟一份与之数据完全等价的 markdown 表格（缺任一种则补充后重新输出）
- [ ] **🔴 防护建议章节存在且不被省略**——无论联网成功还是失败，都必须产出该章节，禁止以"无法访问文档"为由整段省略
- [ ] **🔴 联网成功路径**：生成防护建议**之前**已通过平台可用的联网文档查阅工具完成**两步 fetch**——① 入口/聚合页 + ② 至少 1 个具体配置子页（仅抓入口页不合格），且每条建议均使用文档实际措辞的配置项名称、并说明对本次攻击为何有效
- [ ] **🔴 联网失败降级路径**：在防护建议章节标题之后、第 1 条建议之前明示 `> 联网文档查阅失败，以下为通用 DDoS 防护建议（非基于腾讯云高防文档具体配置项）：`，由 LLM 针对本次实际检测到的攻击类型输出 ≤5 条通用建议
- [ ] **🔴 整段最多 5 条**（基于实际检测到的攻击类型定制，未观测的项不补；条数不足时少于 5 条也可，不要凑数）
- [ ] **🔴 URL 呈现规范**：防护建议章节标题下只贴一次文档总入口 `https://cloud.tencent.com/document/product/297`，**5 条建议正文不带任何 URL / 子页号 / 行内链接**；未直接基于文档的纯 AI 推测内容已剔除

### ⚠️ 不合格处理
如果任何检查项不通过，**必须重新生成**直到满足所有要求。

