diff --git a/modules/arp_spoof.go b/modules/arp_spoof.go index ded712ea..39590f12 100644 --- a/modules/arp_spoof.go +++ b/modules/arp_spoof.go @@ -1,7 +1,6 @@ package modules import ( - "bytes" "fmt" "net" "time" @@ -65,17 +64,6 @@ func (p ArpSpoofer) Author() string { return "Simone Margaritelli " } -func (p *ArpSpoofer) shouldSpoof(ip net.IP) bool { - if ip.IsLoopback() == true { - return false - } else if bytes.Compare(ip, p.Session.Interface.IP) == 0 { - return false - } else if bytes.Compare(ip, p.Session.Gateway.IP) == 0 { - return false - } - return true -} - func (p *ArpSpoofer) getMAC(ip net.IP, probe bool) (net.HardwareAddr, error) { var mac string var hw net.HardwareAddr @@ -115,7 +103,7 @@ func (p *ArpSpoofer) sendArp(saddr net.IP, smac net.HardwareAddr, check_running for _, ip := range p.addresses { if check_running && p.Running() == false { return - } else if p.shouldSpoof(ip) == false { + } else if p.Session.Skip(ip) == true { log.Debug("Skipping address %s from ARP spoofing.", ip) continue } diff --git a/modules/net_probe.go b/modules/net_probe.go index 022f2840..2b68df9c 100644 --- a/modules/net_probe.go +++ b/modules/net_probe.go @@ -52,18 +52,6 @@ func (p Prober) Author() string { return "Simone Margaritelli " } -func (p *Prober) shouldProbe(ip net.IP) bool { - addr := ip.String() - if ip.IsLoopback() == true { - return false - } else if addr == p.Session.Interface.IpAddress { - return false - } else if addr == p.Session.Gateway.IpAddress { - return false - } - return true -} - func (p *Prober) sendProbe(from net.IP, from_hw net.HardwareAddr, ip net.IP) { var wg sync.WaitGroup @@ -103,7 +91,7 @@ func (p *Prober) Start() error { for p.Running() { for _, ip := range addresses { - if p.shouldProbe(ip) == false { + if p.Session.Skip(ip) == true { log.Debug("Skipping address %s from UDP probing.", ip) continue } diff --git a/session/session.go b/session/session.go index 372a5443..3be80196 100644 --- a/session/session.go +++ b/session/session.go @@ -2,8 +2,10 @@ package session import ( "bufio" + "bytes" "errors" "fmt" + "net" "os" "os/signal" "runtime" @@ -17,7 +19,7 @@ import ( "github.com/evilsocket/bettercap-ng/core" "github.com/evilsocket/bettercap-ng/firewall" - "github.com/evilsocket/bettercap-ng/net" + bnet "github.com/evilsocket/bettercap-ng/net" "github.com/evilsocket/bettercap-ng/packets" ) @@ -32,8 +34,8 @@ var ( type Session struct { Options core.Options `json:"options"` - Interface *net.Endpoint `json:"interface"` - Gateway *net.Endpoint `json:"gateway"` + Interface *bnet.Endpoint `json:"interface"` + Gateway *bnet.Endpoint `json:"gateway"` Firewall firewall.FirewallManager `json:"-"` Env *Environment `json:"env"` Targets *Targets `json:"targets"` @@ -280,9 +282,9 @@ func (s *Session) Start() error { return s.Modules[i].Name() < s.Modules[j].Name() }) - net.OuiInit() + bnet.OuiInit() - if s.Interface, err = net.FindInterface(*s.Options.InterfaceName); err != nil { + if s.Interface, err = bnet.FindInterface(*s.Options.InterfaceName); err != nil { return err } @@ -290,7 +292,7 @@ func (s *Session) Start() error { return err } - if s.Gateway, err = net.FindGateway(s.Interface); err != nil { + if s.Gateway, err = bnet.FindGateway(s.Interface); err != nil { s.Events.Log(core.WARNING, "%s", err.Error()) } @@ -321,6 +323,17 @@ func (s *Session) Start() error { return nil } +func (s *Session) Skip(ip net.IP) bool { + if ip.IsLoopback() == true { + return true + } else if bytes.Compare(ip, s.Interface.IP) == 0 { + return true + } else if bytes.Compare(ip, s.Gateway.IP) == 0 { + return true + } + return false +} + func (s *Session) IsOn(moduleName string) bool { for _, m := range s.Modules { if m.Name() == moduleName {