🚀
高性能解析
快速准确地解析 CVSS 3.0 和 3.1 向量字符串,支持所有标准指标和扩展指标。
go get github.com/scagogogo/cvss
package main
import (
"fmt"
"log"
"github.com/scagogogo/cvss-parser/pkg/cvss"
"github.com/scagogogo/cvss-parser/pkg/parser"
)
func main() {
// 解析 CVSS 向量
p := parser.NewCvss3xParser("CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H")
cvssVector, err := p.Parse()
if err != nil {
log.Fatalf("解析失败: %v", err)
}
// 计算评分
calculator := cvss.NewCalculator(cvssVector)
score, err := calculator.Calculate()
if err != nil {
log.Fatalf("计算失败: %v", err)
}
fmt.Printf("CVSS 评分: %.1f\n", score)
fmt.Printf("严重性: %s\n", calculator.GetSeverityRating(score))
}
// 评估漏洞严重性
vectors := []string{
"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
"CVSS:3.1/AV:L/AC:H/PR:H/UI:R/S:U/C:L/I:L/A:L",
}
for _, vectorStr := range vectors {
// 解析和评估...
}
// 计算向量距离
distCalc := cvss.NewDistanceCalculator(vector1, vector2)
distance := distCalc.EuclideanDistance()
fmt.Printf("向量距离: %.3f\n", distance)
// JSON 序列化
jsonData, err := json.Marshal(cvssVector)
if err != nil {
log.Fatal(err)
}