From 5c36a4d11dcd779b5d6eba892fb3191bad4aed1d Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 3 Oct 2017 22:47:58 -0400 Subject: [PATCH] refactored module parsing to make intuitive sense --- cmd/zgrab2/main.go | 21 ++++++++++++++++----- module.go | 2 +- zmodules/http.go | 2 +- zmodules/ssh.go | 2 +- zmodules/tls.go | 2 +- 5 files changed, 20 insertions(+), 9 deletions(-) diff --git a/cmd/zgrab2/main.go b/cmd/zgrab2/main.go index f44db0e..5e34f32 100644 --- a/cmd/zgrab2/main.go +++ b/cmd/zgrab2/main.go @@ -12,8 +12,8 @@ import ( ) func main() { - _, modType, fl, err := zgrab2.ParseCommandLine(os.Args[1:]) - if err != nil { //blanked arg is positional arguments + _, modType, fl, err := zgrab2.ParseCommandLine(os.Args[1:]) // Blanked arg is positional arguments + if err != nil { // Outputting help is returned as an error. Exit successfuly on help output. flagsErr, ok := err.(*flags.Error) if ok && flagsErr.Type == flags.ErrHelp { @@ -27,14 +27,26 @@ func main() { if modType == "multiple" { iniParser := zgrab2.NewIniParser() m, _ := fl.(*zgrab2.MultipleCommand) + var modTypes []string + var flagsReturned []interface{} if m.ConfigFileName == "-" { - err = iniParser.Parse(os.Stdin) + modTypes, flagsReturned, err = iniParser.Parse(os.Stdin) } else { - err = iniParser.ParseFile(m.ConfigFileName) + modTypes, flagsReturned, err = iniParser.ParseFile(m.ConfigFileName) } if err != nil { log.Fatalf("could not parse multiple: %s", err) } + if len(modTypes) != len(flagsReturned) { + log.Fatalf("error parsing flags") + } + for i, flag := range flagsReturned { + f, _ := flag.(zgrab2.ScanFlags) + mod := *zgrab2.GetModule(modTypes[i]) + s := mod.NewScanner() + s.Init(f) + zgrab2.RegisterScan(s.GetName(), s) + } } else { f, _ := fl.(zgrab2.ScanFlags) mod := *zgrab2.GetModule(modType) @@ -42,7 +54,6 @@ func main() { s.Init(f) zgrab2.RegisterScan(modType, s) } - zgrab2.PrintScanners() m := zgrab2.MakeMonitor() start := time.Now() log.Infof("started grab at %s", start.Format(time.RFC3339)) diff --git a/module.go b/module.go index 4c04abc..b6f7930 100644 --- a/module.go +++ b/module.go @@ -66,7 +66,7 @@ func init() { func RegisterScan(name string, s Scanner) { //add to list and map if scanners[name] != nil { - log.Fatal("name already used") + log.Fatalf("name: %s already used", name) } orderedScanners = append(orderedScanners, name) scanners[name] = &s diff --git a/zmodules/http.go b/zmodules/http.go index ebeae2a..31d18d1 100644 --- a/zmodules/http.go +++ b/zmodules/http.go @@ -85,7 +85,7 @@ func (s *HTTPScanner) InitPerSender(senderID int) error { } func (s *HTTPScanner) GetName() string { - return "" + return s.config.Name } func (s *HTTPScanner) Scan(t zgrab2.ScanTarget, port uint) (interface{}, error) { diff --git a/zmodules/ssh.go b/zmodules/ssh.go index 0209762..25ddbe5 100644 --- a/zmodules/ssh.go +++ b/zmodules/ssh.go @@ -55,7 +55,7 @@ func (s *SSHScanner) InitPerSender(senderID int) error { } func (s *SSHScanner) GetName() string { - return "" + return s.config.Name } func (s *SSHScanner) Scan(t zgrab2.ScanTarget, port uint) (interface{}, error) { return nil, nil diff --git a/zmodules/tls.go b/zmodules/tls.go index 9166093..4e53204 100644 --- a/zmodules/tls.go +++ b/zmodules/tls.go @@ -56,7 +56,7 @@ func (s *TLSScanner) Init(flags zgrab2.ScanFlags) error { } func (s *TLSScanner) GetName() string { - return "" + return s.config.Name } func (s *TLSScanner) InitPerSender(senderID int) error {