我是一个新手,试图从mitre att&ck json文件库中解析数据,并且被困在如何解析其中一个字段-攻击阶段名称的数据上。它们存储在一个数组中,有时会有重复的名称,如下所示:
"type": "attack-pattern",
"kill_chain_phases": [
{
"kill_chain_name": "mitre-attack",
"phase_name": "persistence"
},
{
"kill_chain_name": "mitre-attack",
"phase_name": "privilege-escalation"
}
],如果我尝试为get_phase(attack.kill_chain_phases[0].phase_name)返回值,那么python只在有时有多个值时返回一个值,比如privilege-escalation
如果我尝试胡乱使用类似这样的get_phase(attack.kill_chain_phases[0].phase_name[0]),输出将是其中一个阶段名称c的第一个字符
如果我尝试做像get_phase(attack_pattern.kill_chain_phases[1].phase_name)这样的事情,我会得到一个超出索引的错误...
有没有人知道如何使用python获取这些字段?另外,有谁知道如何描述这种数据格式和/或我正在尝试做什么,以便我可以尝试搜索解决方案?提前感谢!
发布于 2020-07-11 05:22:07
您可能正在寻找像for loop这样的东西。一个简单的示例如下:
for attack in attack_pattern.kill_chain_phrases:
get_phrase(attack)发布于 2020-07-11 05:55:18
为此,您将需要使用一个循环。获取要查找其所有值的项的父项,然后可以遍历并获取所有子项的值。
import json
json_string = """{
"type": "attack-pattern",
"kill_chain_phases": [
{
"kill_chain_name": "mitre-attack",
"phase_name": "persistence"
},
{
"kill_chain_name": "mitre-attack",
"phase_name": "privilege-escalation"
}
]
}
"""
parsed_json = json.loads(json_string)
# Loop through the parent "kill_chain_phases"
for kill_chain_phase in parsed_json["kill_chain_phases"]:
# print out the children "phase_name" values
print(kill_chain_phase["phase_name"]您将获得持久性的第一个字符,因为:get_phase(attack.kill_chain_phases[0].phase_name[0] =“get_phase(attack.kill_chain_phases[0].phase_name[0]”
然后,Python获取该字符串并将其视为列表:"p“、"e”、"r“、"s”、"i“、"s”、"t“、"e”、"n“、"c”、"e“
所以phase_name[0]会展示给"p"看。
希望这是有意义的。
更多信息here
https://stackoverflow.com/questions/62842401
复制相似问题