diff --git a/modules/syn_scan.go b/modules/syn_scan.go index ba25bf7c..89b691c1 100644 --- a/modules/syn_scan.go +++ b/modules/syn_scan.go @@ -38,7 +38,7 @@ func NewSynScanner(s *session.Session) *SynScanner { waitGroup: &sync.WaitGroup{}, } - ss.AddHandler(session.NewModuleHandler("syn.scan IP-RANGE START-PORT END-PORT", "syn.scan ([^\\s]+) (\\d+)([\\s\\d]*)", + ss.AddHandler(session.NewModuleHandler("syn.scan IP-RANGE [START-PORT] [END-PORT]", "syn.scan ([^\\s]+) ?(\\d+)?([\\s\\d]*)?", "Perform a syn port scanning against an IP address within the provided ports range.", func(args []string) error { if ss.Running() == true { @@ -50,20 +50,22 @@ func NewSynScanner(s *session.Session) *SynScanner { return fmt.Errorf("Error while parsing IP range '%s': %s", args[0], err) } - ss.addresses = list.Expand() - ss.startPort = 0 - ss.endPort = 0 - - if ss.startPort, err = strconv.Atoi(core.Trim(args[1])); err != nil { - return fmt.Errorf("Invalid START-PORT: %s", err) - } - - if ss.startPort > 65535 { - ss.startPort = 65535 - } - ss.endPort = ss.startPort - argc := len(args) + ss.addresses = list.Expand() + ss.startPort = 1 + ss.endPort = 65535 + + if argc > 1 && core.Trim(args[1]) != "" { + if ss.startPort, err = strconv.Atoi(core.Trim(args[1])); err != nil { + return fmt.Errorf("Invalid START-PORT: %s", err) + } + + if ss.startPort > 65535 { + ss.startPort = 65535 + } + ss.endPort = ss.startPort + } + if argc > 2 && core.Trim(args[2]) != "" { if ss.endPort, err = strconv.Atoi(core.Trim(args[2])); err != nil { return fmt.Errorf("Invalid END-PORT: %s", err)