mirror of
https://github.com/bettercap/bettercap.git
synced 2024-11-08 06:30:13 -08:00
42 lines
805 B
Go
42 lines
805 B
Go
package syn_scan
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/evilsocket/islazy/async"
|
|
)
|
|
|
|
const bannerGrabTimeout = time.Duration(5) * time.Second
|
|
|
|
type bannerGrabberFn func(mod *SynScanner, ip string, port int) string
|
|
|
|
type grabberJob struct {
|
|
IP string
|
|
Port *OpenPort
|
|
}
|
|
|
|
func (mod *SynScanner) bannerGrabber(arg async.Job) {
|
|
job := arg.(grabberJob)
|
|
if job.Port.Proto != "tcp" {
|
|
return
|
|
}
|
|
|
|
ip := job.IP
|
|
port := job.Port.Port
|
|
sport := fmt.Sprintf("%d", port)
|
|
|
|
fn := tcpGrabber
|
|
if port == 80 || port == 443 || sport[0] == '8' {
|
|
fn = httpGrabber
|
|
} else if port == 53 || port == 5353 {
|
|
fn = dnsGrabber
|
|
}
|
|
|
|
mod.Debug("grabbing banner for %s:%d", ip, port)
|
|
job.Port.Banner = fn(mod, ip, port)
|
|
if job.Port.Banner != "" {
|
|
mod.Info("found banner for %s:%d -> %s", ip, port, job.Port.Banner)
|
|
}
|
|
}
|