Bring the VulnCheck API to your Python applications.
# From PyPi
pip install vulncheck-sdk
Important
Windows users may need to enable Long Path Support
import vulncheck_sdk
# First let's setup a few variables to help us
DEFAULT_HOST = "https://api.vulncheck.com"
DEFAULT_API = DEFAULT_HOST + "/v3"
TOKEN = os.environ["VULNCHECK_API_TOKEN"] # Remember to store your token securely!
# Now let's create a configuration object
configuration = vulncheck_sdk.Configuration(host=DEFAULT_API)
configuration.api_key["Bearer"] = TOKEN
# Pass that config object to our API client and now...
with vulncheck_sdk.ApiClient(configuration) as api_client:
# We can use two classes to explore the VulnCheck API: EndpointsApi & IndicesApi
### EndpointsApi has methods to query every endpoint except `/v3/index`
# See the full list of endpoints here: https://docs.vulncheck.com/api
endpoints_client = vulncheck_sdk.EndpointsApi(api_client)
# PURL
api_response = endpoints_client.purl_get("pkg:hex/[email protected]")
data: V3controllersPurlResponseData = api_response.data
print(data.cves)
# CPE
cpe = "cpe:/a:microsoft:internet_explorer:8.0.6001:beta"
api_response = endpoints_client.cpe_get(cpe)
for cve in api_response.data:
print(cve)
# Download a Backup
api_response = endpoints_client.backup_index_get("initial-access")
backup_url = requests.get(api_response.data[0].url)
file_path = f"{index}.zip"
with open(file_path, "wb") as file:
file.write(backup_url.content)
### IndicesApi has methods for each index
indices_client = vulncheck_sdk.IndicesApi(api_client)
# You can filter your query using parameters as well
query_params = vulncheck_sdk.ParamsIdxReqParams(cve="CVE-2019-19781")
api_response = indices_client.index_vulncheck_nvd2_get(query_params)
print(api_response.data)
# There are many more indices to explore!
api_response = indices_client.index_vulncheck_kev_get(vulncheck_sdk.ParamsIdxReqParams())
api_response = indices_client.index_exploits_get(vulncheck_sdk.ParamsIdxReqParams())
api_response = indices_client.index_ipintel3d_get(vulncheck_sdk.ParamsIdxReqParams())
api_response = indices_client. # An editor with a Language Server will show you all the available methods/indices!
Get the CVE's for a given PURL
import vulncheck_sdk
from vulncheck_sdk.models.v3controllers_purl_response_data import (
V3controllersPurlResponseData,
)
DEFAULT_HOST = "https://api.vulncheck.com"
DEFAULT_API = DEFAULT_HOST + "/v3"
TOKEN = os.environ["VULNCHECK_API_TOKEN"]
configuration = vulncheck_sdk.Configuration(host=DEFAULT_API)
configuration.api_key["Bearer"] = TOKEN
with vulncheck_sdk.ApiClient(configuration) as api_client:
endpoints_client = vulncheck_sdk.EndpointsApi(api_client)
purl = "pkg:hex/[email protected]"
api_response = endpoints_client.purl_get(purl)
data: V3controllersPurlResponseData = api_response.data
print(data.cves)
Get all CPE's related to a CVE
import vulncheck_sdk
DEFAULT_HOST = "https://api.vulncheck.com"
DEFAULT_API = DEFAULT_HOST + "/v3"
TOKEN = os.environ["VULNCHECK_API_TOKEN"]
configuration = vulncheck_sdk.Configuration(host=DEFAULT_API)
configuration.api_key["Bearer"] = TOKEN
with vulncheck_sdk.ApiClient(configuration) as api_client:
endpoints_client = vulncheck_sdk.EndpointsApi(api_client)
cpe = "cpe:/a:microsoft:internet_explorer:8.0.6001:beta"
api_response = endpoints_client.cpe_get(cpe)
for cve in api_response.data:
print(cve)
Download the backup for an index
import requests
import vulncheck_sdk
DEFAULT_HOST = "https://api.vulncheck.com"
DEFAULT_API = DEFAULT_HOST + "/v3"
TOKEN = os.environ["VULNCHECK_API_TOKEN"]
configuration = vulncheck_sdk.Configuration(host=DEFAULT_API)
configuration.api_key["Bearer"] = TOKEN
with vulncheck_sdk.ApiClient(configuration) as api_client:
endpoints_client = vulncheck_sdk.EndpointsApi(api_client)
index = "initial-access"
api_response = endpoints_client.backup_index_get(index)
backup_url = requests.get(api_response.data[0].url)
file_path = f"{index}.zip"
with open(file_path, "wb") as file:
file.write(backup_url.content)
Get all available indices
import vulncheck_sdk
DEFAULT_HOST = "https://api.vulncheck.com"
DEFAULT_API = DEFAULT_HOST + "/v3"
TOKEN = os.environ["VULNCHECK_API_TOKEN"]
configuration = vulncheck_sdk.Configuration(host=DEFAULT_API)
configuration.api_key["Bearer"] = TOKEN
with vulncheck_sdk.ApiClient(configuration) as api_client:
endpoints_client = vulncheck_sdk.EndpointsApi(api_client)
api_response = endpoints_client.index_get()
for index in api_response.data:
print(index.name)
Query VulnCheck-NVD2 for CVE-2019-19781
import vulncheck_sdk
DEFAULT_HOST = "https://api.vulncheck.com"
DEFAULT_API = DEFAULT_HOST + "/v3"
TOKEN = os.environ["VULNCHECK_API_TOKEN"]
configuration = vulncheck_sdk.Configuration(host=DEFAULT_API)
configuration.api_key["Bearer"] = TOKEN
with vulncheck_sdk.ApiClient(configuration) as api_client:
indices_client = vulncheck_sdk.IndicesApi(api_client)
query_params = vulncheck_sdk.ParamsIdxReqParams(cve="CVE-2019-19781")
api_response = indices_client.index_vulncheck_nvd2_get(query_params)
print(api_response.data)
Paginate over results for a query to VulnCheck-KEV using cursor
import vulncheck_sdk
DEFAULT_HOST = "https://api.vulncheck.com"
DEFAULT_API = DEFAULT_HOST + "/v3"
TOKEN = os.environ["VULNCHECK_API_TOKEN"]
configuration = vulncheck_sdk.Configuration(host=DEFAULT_API)
configuration.api_key["Bearer"] = TOKEN
with vulncheck_sdk.ApiClient(configuration) as api_client:
indices_client = vulncheck_sdk.IndicesApi(api_client)
api_response = indices_client.index_vulncheck_kev_get(
vulncheck_sdk.ParamsIdxReqParams(),
start_cursor="true",
# `limit` increases the size of each page, making it faster
# to download large datasets
limit = 300
)
print(api_response.data)
while api_response.meta.next_cursor is not None:
api_response = indices_client.index_vulncheck_kev_get(
vulncheck_sdk.ParamsIdxReqParams(), cursor=api_response.meta.next_cursor
)
print(api_response.data)
Please see CONTRIBUTING for details.
If you discover any security related issues, please create an issue.
Development of this project is sponsored by VulnCheck learn more about us!
Apache License 2.0. Please see License File for more information.