一、trivyDB的存储内容
一张图概括
从已有的db中查看
- 这里我写了个demo,主要分析
vulnerability bucket
以及 ubuntu 20.04 bucket
, 其中 ubuntu 20.04 bucket
是一个嵌套 bucket 里面嵌套了很多 pkgName bucket
package main
import (
"fmt"
"time"
bolt "go.etcd.io/bbolt"
)
func main() {
db, err := bolt.Open("trivy.db", 0600, &bolt.Options{
Timeout: 1 * time.Second})
if err != nil {
panic("init trivydb failed")
}
db.View(func(tx *bolt.Tx) error {
dataSource := tx.Bucket([]byte("vulnerability"))
dataSource.ForEach(func(k, v []byte) error {
if string(k) == "CVE-2022-24809" {
fmt.Println(string(k))
fmt.Println(string(v))
}
return nil
})
return nil
})
db.View(func(tx *bolt.Tx) error {
tx.ForEach(func(name []byte, b *bolt.Bucket) error {
fmt.Println(string(name))
if string(name) == "ubuntu 20.04" {
fmt.Println(string(name))
b.ForEach(func(k, v []byte) error {
if string(k) == "curl" {
fmt.Println(string(k))
nestedbucket := b.Bucket([]byte("curl"))
nestedbucket.ForEach(func(k, v