30 lines
933 B
Python
30 lines
933 B
Python
import requests
|
|
import json
|
|
import pandas as pd
|
|
|
|
from rprint import *
|
|
from lxml import etree
|
|
|
|
search_url = "https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword={keyword}"
|
|
detail_url = "https://cve.mitre.org/cgi-bin/cvename.cgi?name={cve}"
|
|
|
|
def get_cve_json(keyword: str) -> dict:
|
|
header = ["CVE","Detail"]
|
|
url = search_url.format(keyword=keyword)
|
|
r =requests.get(url)
|
|
if r.status_code == 200:
|
|
html_tree = etree.HTML(r.text)
|
|
table_html = html_tree.xpath('//*[@id="TableWithRules"]/table')[0]
|
|
table_html = etree.tostring(table_html, pretty_print=True, encoding='unicode')
|
|
df_list = pd.read_html(table_html)
|
|
df = df_list[0]
|
|
table_data = df.values.tolist()
|
|
table_data.insert(0,header)
|
|
ret = [dict(zip(header, row)) for row in table_data[1:]]
|
|
return ret
|
|
else:
|
|
return {}
|
|
|
|
if __name__ == "__main__":
|
|
banner()
|
|
print(get_cve_json("AC6")) |