mirror of
https://github.com/bettercap/bettercap
synced 2025-08-14 10:46:57 -07:00
fix: one beacon packet per handshake is saved in order to have both the ESSID and BSSID
This commit is contained in:
parent
a90f63b643
commit
1120f98be1
4 changed files with 28 additions and 4 deletions
|
@ -79,7 +79,11 @@ func (w *WiFiModule) discoverAccessPoints(radiotap *layers.RadioTap, dot11 *laye
|
|||
frequency = int(radiotap.ChannelFrequency)
|
||||
}
|
||||
|
||||
w.Session.WiFi.AddIfNew(ssid, bssid, frequency, radiotap.DBMAntennaSignal)
|
||||
if ap, isNew := w.Session.WiFi.AddIfNew(ssid, bssid, frequency, radiotap.DBMAntennaSignal); !isNew {
|
||||
ap.EachClient(func(mac string, station *network.Station) {
|
||||
station.Handshake.SetBeacon(packet)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -129,7 +129,7 @@ func isBogusMacESSID(essid string) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
func (w *WiFi) AddIfNew(ssid, mac string, frequency int, rssi int8) *AccessPoint {
|
||||
func (w *WiFi) AddIfNew(ssid, mac string, frequency int, rssi int8) (*AccessPoint, bool) {
|
||||
w.Lock()
|
||||
defer w.Unlock()
|
||||
|
||||
|
@ -141,7 +141,7 @@ func (w *WiFi) AddIfNew(ssid, mac string, frequency int, rssi int8) *AccessPoint
|
|||
if !isBogusMacESSID(ssid) {
|
||||
ap.Hostname = ssid
|
||||
}
|
||||
return ap
|
||||
return ap, false
|
||||
}
|
||||
|
||||
newAp := NewAccessPoint(ssid, mac, frequency, rssi)
|
||||
|
@ -151,7 +151,7 @@ func (w *WiFi) AddIfNew(ssid, mac string, frequency int, rssi int8) *AccessPoint
|
|||
w.newCb(newAp)
|
||||
}
|
||||
|
||||
return nil
|
||||
return newAp, true
|
||||
}
|
||||
|
||||
func (w *WiFi) Get(mac string) (*AccessPoint, bool) {
|
||||
|
|
|
@ -97,6 +97,15 @@ func (ap *AccessPoint) Clients() (list []*Station) {
|
|||
return
|
||||
}
|
||||
|
||||
func (ap *AccessPoint) EachClient(cb func(mac string, station *Station)) {
|
||||
ap.Lock()
|
||||
defer ap.Unlock()
|
||||
|
||||
for m, station := range ap.clients {
|
||||
cb(m, station)
|
||||
}
|
||||
}
|
||||
|
||||
func (ap *AccessPoint) NumHandshakes() int {
|
||||
ap.Lock()
|
||||
defer ap.Unlock()
|
||||
|
|
|
@ -8,6 +8,7 @@ import (
|
|||
type Handshake struct {
|
||||
sync.Mutex
|
||||
|
||||
Beacon gopacket.Packet
|
||||
Challenges []gopacket.Packet
|
||||
Responses []gopacket.Packet
|
||||
Confirmations []gopacket.Packet
|
||||
|
@ -23,6 +24,16 @@ func NewHandshake() *Handshake {
|
|||
}
|
||||
}
|
||||
|
||||
func (h *Handshake) SetBeacon(pkt gopacket.Packet) {
|
||||
h.Lock()
|
||||
defer h.Unlock()
|
||||
|
||||
if h.Beacon == nil {
|
||||
h.Beacon = pkt
|
||||
h.unsaved = append(h.unsaved, pkt)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *Handshake) AddFrame(n int, pkt gopacket.Packet) {
|
||||
h.Lock()
|
||||
defer h.Unlock()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue