您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
simple code pour extraire les scores et vecteurs pour une cve depuis nvd
// ==UserScript== // @name NVD_extract_values // @namespace http://tampermonkey.net/ // @version 1.0 // @description simple code pour extraire les scores et vecteurs pour une cve depuis nvd // @author cyril D. // @match https://nvd.nist.gov/vuln/detail/* // @icon https://www.google.com/s2/favicons?sz=64&domain=nist.gov // @grant none // ==/UserScript== (function() { function extract_nvd_dict_values(returnFonction = null, doc=document, debug=false){ // nvd_return = returnFonction(nvd_return, version, type_, tail, score, vector) et let nvd_return = new Map(); // v1.0 du 01/10/2024 if (returnFonction === null) {returnFonction=function default_returnFonction(nvd_return, version, type_, tail, score, vector) {return nvd_return;}} let id_shell_score="Cvss<version><type>CalculatorAnchor<tail>"; let id_shell_vector="vuln-cvss<version>-<type>-vector"; let class_shell_vector="tooltipCvss<version><type>Metrics"; let list_version=[2,3,4]; let list_type=["","Nist", "Cna", "Adp"]; let list_tail=["", "NA"]; let list_na=["n/a", "na", "ØØ"] let nvd_return = new Map(); let what, score, vector, prefixe_map; for (const version of list_version) { for (const type_ of list_type) { for (const tail of list_tail) { let lowerType=type_.toLowerCase(); if(type_ == "" || lowerType == "nist" || lowerType == "nvd"){ what=""; }else{ what="_CNA"; } prefixe_map = `v${version}${what}`; score="" vector="" let id_score = id_shell_score.replace("<version>",version).replace("<type>",type_).replace("<tail>",tail); try{ let elem_score = doc.getElementById(id_score); score = elem_score.innerText; score = score.trim(); score = score.split(' ')[0]; if(debug){console.log(prefixe_map, score.toLowerCase());} if(!list_na.includes(score.toLowerCase())) { score=parseInt(score.replace(/\./g, ''),10)/10; // remplace le texte x.y en xy puis divise par 10 pour recuperer la version numérique } }catch{} let id_vector = id_shell_vector.replace("<version>",version).replace("<type>",type_).replace("<tail>",tail).toLowerCase(); try{ let elem_vector = doc.getElementById(id_vector); vector=elem_vector.innerText; }catch{ // on va essayer avec la class let class_vector = class_shell_vector.replace("<version>",version).replace("<type>",type_).replace("<tail>",tail); try{ let elems_vector = doc.getElementsByClassName(class_vector); if(elems_vector.length>0){ // on prend le premier vector=elems_vector[0].innerText; } }catch{} } if(debug){console.log(prefixe_map, score, vector);} nvd_return = returnFonction(nvd_return, version, type_, tail, score, vector) } } } return nvd_return } console.log(extract_nvd_dict_values(null, document,true)); })();