114 lines
4.7 KiB
Python
114 lines
4.7 KiB
Python
import re
|
|
import json
|
|
|
|
|
|
def load_json(xml_paths):
|
|
result_list = []
|
|
|
|
for xml_path in xml_paths:
|
|
xml_file = open(xml_path, 'r', encoding='utf-8')
|
|
xml_str = xml_file.read()
|
|
|
|
name_pattern = r'<name>(.*?)</name>'
|
|
name_matches = re.findall(name_pattern, xml_str)
|
|
|
|
vuln_id_pattern = r'<vuln-id>(.*?)</vuln-id>'
|
|
vuln_id_matches = re.findall(vuln_id_pattern, xml_str)
|
|
|
|
published_pattern = r'<published>(.*?)</published>'
|
|
published_matches = re.findall(published_pattern, xml_str)
|
|
|
|
modified_pattern = r'<modified>(.*?)</modified>'
|
|
modified_matches = re.findall(modified_pattern, xml_str)
|
|
|
|
severity_pattern = r'<severity>(.*?)</severity>'
|
|
severity_matches = re.findall(severity_pattern, xml_str)
|
|
|
|
vuln_type_pattern = r'<vuln-type>(.*?)</vuln-type>'
|
|
vuln_type_matches = re.findall(vuln_type_pattern, xml_str)
|
|
|
|
descript_pattern = r'<vuln-descript>(.*?)</vuln-descript>'
|
|
descript_matches = re.findall(descript_pattern, xml_str)
|
|
|
|
cve_id_pattern = r'<cve-id>(.*?)</cve-id>'
|
|
cve_id_matches = re.findall(cve_id_pattern, xml_str)
|
|
|
|
for i in range(len(name_matches)):
|
|
name = name_matches[i]
|
|
vuln_id = vuln_id_matches[i]
|
|
published = published_matches[i]
|
|
modified = modified_matches[i]
|
|
severity = severity_matches[i]
|
|
if severity == '高危':
|
|
severity = 1
|
|
elif severity == '中危':
|
|
severity = 2
|
|
elif severity == '低危':
|
|
severity = 3
|
|
else:
|
|
severity = 4
|
|
vuln_type = vuln_type_matches[i]
|
|
descript = descript_matches[i]
|
|
cve_id = cve_id_matches[i]
|
|
|
|
_dict = {
|
|
"vendor": "",
|
|
"product": "",
|
|
"version": "",
|
|
"language": "",
|
|
"name": name,
|
|
"id": "",
|
|
"cve_id": cve_id,
|
|
"cnnvd_id": vuln_id,
|
|
"cnvd_id": "",
|
|
"cwe_id": "",
|
|
"description": descript,
|
|
"description_en": "",
|
|
"suggestion": "",
|
|
"attack_type": vuln_type,
|
|
"release_date": modified,
|
|
"security_level_id": severity,
|
|
"exploit_level_id": 1
|
|
}
|
|
result_list.append(_dict)
|
|
json.dump(result_list, open('db.json', 'w', encoding='utf-8'), indent=4, ensure_ascii=False)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
xml_paths = [
|
|
'xml/1999年之前_e3d7b377-f26f-402c-af13-e402a764773a.xml',
|
|
'xml/1月_2537f56e-2f4e-45fa-b8b5-b4298e6467f2.xml',
|
|
'xml/2000年_f435df04-83a0-458c-9030-fbd278131072.xml',
|
|
'xml/2001年_1029f67d-bed6-41f5-8594-f7f8be046cbf.xml',
|
|
'xml/2002年_4da5f5f5-1ab3-4e63-8ea9-5d04c91d0860.xml',
|
|
'xml/2003年_1742c3f6-3c07-4ee0-a32b-21c69fa8d701.xml',
|
|
'xml/2004年_1c2188fe-bb78-4591-85a7-5b614a017d9b.xml',
|
|
'xml/2006年_a15d20d7-f984-4dbe-8b7e-a76e5ab1bd95.xml',
|
|
'xml/2007年_2c740fa7-af4f-4737-8673-41886b0d292f.xml',
|
|
'xml/2008年_ef9b84b5-8222-405a-8623-0a3ad70bd610.xml',
|
|
'xml/2009年_f5a59523-2e45-4c39-8562-0749180edb26.xml',
|
|
'xml/2010年_cd8211e1-c358-4d8c-84a0-eb7d2e436c11.xml',
|
|
'xml/2011年_0cf822e5-d663-4656-8dee-c3a515780e58.xml',
|
|
'xml/2012年_ba5eb19e-ff15-4303-92a0-c128f19fe0d2.xml',
|
|
'xml/2013年_47167073-c83f-49d2-811a-f46244ace505.xml',
|
|
'xml/2013年_b472b9e1-c92e-4922-b568-441c671b66f7.xml',
|
|
'xml/2014年_82c115d6-bfbb-41fb-bde5-62bd637f60f1.xml',
|
|
'xml/2015年_ccf6f9ce-59ed-40af-8f69-0b368d02437e.xml',
|
|
'xml/2016年_bf9b9ed1-903f-4c3b-8e1d-103dec96c546.xml',
|
|
'xml/2017年_bd9b5558-4a27-47d6-b0d9-6c896f8997c5.xml',
|
|
'xml/2018年_ac33df3d-5595-4731-89e4-85c52fe0e19a.xml',
|
|
'xml/2019年_76549afa-69b3-4acf-8822-45d6003aebef.xml',
|
|
'xml/2020年_fac21a28-9ea0-4917-a856-71f25acefcde.xml',
|
|
'xml/2021年_8f26e26c-3569-46cc-9cfe-3854680c823e.xml',
|
|
'xml/2022年_e95d5f08-83c1-41a4-8d8e-729b57c6c940.xml',
|
|
'xml/2月_3dca592a-f114-4212-886f-e873bdf24631.xml',
|
|
'xml/3月_289684c2-a147-4654-9f6a-acb7d6e4b731.xml',
|
|
'xml/4月_25cdbed9-5465-4b54-aa9b-5d6eb8ef9d54.xml',
|
|
'xml/5月_38a9a0a4-39bd-4a56-a5f1-0f5c7409a3ec.xml',
|
|
'xml/6月_dbcae8bf-082d-4c7d-8049-6b83acef8e8b.xml',
|
|
'xml/7月_b299cdc0-0e89-4e8f-b350-4bb62c5582fb.xml',
|
|
'xml/8月_576e923b-79c1-4acf-a73a-d5df0a469540.xml',
|
|
'xml/当日_e050b4c8-6e70-4a25-94f3-f5fbcf0babe6.xml',
|
|
'xml/当月_aba548a6-08bf-4137-8875-fa82b717d88d.xml',
|
|
]
|
|
load_json(xml_paths) |