//SAM BLAMER
personal projects / research / technical archive
/projects/Cyber News Display/cveFeed.py
from pathlib import Path
import requests
from datetime import datetime, timedelta
import json
curtime = datetime.now(tz=None)
starttime = curtime - timedelta(hours=36)
stime = starttime.strftime("%Y-%m-%dT%H:%M:%S")
etime = curtime.strftime("%Y-%m-%dT%H:%M:%S")
criticals = requests.get(f"https://services.nvd.nist.gov/rest/json/cves/2.0?cvssV3Severity=CRITICAL&pubStartDate={stime}&pubEndDate={etime}")
highs = requests.get(f"https://services.nvd.nist.gov/rest/json/cves/2.0?cvssV3Severity=HIGH&pubStartDate={stime}&pubEndDate={etime}")
jcrit = criticals.json()
jhigh = highs.json()
def parse(data):
for vuln in data["vulnerabilities"]:
vId = str(vuln["cve"]["id"])
score = str(vuln["cve"]["metrics"]["cvssMetricV31"][0]["cvssData"]["baseScore"])
rating = str(vuln["cve"]["metrics"]["cvssMetricV31"][0]["cvssData"]["baseSeverity"])
desc = str(vuln["cve"]["descriptions"][0]["value"])
title = vId + " - Severity: " + score + " [" + rating + "]"
desc = desc.split(". ")
if len(desc) > 1:
desc = desc[0] + ". " + desc[1]
else:
desc = desc[0]
item = {
"title": title,
"description": desc
}
cveList.append(item)
######################
p = Path(__file__).with_name('cveData.json')
with open(p) as fp:
cveList = json.load(fp)
#print(len(newsList))
parse(jhigh)
parse(jcrit)
while len(cveList) > 20:
print(len(cveList))
del cveList[0]
# make changes to newsList
with open(p, 'w') as fp:
json.dump(cveList, fp, indent=2)