Created
September 7, 2024 18:20
-
-
Save jonrau1/aa183eec9d8851b1fe56f23d45882976 to your computer and use it in GitHub Desktop.
Retrieve unique CVE IDs from Vulncheck KEV
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from os import environ | |
import logging | |
import requests | |
logging.basicConfig(level=logging.INFO) | |
logger = logging.getLogger(__name__) | |
VULNCHECK_TOKEN = environ.get("VULNCHECK_TOKEN") | |
def retrieve_vulncheck_kev() -> list[dict]: | |
kevDataPages = [] | |
url = "https://api.vulncheck.com/v3/index/vulncheck-kev" | |
headers = {"accept": "application/json"} | |
cookies = {"token": VULNCHECK_TOKEN} | |
params = {"page": 1} | |
response = requests.get(url, headers=headers, cookies=cookies, params=params) | |
if response.status_code == 200: | |
totalPages = response.json()["_meta"]["total_pages"] | |
kevDataPages.extend(response.json()["data"]) | |
for page in range(2, totalPages + 1): | |
params["page"] = page | |
response = requests.get(url, headers=headers, cookies=cookies, params=params) | |
if response.status_code == 200: | |
kevDataPages.extend(response.json()["data"]) | |
else: | |
logger.warning(f"Failed to fetch page {page}. Status code: {response.status_code}") | |
continue | |
logger.info(f"Retrieved {len(kevDataPages)} Vulncheck KEV ") | |
return kevDataPages | |
def process_vc_kev(): | |
kevCves = [] | |
for x in retrieve_vulncheck_kev(): | |
for cve in x["cve"]: | |
if cve not in kevCves: | |
kevCves.append(cve) | |
# do stuff ... logger.info(f"KEV CVEs: {kevCves}") | |
process_vc_kev() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
ChatGPT suggestions to add some more efficiency. Would love to know if they work