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

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

 

#要通过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 = 60  
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-04-01T00:00:00.000',#start_date,  
    'pubEndDate': 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}  ")
        # 检查是否有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()
 

这段代码首先设置了NVD API的URL和请求参数,包括开始和结束日期,以获取指定时间范围内的漏洞数据。然后,它发送一个GET请求到NVD API,并检查响应状态码是否为200(表示成功)。如果成功,它解析返回的JSON数据,并遍历每个漏洞条目来查找带有CPE信息的条目。

请注意,这个示例仅展示了如何获取和筛选数据。在实际应用中,你可能需要更复杂的逻辑来处理大量数据、错误处理、分页请求等。此外,由于NVD API可能发生变化或有限制(例如请求频率限制),你可能需要查阅最新的NVD API文档以获取最新的信息。

最后,记得遵守NVD API的使用条款和政策,确保你的使用是合法和合规的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/578587.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【库函数】Linux下动态库.so和静态库.a的生成和使用

目录 🌞1. Linux下静态库和动态库的基本概念 🌞2. 动态库 🌊2.1 动态库如何生成 🌍2.1.1 文件详情 🌍2.1.2 编译生成动态库 🌊2.2 动态库如何使用 🌍2.2.1 案例 🌍2.2.2 动态…

TCP详解

2.1TCP 由IETF的RFC793定义的传输控制协议(Transmission Control Protocol,TCP)是一种基于字节流的传输层通信协议。在传输数据前需要在发送与接收者之间建立连接,通过相应机制保证其建立连接的可靠性。 TCP协议具备以下特性&am…

云备份项目->配置环境

升级gcc到7.3版本 sudo yum install centos-release-scl-rh centos-release-scl sudo yum install devtoolset-7-gcc devtoolset-7-gcc-c source /opt/rh/devtoolset-7/enable echo "source /opt/rh/devtoolset-7/enable" >> ~/.bashrc 安装Jsoncpp库 sud…

十、多模态大语言模型(MLLM)

1 多模态大语言模型(Multimodal Large Language Models) 模态的定义 模态(modal)是事情经历和发生的方式,我们生活在一个由多种模态(Multimodal)信息构成的世界,包括视觉信息、听觉信息、文本信息、嗅觉信…

STM32与Proteus的串口仿真详细教程与源程序

资料下载地址:STM32与Proteus的串口仿真详细教程与源程序 资料内容 包含LCD1602显示,串口发送接收,完美实现。 文档内容齐全,包含使用说明,相关驱动等。 解决了STM32的Proteus串口收发问题。 注意:每输…

IP-guard getdatarecord 存在任意文件读取

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 一、产品介绍 IP-guard是由溢信科技股份有限公司开发的一款终端安全管…

揭秘被忽视的商业模式:全民拼购助力客户实现日销千万的惊人业绩

今天,我想和大家分享一个颇具潜力的模式与玩法,尽管它在外界看来可能略显陈旧。这个模式曾被忽视,但我的一位客户却巧妙运用,实现了惊人的业绩——日销售额接近五千万,日订单量高达300万单。 值得注意的是,…

一键搞定COX回归亚组森林图!快速生成顶级SCI论文的高清图!

现在亚组分析好像越来越流行,无论是观察性研究还是RCT研究,亚组分析一般配备森林图。 比如NEJM这张图: 比如Lancet这张图: 但是在使用R语言绘制时,简单的代码画不出好看的图,好看的图又需要许多代码参数来进…

[HUBUCTF 2022 新生赛]最简单的misc

有点简单, 要用到工具lsb,qr扫码 一般杂项先binwalk,不行的话在lsb 因为头是png所以save bin出二维码,用QR扫码 即可得出flag

知识分享之cookie

http协议中的cookie,什么是cookie如何获取cookie 一、什么是Cookie Cookie(曲奇,小甜饼的译名)在互联网技术领域中,是指一种小型文本文件,它由网站服务器发送给用户的浏览器,并被浏览器存储在用…

Linux--自主编写shell

目录 准备知识 shell原理 shell与用户互动的过程 实现shell 0.用到的头文件和宏定义 1.首先我们需要自己输出一个命令行 2.获取用户命令行字符 3.命令行字符串分割 4.执行命令 5.设置循环 6.检测内建命令 7.完善细节--获取工作目录而非路径 准备知识 Linux--环境…

太速科技-基于6 U VPX M.2 高带宽加固存储板

基于6 U VPX M.2 高带宽加固存储板 一、板卡概述 基于6 U VPX M.2 高带宽加固存储板,可以实现VPX接口的数据读写到PCI-E总线的NVME存储媒介上。采用PLX8732,上行链路提供带宽x16的PCI-E数据到VPX接口上;下行链路提供3路带宽x4的PCI-E接口…

重生之我是Nginx服务专家

nginx服务访问页面白色 问题描述 访问一个域名服务返回页面空白,非响应404。报错如下图。 排查问题 域名解析正常,网络通讯正常,绕过解析地址访问源站IP地址端口访问正常,nginx无异常报错。 在打开文件时,发现无法…

(学习日记)2024.05.04:UCOSIII第五十八节:User文件夹函数概览(uCOS-III->Source文件夹)第四部分

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

自制音频格式二维码的方法,适合多种音频格式使用

现在可以通过二维码的方法来传递音频文件是很常用的一种方式,可以将单个或者多个音频放入一个二维码,通过手机扫码来调取云端储存的音频文件来播放内容,这样可以让多人同时扫码获取内容,提升传播速度。 音频二维码制作的方法也比…

数据库 和 SQL 和 索引事务 和 Java数据库编程(JDBC)

一、初识数据库 什么是数据库?和数据结构有什么关系? 数据库是“一类软件”,能够针对数据进行管理。数据结构,也是针对数据进行管理。所以,数据库其实就是一个“基于数据结构”实现出来的软件。 有哪些常用数据库&…

Postman,一个功能强大的API开发和测试工具

最近有小伙伴说在找 postman 的使用教程,案例等文章。 那么今天我就来写一个。 Postman 是一个功能强大的 API 开发和测试工具,它提供了丰富的功能,帮助开发人员更好地管理、测试和文档化 API。无论是单独开发还是团队协作,Postma…

社交媒体数据恢复:MiChat

在数字化时代,我们的生活与社交媒体平台紧密相连,如MiChat等即时通讯应用成为沟通的桥梁。然而,数据丢失的风险始终存在,使得“及时备份”这一概念愈发重要。当用户不慎删除了珍贵的聊天记录时,他们可能会感到绝望。幸…

Xcode隐私协议适配

1. Privacy manifest files 1.1 简介 自己App或三方SDK(通过XCFrameworks|Swift packages|Xcode projects集成的)需要包含一个隐私清单文件(privacy manifest)叫作 PrivacyInfo.xcprivacy。它是一个属性列表,记录了A…

Spring一篇搞定!控制反转特性(IOC)详细笔记

控制反转(IOC) 是什么 控制反转(Inversion of Control,IoC)是一种设计思想,它的本质是将对象的创建、销毁、依赖关系的维护等控制权从程序代码中转移出去,交由容器来负责管理。在Java开发中&a…