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()

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
### 回答1: NVD漏洞信息数据集是由美国国家漏洞数据库(National Vulnerability Database,简称NVD)提供的一组包含了各种软件和操作系统的安全漏洞信息的数据集。这个数据集是为了促进网络安全研究和漏洞管理而创建的。 NVD漏洞信息数据集的主要内容包括漏洞的名称、描述、危害级别、可利用性、解决方案、参考链接等。这些信息可以帮助企业和个人识别并修复系统中的安全漏洞,增强网络系统的安全性。 该数据集中的漏洞信息根据不同的标准进行分类和标记,比如CVE(通用漏洞漏洞名称)标识符。这使得研究人员和安全专家可以快速地找到相关的漏洞信息,对其进行深入分析和研究。同时,NVD还将漏洞信息与其他相关的漏洞数据库进行关联,以提供更全面和准确的信息NVD漏洞信息数据集在网络安全研究、漏洞评估、威胁情报等领域起到了重要作用。它为研究人员提供了一个基准,可以对比自己的研究成果,并且可以帮助他们发现新的安全漏洞。另外,NVD漏洞信息数据集也为企业和安全从业者提供了一个重要的参考,帮助他们及时发现并修复可能存在的漏洞,从而降低系统被攻击的风险。 总而言之,NVD漏洞信息数据集是一个重要的安全漏洞信息资源,对于网络安全研究、漏洞管理和威胁情报都有着积极的促进作用。 ### 回答2: NVD漏洞信息数据集是一种包含多个漏洞信息的数据集。NVD是“国家漏洞数据库”(National Vulnerability Database)的简称,它是美国国家标准与技术研究院(NIST)维护的一个公共数据库,用于收集、更新和发布各种软件、硬件和操作系统的漏洞信息NVD漏洞信息数据集包括了各种漏洞的详细信息,包括漏洞的名称、漏洞编号、漏洞描述、漏洞的严重程度等等。这些信息对于安全研究人员、开发人员和系统管理员来说非常有价值,可以帮助他们了解当前存在的漏洞,采取相应的防护措施。 使用NVD漏洞信息数据集,可以对漏洞进行分类和归纳,进而进行漏洞分析和评估。同时,该数据集还可以用于建立漏洞检测和防护系统,提供即时的漏洞更新和修复方案。 NVD漏洞信息数据集的更新频率较高,NIST团队会根据最新漏洞信息不断更新和发布数据集。因此,我们可以及时地获取最新漏洞信息,快速采取应对措施,提高系统的安全性。 总而言之,NVD漏洞信息数据集是一种非常有价值的资源,对于安全研究和漏洞防护都具有重要意义。使用该数据集进行漏洞分析和修复,可以帮助我们更好地保护系统的安全,减少潜在的安全风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值