pentesting-explanations
收藏Pentesting Eval — Explanation Completions 数据集概述
数据集基本信息
- 许可证: Apache-2.0
- 任务类别: 文本生成、问答
- 语言: 英语
- 标签: 渗透测试、安全、多项选择、思维链、对抗性推理、监督微调、网络安全、HackTricks、合成数据
- 数据集名称: Pentesting Eval — Explanation Completions
- 数据规模: 1K<n<10K
数据集描述
本数据集是一个用于监督微调的数据集,源自 preemware/pentesting-eval 并利用 HackTricks Wiki 生成的合成数据进行了增强。其格式经过明确设计,使专家解释成为结构化 <think> + 答案格式中的完成目标。
核心是一个多项选择渗透测试基准,每个问题都包含详细的专家解释,用于证明正确答案的合理性并明确驳斥每个错误选项。这种针对每个干扰项的对抗性推理是核心训练信号,它教导模型执行选项消除,而不是进行标签的模式匹配。
为了扩展广度和深度,数据集通过直接从 HackTricks 动态生成的问题进行了增强,确保覆盖126个领域的现代、高技术性渗透测试方法。
数据来源与构建
数据集由两个不同的来源构建,统一在一个模式之下:
-
preemware/pentesting-eval(基础)- 现有的高质量基准问题。
- 解析并拆分解释以构建对抗性的
<think>块。
-
HackTricks Wiki 增强 (合成)
- 解析与清理: 克隆官方的 HackTricks GitHub 仓库,清除非内容元素(GitBook 提示、赞助商插入、图片),并按 Markdown 标题进行分块。
- 分层抽样: 分块按领域/技术(例如,Active Directory、Web、Linux 权限提升)分组并进行均匀抽样,以确保没有任何单一领域主导数据集。源语料库涵盖 126 个领域的 5,404 个总块。
- LLM 生成: 使用 GPT-4.1(通过 Azure AI Inference),直接从文本块生成多项选择题。模型被严格提示生成 4 个选项(无“以上所有”)、基于误解的不同干扰项,以及填充
<think>块的逐行解释。
两个来源已合并并统一在一个模式之下。数据集目前包含 约 3.23k 行。
计划:思维块增强流程
当前的 <think> 字段包含正确答案的理由和针对每个干扰项的反驳,但推理和解释字段在结构上是冗余的——思维块主要是重述最终答案,而不是模拟一个深思熟虑的推理过程。
计划使用 Claude Opus 4.7 进行专门的增强处理,以在所有行中重写 think 字段,形成真正的思维链式思考。该流程将:
- 从 HuggingFace 批量流式传输现有数据集。
- 使用问题、选项、正确答案和现有解释提示 Opus 4.7,要求它生成一个逐一分析每个选项然后得出结论的思维块,而不是一开始就陈述答案。
- 覆盖仅
think和messages字段,保留所有其他列和来源元数据。 - 将增强后的批次作为版本化的 parquet 文件重新上传。
目标思维格式将从:
[Correct Answer — B] <restatement of explanation>
转变为真正的思考模式:
Option A considers... however this fails because... Option B aligns with the scenario because... Option C would apply if... but the passage specifies... Therefore the answer is B.
原始的 GPT-4.1 生成过程通过 HuggingFace 数据集标签保存为 v1.0。增强后将更新至 v2.0。
要使用特定版本: python from datasets import load_dataset
加载特定标签版本
dataset = load_dataset( "theelderemo/pentesting-explanations", revision="v1.0" )
print(dataset)
数据模式
| 列名 | 类型 | 描述 |
|---|---|---|
question |
string | 多项选择题的文本 |
choices |
list of strings | 答案选项 (A–D) |
answer_idx |
int | 正确答案的索引 (0–3) |
correct_letter |
string | 正确答案的字母 (A–D) |
correct_choice |
string | 正确答案的文本 |
explanation |
string | 专家解释(原样保留) |
prompt |
string | 格式化的问题 + 选项,带有专家角色设定 |
response |
string | 加粗的答案 + 完整解释 |
think |
string | 独立的推理块,用于过程奖励 / GRPO |
messages |
list of dicts | 可用于监督微调的 [{"role": "user"}, {"role": "assistant"}] 格式 |
响应格式
<think> [deliberate reasoning through each option] </think>
Answer: B) <correct choice text>
<full explanation>
think 块将通过上述 Opus 4.7 流程进行升级。
过滤与质量控制
- 基础解释少于 50 个字符的行被排除。
- HackTricks 分块器要求每个文本块至少 400 个字符,以确保有足够的上下文来生成深度理解的问题。
- 来自非内容目录(
images、banners、files、todo)和结构文件(SUMMARY.md、README.md、LICENSE.md)的块被排除。
预期用途
用于微调大语言模型,涉及:
- 渗透测试知识和方法论
- 安全认证考试准备(CEH、OSCP、CompTIA Security+)
- 对抗性多项选择推理
- 干扰项消除 / 选项分析
备注
messages 列提供了与任何期望标准 HuggingFace 聊天格式(apply_chat_template 就绪)的监督微调训练器的即插即用兼容性。think 列被分离出来,用作强化学习微调流程(例如 GRPO)中的过程奖励信号。一旦 Opus 4.7 增强过程完成,think 字段将代表真正的深思熟虑的推理,适用于训练思维链行为,而不是答案重述。
引用与致谢
bibtex @dataset{theelderemo_pentesting_explanations_2026, author = {theelderemo}, title = {Pentesting Eval — Explanation Completions}, year = {2026}, url = {https://huggingface.co/datasets/theelderemo/pentesting-explanations}, note = {Derived from preemware/pentesting-eval and augmented with synthetic instructions generated from the HackTricks Wiki. Reformatted into structured CoT prompt/completion pairs with adversarial distractor reasoning. Think block enhancement via Claude Opus 4.7} }
特别感谢 Carlos Polop 和 HackTricks 的贡献者维护了如此出色的开源网络安全百科全书。




