mirror of
https://github.com/bettercap/bettercap
synced 2025-07-11 07:37:00 -07:00
fix: check if both ethernet and udp layer are succesfully decoded before parsing dns request
This commit is contained in:
parent
b614f195c5
commit
5e728ded2d
2 changed files with 4 additions and 3 deletions
|
@ -232,8 +232,9 @@ func (s *DNSSpoofer) onPacket(pkt gopacket.Packet) {
|
||||||
eth := pkt.Layer(layers.LayerTypeEthernet).(*layers.Ethernet)
|
eth := pkt.Layer(layers.LayerTypeEthernet).(*layers.Ethernet)
|
||||||
udp := pkt.Layer(layers.LayerTypeUDP).(*layers.UDP)
|
udp := pkt.Layer(layers.LayerTypeUDP).(*layers.UDP)
|
||||||
|
|
||||||
// DNS request for us?
|
if eth == nil || udp == nil {
|
||||||
if s.All == true || bytes.Compare(eth.DstMAC, s.Session.Interface.HW) == 0 {
|
return
|
||||||
|
} else if s.All == true || bytes.Compare(eth.DstMAC, s.Session.Interface.HW) == 0 {
|
||||||
dns, parsed := pkt.Layer(layers.LayerTypeDNS).(*layers.DNS)
|
dns, parsed := pkt.Layer(layers.LayerTypeDNS).(*layers.DNS)
|
||||||
if parsed == true && dns.OpCode == layers.DNSOpCodeQuery && len(dns.Questions) > 0 && len(dns.Answers) == 0 {
|
if parsed == true && dns.OpCode == layers.DNSOpCodeQuery && len(dns.Questions) > 0 && len(dns.Answers) == 0 {
|
||||||
for _, q := range dns.Questions {
|
for _, q := range dns.Questions {
|
||||||
|
|
|
@ -83,7 +83,7 @@ func netOuiDat() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "net/oui.dat", size: 585353, mode: os.FileMode(420), modTime: time.Unix(1516884015, 0)}
|
info := bindataFileInfo{name: "net/oui.dat", size: 585353, mode: os.FileMode(420), modTime: time.Unix(1515886539, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue