Я пытаюсь извлечь указанный c ключ и значение из json в windows с помощью Python.
Я бы хотел использовать команду dumps, но не могу найти хороший пример.
** Обновленные данные: извлечение из файла json (но файл очень длинный):
{
"CVE_data_type" : "CVE",
"CVE_data_format" : "MITRE",
"CVE_data_version" : "4.0",
"CVE_data_numberOfCVEs" : "64",
"CVE_data_timestamp" : "2020-01-09T08:00Z",
"CVE_Items" : [ {
"cve" : {
"data_type" : "CVE",
"data_format" : "MITRE",
"data_version" : "4.0",
"CVE_data_meta" : {
"ID" : "CVE-2020-0001",
"ASSIGNER" : "cve@mitre.org"
},
"problemtype" : {
"problemtype_data" : [ {
"description" : [ ]
} ]
},
"references" : {
"reference_data" : [ {
"url" : "https://source.android.com/security/bulletin/2020-01-01",
"name" : "https://source.android.com/security/bulletin/2020-01-01",
"refsource" : "CONFIRM",
"tags" : [ ]
} ]
},
"description" : {
"description_data" : [ {
"lang" : "en",
"value" : "In getProcessRecordLocked of ActivityManagerService.java isolated apps are not handled correctly. This could lead to local escalation of privilege with no additional execution privileges needed. User interaction is not needed for exploitation. Product: Android Versions: Android-8.0, Android-8.1, Android-9, and Android-10 Android ID: A-140055304"
} ]
}
},
"configurations" : {
"CVE_data_version" : "4.0",
"nodes" : [ ]
},
"impact" : { },
"publishedDate" : "2020-01-08T19:15Z",
"lastModifiedDate" : "2020-01-08T20:01Z"
}, {
"cve" : {
"data_type" : "CVE",
"data_format" : "MITRE",
"data_version" : "4.0",
"CVE_data_meta" : {
"ID" : "CVE-2020-0002",
"ASSIGNER" : "cve@mitre.org"
},
"problemtype" : {
"problemtype_data" : [ {
"description" : [ ]
} ]
},
"references" : {
"reference_data" : [ {
"url" : "https://source.android.com/security/bulletin/2020-01-04",
"name" : "https://source.android.com/security/bulletin/2020-01-04",
"refsource" : "CONFIRM",
"tags" : [ ]
} ]
},
"description" : {
"description_data" : [ {
"lang" : "en",
"value" : "In ih264d_init_decoder of ih264d_api.c, there is a possible out of bounds write due to a use after free. This could lead to remote code execution with no additional execution privileges needed. User interaction is needed for exploitation Product: Android Versions: Android-8.0, Android-8.1, Android-9, and Android-10 Android ID: A-142602711"
} ]
}
},
"configurations" : {
"CVE_data_version" : "4.0",
"nodes" : [ ]
},
...
Мне нужно извлечь идентификатор и описание.
Я пытался это
for key, value in json.dumps(cve_dict['CVE_Items'][0], sort_keys=True, indent=4, separators=',', ': ')):
#if(key in ['ID', 'description']):
print(key, value)
Но я получаю эту ошибку:
File "unzip_get_info.py", line 19
for key, value in json.dumps(cve_dict['CVE_Items'][0], sort_keys=True, indent=4, separators=',', ': ')):
^
SyntaxError: invalid syntax
Я могу получить целое json, чтобы распечатать это:
print(json.dumps(cve_dict['CVE_Items'][0], sort_keys=True, indent = 4, separators=(',', ': ')))
Я не большой python программист. Любая идея, как я могу получить ключ / значение идентификатора и описания? Я пытался сделать это напрямую с помощью cve_dict, но ошибка была в том, что я не могу сделать это напрямую.
Буду признателен за помощь. Это моя первая python программа.
Я пытаюсь выяснить, как это сделать с дампами с помощью этой ссылки , но я ее не вижу. Я посмотрел , это тоже , но я не уверен.
** Обновление: я пытался
for key, value in cve_dict['CVE_Items'][0].items():
if(key in ['ID', 'description']):
print(key, value)
, пытаясь ограничить его идентификатором и описанием, в дополнение к тому, что было предложено ниже, но это ничего не печатает. Я знаю, что ID и описание там (см. json выше). Как мне просто напечатать идентификатор и описание, а не все ключи / значения?