From e7421931c23c4814deb59497921f3c98c0605695 Mon Sep 17 00:00:00 2001 From: Christopher Talib Date: Wed, 19 Feb 2020 15:26:47 +0100 Subject: [PATCH] Couple of quickfixes to allow run a dry installion (deactivating ES and balboa) --- broker/main.go | 10 +++++--- main.go | 63 +++++++++++++++++++++++++++++--------------------- 2 files changed, 44 insertions(+), 29 deletions(-) diff --git a/broker/main.go b/broker/main.go index 00a3a20..2af6f70 100644 --- a/broker/main.go +++ b/broker/main.go @@ -64,9 +64,13 @@ func ReadEventFromKafka() { if err != nil { logrus.Error("error reading message:", err) } - c, err := balboa.GetClient() - if err != nil { - logrus.Warn("cannot get balboa client:", err) + + var c *balboa.Client + if viper.GetBool("balboa.activated") { + c, err = balboa.GetClient() + if err != nil { + logrus.Warn("cannot get balboa client:", err) + } } var node models.Node diff --git a/main.go b/main.go index 13a0269..cfcb065 100644 --- a/main.go +++ b/main.go @@ -66,7 +66,7 @@ func main() { // shodan client := shodan.NewEnvClient(nil) ch := make(chan *shodan.HostData) - err = client.GetBannersByPorts(context.Background(), viper.GetIntSlice("shodan.ports"), ch) + err = client.GetBanners(context.Background(), ch) if err != nil { logrus.Panic(err) } @@ -115,16 +115,21 @@ func certstreamRoutine(stream chan jsonq.JsonQuery, errStream chan error, conn * func pastebinRoutine(stopChan chan os.Signal, wg *sync.WaitGroup) { fmt.Println("pastebin is activated") + + elastic := viper.GetBool("elasticsearch.activated") var e *elasticsearch.ElasticStorageModule - e = &elasticsearch.ElasticStorageModule{ - ElasticURL: viper.GetString("elasticsearch.url"), - DailyIndexes: true, - UseIndex: "pastebin", - LastChk: time.Now(), - } - err := e.Initialize() - if err != nil { - panic(err) + if elastic { + fmt.Println("elasticsearch is activated") + e = &elasticsearch.ElasticStorageModule{ + ElasticURL: viper.GetString("elasticsearch.url"), + DailyIndexes: true, + UseIndex: "pastebin", + LastChk: time.Now(), + } + err := e.Initialize() + if err != nil { + panic(err) + } } for { select { @@ -143,7 +148,9 @@ func pastebinRoutine(stopChan chan os.Signal, wg *sync.WaitGroup) { Full: paste, } res := models.BuildPasteNode(&fp) - e.StorePaste(fp) + if elastic { + e.StorePaste(fp) + } models.SavePaste("paste_formatted.json", res) time.Sleep(1 * time.Second) @@ -169,22 +176,26 @@ func shodanRoutine(client *shodan.Client, shodanChan chan *shodan.HostData, conn shodanNode := models.BuildShodanNode(banner) // first filter poc - if !filters.RunIPFilters(shodanNode.Data.IP) { - hostnames := shodanNode.Data.Hostnames - if len(hostnames) != 0 { - saveSingleValues(conn, "shodan_stream", "hostname", shodanNode.ID, hostnames) + if shodanNode.Data.HTML != "" { + fmt.Println("##### not empty HTML", shodanNode.ID) + if !filters.RunIPFilters(shodanNode.Data.IP) { + fmt.Println("##### not in filters", shodanNode.ID) + hostnames := shodanNode.Data.Hostnames + if len(hostnames) != 0 { + saveSingleValues(conn, "shodan_stream", "hostname", shodanNode.ID, hostnames) + } + domains := shodanNode.Data.Domains + if len(domains) != 0 { + saveSingleValues(conn, "shodan_stream", "domain", shodanNode.ID, domains) + } + models.SaveShodanNode("raw_shodan.json", shodanNode) + node := models.BuildNode("shodan", "shodan_stream", shodanNode.ID) + models.SaveNode("nodes.json", node) + edge := models.BuildEdge("shodan", shodanNode.ID, node.ID) + models.SaveEdge(edge) + } else { + fmt.Println("is akamai", shodanNode.Data.IP) } - domains := shodanNode.Data.Domains - if len(domains) != 0 { - saveSingleValues(conn, "shodan_stream", "domain", shodanNode.ID, domains) - } - models.SaveShodanNode("raw_shodan.json", shodanNode) - node := models.BuildNode("shodan", "shodan_stream", shodanNode.ID) - models.SaveNode("nodes.json", node) - edge := models.BuildEdge("shodan", shodanNode.ID, node.ID) - models.SaveEdge(edge) - } else { - fmt.Println("is akamai", shodanNode.Data.IP) } case <-stopChan: wg.Done()