new: WSD discovery agent for net.probe

This commit is contained in:
evilsocket 2018-09-09 14:10:24 +03:00
commit b6adb2b65f
No known key found for this signature in database
GPG key ID: 1564D7F30393A456
3 changed files with 65 additions and 0 deletions

View file

@ -16,6 +16,7 @@ type Probes struct {
NBNS bool
MDNS bool
UPNP bool
WSD bool
}
type Prober struct {
@ -43,6 +44,10 @@ func NewProber(s *session.Session) *Prober {
"true",
"Enable UPNP discovery probes."))
p.AddParam(session.NewBoolParameter("net.probe.wsd",
"true",
"Enable WSD discovery probes."))
p.AddParam(session.NewIntParameter("net.probe.throttle",
"10",
"If greater than 0, probe packets will be throttled by this value in milliseconds."))
@ -96,6 +101,8 @@ func (p *Prober) Configure() error {
return err
} else if err, p.probes.UPNP = p.BoolParam("net.probe.upnp"); err != nil {
return err
} else if err, p.probes.WSD = p.BoolParam("net.probe.wsd"); err != nil {
return err
} else {
log.Debug("Throttling packets of %d ms.", p.throttle)
}
@ -135,6 +142,10 @@ func (p *Prober) Start() error {
p.sendProbeUPNP(from, from_hw)
}
if p.probes.WSD {
p.sendProbeWSD(from, from_hw)
}
for _, ip := range addresses {
if !p.Running() {
return

26
modules/net_probe_wsd.go Normal file
View file

@ -0,0 +1,26 @@
package modules
import (
"fmt"
"net"
"github.com/bettercap/bettercap/log"
"github.com/bettercap/bettercap/packets"
)
func (p *Prober) sendProbeWSD(from net.IP, from_hw net.HardwareAddr) {
name := fmt.Sprintf("%s:%d", packets.WSDDestIP, packets.WSDPort)
if addr, err := net.ResolveUDPAddr("udp", name); err != nil {
log.Debug("could not resolve %s.", name)
} else if con, err := net.DialUDP("udp", nil, addr); err != nil {
log.Debug("could not dial %s.", name)
} else {
defer con.Close()
if wrote, _ := con.Write(packets.WSDDiscoveryPayload); wrote > 0 {
p.Session.Queue.TrackSent(uint64(wrote))
} else {
p.Session.Queue.TrackError()
}
}
}