diff --git a/bin/default_modules.go b/bin/default_modules.go new file mode 100644 index 0000000..bead817 --- /dev/null +++ b/bin/default_modules.go @@ -0,0 +1,65 @@ +package bin + +import ( + "github.com/zmap/zgrab2" + "github.com/zmap/zgrab2/modules" + "github.com/zmap/zgrab2/modules/bacnet" + "github.com/zmap/zgrab2/modules/banner" + "github.com/zmap/zgrab2/modules/dnp3" + "github.com/zmap/zgrab2/modules/fox" + "github.com/zmap/zgrab2/modules/ftp" + "github.com/zmap/zgrab2/modules/http" + "github.com/zmap/zgrab2/modules/imap" + "github.com/zmap/zgrab2/modules/ipp" + "github.com/zmap/zgrab2/modules/modbus" + "github.com/zmap/zgrab2/modules/mongodb" + "github.com/zmap/zgrab2/modules/mssql" + "github.com/zmap/zgrab2/modules/mysql" + "github.com/zmap/zgrab2/modules/ntp" + "github.com/zmap/zgrab2/modules/oracle" + "github.com/zmap/zgrab2/modules/pop3" + "github.com/zmap/zgrab2/modules/postgres" + "github.com/zmap/zgrab2/modules/redis" + "github.com/zmap/zgrab2/modules/siemens" + "github.com/zmap/zgrab2/modules/smb" + "github.com/zmap/zgrab2/modules/smtp" + "github.com/zmap/zgrab2/modules/telnet" +) + +var defaultModules zgrab2.ModuleSet + +func init() { + defaultModules = map[string]zgrab2.ScanModule{ + "bacnet": &bacnet.Module{}, + "banner": &banner.Module{}, + "dnp3": &dnp3.Module{}, + "fox": &fox.Module{}, + "ftp": &ftp.Module{}, + "http": &http.Module{}, + "imap": &imap.Module{}, + "ipp": &ipp.Module{}, + "modbus": &modbus.Module{}, + "mongodb": &mongodb.Module{}, + "mssql": &mssql.Module{}, + "mysql": &mysql.Module{}, + "ntp": &ntp.Module{}, + "oracle": &oracle.Module{}, + "pop3": &pop3.Module{}, + "postgres": &postgres.Module{}, + "redis": &redis.Module{}, + "siemens": &siemens.Module{}, + "smb": &smb.Module{}, + "smtp": &smtp.Module{}, + "ssh": &modules.SSHModule{}, + "telnet": &telnet.Module{}, + "tls": &modules.TLSModule{}, + } +} + +// NewModuleSetWithDefaults returns a newly allocated ModuleSet containing all +// ScanModules implemented by the ZGrab2 framework. +func NewModuleSetWithDefaults() zgrab2.ModuleSet { + out := zgrab2.ModuleSet{} + defaultModules.CopyInto(out) + return out +} diff --git a/bin/doc.go b/bin/doc.go new file mode 100644 index 0000000..d9b4b6c --- /dev/null +++ b/bin/doc.go @@ -0,0 +1,6 @@ +// Package bin contains functions useful for creating a binary version of +// ZGrab2. +// +// This package can import "github.com/zmap/zgrab2", and should be imported by +// targets within "github.com/zmap/zgrab2/cmd" +package bin diff --git a/module_set.go b/module_set.go new file mode 100644 index 0000000..75d3b8b --- /dev/null +++ b/module_set.go @@ -0,0 +1,30 @@ +package zgrab2 + +// ModuleSet is a container holding named scan modules. It is a wrapper around a +// map. +type ModuleSet map[string]ScanModule + +// AddModule adds m to the ModuleSet, accessible via the given name. If the name +// is already in the ModuleSet, it is overwritten. +func (s ModuleSet) AddModule(name string, m ScanModule) { + s[name] = m +} + +// RemoveModule removes the module at the specified name. If the name is not in +// the module set, nothing happens. +func (s ModuleSet) RemoveModule(name string) { + delete(s, name) +} + +// CopyInto copies the modules in s to destination. The sets will be unique, but +// the underlying ScanModule instances will be the same. +func (s ModuleSet) CopyInto(destination ModuleSet) { + for name, m := range s { + destination[name] = m + } +} + +// NewModuleSet returns an empty ModuleSet. +func NewModuleSet() ModuleSet { + return make(ModuleSet) +}