mirror of
https://github.com/bettercap/bettercap
synced 2025-08-19 21:13:18 -07:00
fix: allow wifi modules to use network aliases for clients never seen on lan
This commit is contained in:
parent
d6e6746809
commit
255102c250
5 changed files with 15 additions and 10 deletions
|
@ -124,7 +124,7 @@ func (mod *WiFiModule) discoverClients(radiotap *layers.RadioTap, dot11 *layers.
|
||||||
freq := int(radiotap.ChannelFrequency)
|
freq := int(radiotap.ChannelFrequency)
|
||||||
rssi := radiotap.DBMAntennaSignal
|
rssi := radiotap.DBMAntennaSignal
|
||||||
|
|
||||||
if station, isNew := ap.AddClientIfNew(bssid, freq, rssi); isNew {
|
if station, isNew := ap.AddClientIfNew(bssid, freq, rssi, mod.Session.Lan.Aliases()); isNew {
|
||||||
mod.Session.Events.Add("wifi.client.new", ClientEvent{
|
mod.Session.Events.Add("wifi.client.new", ClientEvent{
|
||||||
AP: ap,
|
AP: ap,
|
||||||
Client: station,
|
Client: station,
|
||||||
|
|
|
@ -36,7 +36,7 @@ func (mod *WiFiModule) discoverHandshakes(radiotap *layers.RadioTap, dot11 *laye
|
||||||
staIsUs := bytes.Equal(staMac, mod.iface.HW)
|
staIsUs := bytes.Equal(staMac, mod.iface.HW)
|
||||||
station, found := ap.Get(staMac.String())
|
station, found := ap.Get(staMac.String())
|
||||||
if !found {
|
if !found {
|
||||||
station, _ = ap.AddClientIfNew(staMac.String(), ap.Frequency, ap.RSSI)
|
station, _ = ap.AddClientIfNew(staMac.String(), ap.Frequency, ap.RSSI, mod.Session.Lan.Aliases())
|
||||||
}
|
}
|
||||||
|
|
||||||
rawPMKID := []byte(nil)
|
rawPMKID := []byte(nil)
|
||||||
|
|
|
@ -68,8 +68,8 @@ func (lan *LAN) SetAliasFor(mac, alias string) bool {
|
||||||
defer lan.Unlock()
|
defer lan.Unlock()
|
||||||
|
|
||||||
mac = NormalizeMac(mac)
|
mac = NormalizeMac(mac)
|
||||||
if e, found := lan.hosts[mac]; found {
|
|
||||||
lan.aliases.Set(mac, alias)
|
lan.aliases.Set(mac, alias)
|
||||||
|
if e, found := lan.hosts[mac]; found {
|
||||||
e.Alias = alias
|
e.Alias = alias
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,8 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/evilsocket/islazy/data"
|
||||||
)
|
)
|
||||||
|
|
||||||
type AccessPoint struct {
|
type AccessPoint struct {
|
||||||
|
@ -65,7 +67,7 @@ func (ap *AccessPoint) RemoveClient(mac string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ap *AccessPoint) AddClientIfNew(bssid string, frequency int, rssi int8) (*Station, bool) {
|
func (ap *AccessPoint) AddClientIfNew(bssid string, frequency int, rssi int8, aliases *data.UnsortedKV) (*Station, bool) {
|
||||||
ap.Lock()
|
ap.Lock()
|
||||||
defer ap.Unlock()
|
defer ap.Unlock()
|
||||||
|
|
||||||
|
@ -77,10 +79,17 @@ func (ap *AccessPoint) AddClientIfNew(bssid string, frequency int, rssi int8) (*
|
||||||
s.RSSI = rssi
|
s.RSSI = rssi
|
||||||
s.LastSeen = time.Now()
|
s.LastSeen = time.Now()
|
||||||
|
|
||||||
|
if aliases != nil {
|
||||||
|
s.Alias = aliases.GetOr(bssid, "")
|
||||||
|
}
|
||||||
|
|
||||||
return s, false
|
return s, false
|
||||||
}
|
}
|
||||||
|
|
||||||
s := NewStation("", bssid, frequency, rssi)
|
s := NewStation("", bssid, frequency, rssi)
|
||||||
|
if aliases != nil {
|
||||||
|
s.Alias = aliases.GetOr(bssid, "")
|
||||||
|
}
|
||||||
ap.clients[bssid] = s
|
ap.clients[bssid] = s
|
||||||
|
|
||||||
return s, true
|
return s, true
|
||||||
|
|
|
@ -274,12 +274,8 @@ func (s *Session) shHandler(args []string, sess *Session) error {
|
||||||
func (s *Session) aliasHandler(args []string, sess *Session) error {
|
func (s *Session) aliasHandler(args []string, sess *Session) error {
|
||||||
mac := args[0]
|
mac := args[0]
|
||||||
alias := str.Trim(args[1])
|
alias := str.Trim(args[1])
|
||||||
|
s.Lan.SetAliasFor(mac, alias)
|
||||||
if s.Lan.SetAliasFor(mac, alias) {
|
|
||||||
return nil
|
return nil
|
||||||
} else {
|
|
||||||
return fmt.Errorf("Could not find endpoint %s", mac)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) addHandler(h CommandHandler, c *readline.PrefixCompleter) {
|
func (s *Session) addHandler(h CommandHandler, c *readline.PrefixCompleter) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue