diff --git a/modules/events_view.go b/modules/events_view.go index 5dde4280..7cc6a828 100644 --- a/modules/events_view.go +++ b/modules/events_view.go @@ -94,6 +94,15 @@ func (s EventsStream) viewSnifferEvent(e session.Event) { se.Message) } +func (s EventsStream) viewSynScanEvent(e session.Event) { + se := e.Data.(SynScanEvent) + fmt.Printf("[%s] [%s] Found open port %d for %s\n", + e.Time.Format(eventTimeFormat), + core.Green(e.Tag), + se.Port, + core.Bold(se.Host.IpAddress)) +} + func (s *EventsStream) View(e session.Event, refresh bool) { if s.filter == "" || strings.Contains(e.Tag, s.filter) { if e.Tag == "sys.log" { @@ -106,6 +115,8 @@ func (s *EventsStream) View(e session.Event, refresh bool) { s.viewModuleEvent(e) } else if strings.HasPrefix(e.Tag, "net.sniff.") { s.viewSnifferEvent(e) + } else if strings.HasPrefix(e.Tag, "syn.scan") { + s.viewSynScanEvent(e) } else { fmt.Printf("[%s] [%s] %v\n", e.Time.Format(eventTimeFormat), core.Green(e.Tag), e) } diff --git a/modules/syn_scan.go b/modules/syn_scan.go index 54018531..c99952de 100644 --- a/modules/syn_scan.go +++ b/modules/syn_scan.go @@ -164,11 +164,9 @@ func (s *SynScanner) onPacket(pkt gopacket.Packet) { if s.inRange(ip.SrcIP) && tcp.DstPort == synSourcePort && tcp.SYN && tcp.ACK { from := ip.SrcIP.String() - - log.Info("Found open port %d for %s", tcp.SrcPort, core.Bold(from)) + port := int(tcp.SrcPort) var host *network.Endpoint - if ip.SrcIP.Equal(s.Session.Interface.IP) { host = s.Session.Interface } else if ip.SrcIP.Equal(s.Session.Gateway.IP) { @@ -179,7 +177,7 @@ func (s *SynScanner) onPacket(pkt gopacket.Packet) { if host != nil { sports := strings.Split(host.Meta.Get("tcp-ports").(string), ",") - ports := []int{int(tcp.SrcPort)} + ports := []int{port} for _, s := range sports { n, err := strconv.Atoi(s) @@ -195,6 +193,8 @@ func (s *SynScanner) onPacket(pkt gopacket.Packet) { } host.Meta.Set("tcp-ports", strings.Join(list, ",")) + + NewSynScanEvent(host, port).Push() } } } diff --git a/modules/syn_scan_event.go b/modules/syn_scan_event.go new file mode 100644 index 00000000..918c23de --- /dev/null +++ b/modules/syn_scan_event.go @@ -0,0 +1,23 @@ +package modules + +import ( + "github.com/evilsocket/bettercap-ng/network" + "github.com/evilsocket/bettercap-ng/session" +) + +type SynScanEvent struct { + Host *network.Endpoint + Port int +} + +func NewSynScanEvent(h *network.Endpoint, port int) SynScanEvent { + return SynScanEvent{ + Host: h, + Port: port, + } +} + +func (e SynScanEvent) Push() { + session.I.Events.Add("syn.scan", e) + session.I.Refresh() +}