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

如何使用Pyattck将自定义Mitre Technique ID列表转换为对应Tactic信息

基于Pyattck实现Mitre Technique ID转Tactic信息解决方案

以下是可直接运行的完整实现代码,已覆盖硬编码、自定义变量、本地文件三种数据源适配需求,同时修复了你提供的演示代码中变量未定义的逻辑问题:

from pyattck import Attck

# 初始化Attck对象,默认加载Mitre Enterprise框架全量数据
attack = Attck()

# 预构建全量Technique与Tactic的映射字典,提升批量匹配效率
technique_tactic_map = {}
for technique in attack.enterprise.techniques:
    tactic_list = []
    for tactic in technique.tactics:
        tactic_list.append({
            "tactic_id": tactic.id,
            "tactic_name": tactic.name
        })
    technique_tactic_map[technique.id] = {
        "technique_name": technique.name,
        "related_tactics": tactic_list
    }

# ----------------------数据源配置区,三种方式三选一即可----------------------
# 方式1:硬编码ID列表,直接把你持有的40个ID替换到下方列表即可
target_technique_ids = ["T1059", "T1003", "T1027"]

# 方式2:对接自定义变量,直接将其他业务逻辑生成的ID列表赋值给该变量即可
# target_technique_ids = 你的自定义ID列表变量

# 方式3:读取本地ID文件,要求文件内每行存储一个Technique ID
# with open("你的ID文件路径.txt", "r", encoding="utf-8") as f:
#     target_technique_ids = [line.strip() for line in f if line.strip()]
# -------------------------------------------------------------------------

# 批量匹配输出结果
for tech_id in target_technique_ids:
    if tech_id in technique_tactic_map:
        data = technique_tactic_map[tech_id]
        print(f"Technique ID:{tech_id}")
        print(f"Technique名称:{data['technique_name']}")
        print("关联Tactic信息:")
        for tactic in data["related_tactics"]:
            print(f"- Tactic ID:{tactic['tactic_id']},Tactic名称:{tactic['tactic_name']}")
    else:
        print(f"未查询到ID为{tech_id}的Enterprise Technique,请检查ID格式是否正确")
    print("-" * 60)

注意事项

  • 代码同时支持父技术ID(如T1059)和子技术ID(如T1059.001)的匹配
  • 部分Technique会归属多个Tactic,代码会输出所有关联的Tactic信息
  • 若需要将结果保存到本地文件,只需将print输出逻辑替换为文件写入逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:39:01