new: new net.probe.upnp agent

This commit is contained in:
evilsocket 2018-09-09 13:12:04 +03:00
commit 42c71845ed
No known key found for this signature in database
GPG key ID: 1564D7F30393A456
3 changed files with 83 additions and 0 deletions

View file

@ -15,6 +15,7 @@ import (
type Probes struct {
NBNS bool
MDNS bool
UPNP bool
}
type Prober struct {
@ -38,6 +39,10 @@ func NewProber(s *session.Session) *Prober {
"true",
"Enable mDNS discovery probes."))
p.AddParam(session.NewBoolParameter("net.probe.upnp",
"true",
"Enable UPNP discovery probes."))
p.AddParam(session.NewIntParameter("net.probe.throttle",
"10",
"If greater than 0, probe packets will be throttled by this value in milliseconds."))
@ -89,6 +94,8 @@ func (p *Prober) Configure() error {
return err
} else if err, p.probes.MDNS = p.BoolParam("net.probe.mdns"); err != nil {
return err
} else if err, p.probes.UPNP = p.BoolParam("net.probe.upnp"); err != nil {
return err
} else {
log.Debug("Throttling packets of %d ms.", p.throttle)
}
@ -124,6 +131,10 @@ func (p *Prober) Start() error {
p.sendProbeMDNS(from, from_hw)
}
if p.probes.UPNP {
p.sendProbeUPNP(from, from_hw)
}
for _, ip := range addresses {
if !p.Running() {
return

20
modules/net_probe_upnp.go Normal file
View file

@ -0,0 +1,20 @@
package modules
import (
"net"
"github.com/bettercap/bettercap/log"
"github.com/bettercap/bettercap/packets"
)
func (p *Prober) sendProbeUPNP(from net.IP, from_hw net.HardwareAddr) {
err, raw := packets.NewUPNPProbe(from, from_hw)
if err != nil {
log.Error("error while sending upnp probe: %v", err)
return
} else if err := p.Session.Queue.Send(raw); err != nil {
log.Error("error sending upnp packet: %s", err)
} else {
log.Debug("sent %d bytes of UPNP probe", len(raw))
}
}