mirror of
https://github.com/bettercap/bettercap
synced 2025-08-20 21:43:18 -07:00
fix: fixing pcap handles w/r ops synchronization here and there (ref #88)
This commit is contained in:
parent
b2e559a206
commit
781437fe6f
4 changed files with 43 additions and 27 deletions
|
@ -26,12 +26,13 @@ import (
|
|||
|
||||
type DHCP6Spoofer struct {
|
||||
session.SessionModule
|
||||
Handle *pcap.Handle
|
||||
DUID *dhcp6opts.DUIDLLT
|
||||
DUIDRaw []byte
|
||||
Domains []string
|
||||
RawDomains []byte
|
||||
waitGroup *sync.WaitGroup
|
||||
Handle *pcap.Handle
|
||||
DUID *dhcp6opts.DUIDLLT
|
||||
DUIDRaw []byte
|
||||
Domains []string
|
||||
RawDomains []byte
|
||||
waitGroup *sync.WaitGroup
|
||||
pktSourceChan chan gopacket.Packet
|
||||
}
|
||||
|
||||
func NewDHCP6Spoofer(s *session.Session) *DHCP6Spoofer {
|
||||
|
@ -360,13 +361,12 @@ func (s *DHCP6Spoofer) Start() error {
|
|||
}
|
||||
|
||||
return s.SetRunning(true, func() {
|
||||
defer s.Handle.Close()
|
||||
|
||||
s.waitGroup.Add(1)
|
||||
defer s.waitGroup.Done()
|
||||
|
||||
src := gopacket.NewPacketSource(s.Handle, s.Handle.LinkType())
|
||||
for packet := range src.Packets() {
|
||||
s.pktSourceChan = src.Packets()
|
||||
for packet := range s.pktSourceChan {
|
||||
if s.Running() == false {
|
||||
break
|
||||
}
|
||||
|
@ -378,6 +378,7 @@ func (s *DHCP6Spoofer) Start() error {
|
|||
|
||||
func (s *DHCP6Spoofer) Stop() error {
|
||||
return s.SetRunning(false, func() {
|
||||
s.pktSourceChan <- nil
|
||||
s.Handle.Close()
|
||||
s.waitGroup.Wait()
|
||||
})
|
||||
|
|
|
@ -19,11 +19,12 @@ import (
|
|||
|
||||
type DNSSpoofer struct {
|
||||
session.SessionModule
|
||||
Handle *pcap.Handle
|
||||
Domains []string
|
||||
Address net.IP
|
||||
All bool
|
||||
waitGroup *sync.WaitGroup
|
||||
Handle *pcap.Handle
|
||||
Domains []string
|
||||
Address net.IP
|
||||
All bool
|
||||
waitGroup *sync.WaitGroup
|
||||
pktSourceChan chan gopacket.Packet
|
||||
}
|
||||
|
||||
func NewDNSSpoofer(s *session.Session) *DNSSpoofer {
|
||||
|
@ -273,10 +274,9 @@ func (s *DNSSpoofer) Start() error {
|
|||
s.waitGroup.Add(1)
|
||||
defer s.waitGroup.Done()
|
||||
|
||||
defer s.Handle.Close()
|
||||
|
||||
src := gopacket.NewPacketSource(s.Handle, s.Handle.LinkType())
|
||||
for packet := range src.Packets() {
|
||||
s.pktSourceChan = src.Packets()
|
||||
for packet := range s.pktSourceChan {
|
||||
if s.Running() == false {
|
||||
break
|
||||
}
|
||||
|
@ -288,6 +288,7 @@ func (s *DNSSpoofer) Start() error {
|
|||
|
||||
func (s *DNSSpoofer) Stop() error {
|
||||
return s.SetRunning(false, func() {
|
||||
s.pktSourceChan <- nil
|
||||
s.Handle.Close()
|
||||
s.waitGroup.Wait()
|
||||
})
|
||||
|
|
|
@ -14,8 +14,9 @@ import (
|
|||
|
||||
type Sniffer struct {
|
||||
session.SessionModule
|
||||
Stats *SnifferStats
|
||||
Ctx *SnifferContext
|
||||
Stats *SnifferStats
|
||||
Ctx *SnifferContext
|
||||
pktSourceChan chan gopacket.Packet
|
||||
}
|
||||
|
||||
func NewSniffer(s *session.Session) *Sniffer {
|
||||
|
@ -148,7 +149,8 @@ func (s *Sniffer) Start() error {
|
|||
s.Stats = NewSnifferStats()
|
||||
|
||||
src := gopacket.NewPacketSource(s.Ctx.Handle, s.Ctx.Handle.LinkType())
|
||||
for packet := range src.Packets() {
|
||||
s.pktSourceChan = src.Packets()
|
||||
for packet := range s.pktSourceChan {
|
||||
if s.Running() == false {
|
||||
break
|
||||
}
|
||||
|
@ -183,6 +185,7 @@ func (s *Sniffer) Start() error {
|
|||
|
||||
func (s *Sniffer) Stop() error {
|
||||
return s.SetRunning(false, func() {
|
||||
s.pktSourceChan <- nil
|
||||
s.Ctx.Close()
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue