Skip to content

Commit

Permalink
added output to csv
Browse files Browse the repository at this point in the history
  • Loading branch information
kopolindo committed Apr 2, 2018
1 parent cba9c37 commit bf82da0
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 5 deletions.
4 changes: 2 additions & 2 deletions db/populate.go
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ func SwSerch(sw string) []Results {

func SwVSerch(sw string, ver string) []Results {
var query string
query = "SELECT cve.cve,sw.software,sw.version,cve.cwe,cve.cwe_description,cve.cvssv3 FROM cve join sw on cve.cve = sw.id where sw.software like ? and (sw.version like ?)"
query = "SELECT cve.cve,cve.cve_description,sw.software,sw.version,cve.cwe,cve.cwe_description,cve.cvssv3 FROM cve join sw on cve.cve = sw.id where sw.software like ? and (sw.version like ?)"
software := strings.Join([]string{"%", sw, "%"}, "")
var version, searchCase string
db := OpenDB()
Expand Down Expand Up @@ -235,7 +235,7 @@ func SwVSerch(sw string, ver string) []Results {
_ = searchCase
for rows.Next() {
i++
err := rows.Scan(&field.cveID, &field.sw, &field.ver, &field.cwe, &field.cweDescription, &field.cvssv3)
err := rows.Scan(&field.cveID, &field.cveDescription, &field.sw, &field.ver, &field.cwe, &field.cweDescription, &field.cvssv3)
if err != nil {
fmt.Println("ROW SCANNING ERROR: ", err)
}
Expand Down
33 changes: 30 additions & 3 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@ package main
import (
"flag"
"fmt"
"io/ioutil"
"os"
"reflect"
"regexp"
"strings"
"text/tabwriter"

"github.com/alecthomas/template"
"github.com/jweir/csv"
"github.com/kopolindo/cve-scraper/db"
_ "github.com/mattn/go-sqlite3"
)
Expand All @@ -35,17 +37,21 @@ type Version struct {
Commit string
}

var fieldsToPrint []string
var AllowedFields = []string{"Cve", "CveDesc", "Cwe", "CweDesc", "Exploit", "Refs", "Cvssv2", "Cvssv3", "Software", "Version"}
var (
fieldsToPrint []string
AllowedFields = []string{"Cve", "CveDesc", "Cwe", "CweDesc", "Exploit", "Refs", "Cvssv2", "Cvssv3", "Software", "Version"}

var ActualVersion = Version{"0.1", "Developing", "de9bd41fa1450f6a5bbb667567040615c945c0c6"}
ActualVersion = Version{"0.1", "Developing", "de9bd41fa1450f6a5bbb667567040615c945c0c6"}
output bool
)

//FLAGS
var (
cve = flag.String("cve", "", "CVE-ID to look for (at least year in format YYYY and ID number)")
sw = flag.String("sw", "", "Software name to look for")
swVersion = flag.String("swv", "", "Software version (Exact search by default)\n\t~ Generic search (looks for any similar string in the version field)")
fields = flag.String("fields", "", "Fields to print, comma separated\n[Cve,CveDesc,Cwe,CweDesc,Exploit,Refs,Cvssv2,Cvssv3,Software,Version]")
write = flag.String("write", "", "Output file (csv)")
version = flag.Bool("v", false, "Print version and exit")
)

Expand Down Expand Up @@ -74,6 +80,12 @@ func Init() {
if *fields == "" {
fieldsToPrint = strings.Split("Cve,CveDesc,Cwe,CweDesc,Exploit,Refs,Cvssv2,Cvssv3,Software,Version", ",")
}
if *write != "" {
if _, err := os.Stat(*write); err == nil {
fmt.Println("This file exists")
os.Exit(1)
}
}
}

func validateFields() []string {
Expand Down Expand Up @@ -120,6 +132,20 @@ func printResults(resArray []db.Results, fields []string) {
}
}

func writeCsv(resArray []db.Results) {
if *write != "" {
csvout, err := csv.Marshal(resArray)
if err != nil {
fmt.Println("Error durin marshalling [", err, "]")
}
//fmt.Println(string(csvout))
errWrite := ioutil.WriteFile("out.csv", csvout, 0644)
if errWrite != nil {
fmt.Println("Error during writing to file [", err, "]")
}
}
}

/************************
* MAIN FUNCTION *
************************/
Expand All @@ -141,5 +167,6 @@ func main() {
resArray = db.SwVSerch(*sw, *swVersion)
}
}
writeCsv(resArray)
printResults(resArray, fieldsToPrint)
}

0 comments on commit bf82da0

Please sign in to comment.