Python实现使用NVD API获取最新发布且带有CPE信息的漏洞

#要通过Python实现使用NVD API获取最新发布且带有CPE信息的漏洞,
#使用requests库来发送HTTP请求,并使用json库来解析返回的JSON数据。以下是一个简单的示例代码:

import requests 
import json 
from datetime import datetime, timedelta 

# 打开记录文件# # Open the file in append mode
file = open('myfile.txt', 'a')

# NVD API的URL 
NVD_API_URL = "https://services.nvd.nist.gov/rest/json/cves/2.0/" 

# 设置时间范围以获取最新发布的漏洞,例如过去7天 
days_ago = 30 
start_date = (datetime.now() - timedelta(days=days_ago)).strftime('%Y-%m-%dT00:00:00.000') 
end_date = datetime.now().strftime('%Y-%m-%dT00:00:00.000') 

# 构造API请求参数 
params = { 
  'pubStartDate': start_date,# '2024-02-27T00:00:00.000',#start_date,#'2024-01-01T00:00:00.000',#start_date,#'2024-04-01T00:00:00.000',#start_date, 
  'pubEndDate': end_date,#'2024-04-27T13:36:00.000',#end_date,# '2024-02-27T00:00:00.000',#end_date,#'2024-04-26T13:36:00.000', 
  #'resultsPerPage': 10, # 每次请求返回的漏洞数量,可以根据需要调整 
  'virtualMatchString': 'cpe:2.3:*:*:*:*:*:*:*'

file.write("#####################################################]\r")
#Append content to the file
file.write(f"now:{datetime.now()} startDate:{start_date} endDate:{end_date}\r")

# 发送HTTP GET请求 
response = requests.get(NVD_API_URL, params=params) 
print("reponse:{response.status_code}")  
# 检查请求是否成功 
if response.status_code == 200: 

  # 解析返回的JSON数据 
  cve_data = response.json() 

  #print(cve_data) 

  # 提取带有CPE信息的漏洞 
  print(cve_data['totalResults'])
  file.write(f"totalrecords:{cve_data['totalResults']}\r")
  for cve_item in cve_data['vulnerabilities']: 
    cve_id = cve_item['cve']['id'] 
    print(f"CVE ID: {cve_id}") 
    file.write(f"CVE ID: {cve_id} CVSS: {cve_item['cve']['metrics']['cvssMetricV31'][0]['cvssData']['baseScore']} ")
    # 检查是否有CPE信息 
    #print(cve_item['cve']['configurations'][0]['nodes'])
    if 'configurations' in cve_item['cve']:
      for configuration_item in cve_item['cve']['configurations']:
        for node_item in configuration_item['nodes']:
          for cpe_item in node_item['cpeMatch']:
            a=1
            #print(cpe_item['criteria'])
          # 在这里可以进一步处理每个带有CPE信息的漏洞 
      file.write(f"{cve_item['cve']['configurations'][0]['nodes'][0]['cpeMatch'][0]['criteria']}\r")
    #print("---") 
else: 
  print(f"Failed to retrieve data from NVD API. Status code: {response.status_code}")

# Close the file
file.close()

相关推荐

  1. 获取CVE信息

    2024-04-30 14:34:02       23 阅读
  2. 使用python检查cpu信息

    2024-04-30 14:34:02       30 阅读
  3. 使用python获取内存信息

    2024-04-30 14:34:02       39 阅读
  4. SSH协议中发现安全漏洞CVE-2023-48795

    2024-04-30 14:34:02       74 阅读
  5. PYTHON 访问NVD获取漏洞信息保存到本地数据库

    2024-04-30 14:34:02       32 阅读
  6. QT实现windows下获取CPU、内存及磁盘信息

    2024-04-30 14:34:02       36 阅读
  7. Android获取CPU使用率

    2024-04-30 14:34:02       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-30 14:34:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-30 14:34:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-30 14:34:02       82 阅读
  4. Python语言-面向对象

    2024-04-30 14:34:02       91 阅读

热门阅读

  1. 深度刨析JVM垃圾收集的艺术

    2024-04-30 14:34:02       28 阅读
  2. 人脸识别系统

    2024-04-30 14:34:02       34 阅读
  3. 模型剪枝——RETHINKING THE VALUE OF NETWORK PRUNING

    2024-04-30 14:34:02       157 阅读
  4. R可视化:Venn图进阶版本

    2024-04-30 14:34:02       29 阅读
  5. ES6要点

    ES6要点

    2024-04-30 14:34:02      33 阅读
  6. 用于网络唤醒(Wake-on-LAN)和远程关机的方法

    2024-04-30 14:34:02       144 阅读
  7. MySQL随便聊----之SQL的简单了解

    2024-04-30 14:34:02       129 阅读