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)
|
||||
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{
|
||||
AP: ap,
|
||||
Client: station,
|
||||
|
|
|
@ -36,7 +36,7 @@ func (mod *WiFiModule) discoverHandshakes(radiotap *layers.RadioTap, dot11 *laye
|
|||
staIsUs := bytes.Equal(staMac, mod.iface.HW)
|
||||
station, found := ap.Get(staMac.String())
|
||||
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)
|
||||
|
|
|
@ -68,8 +68,8 @@ func (lan *LAN) SetAliasFor(mac, alias string) bool {
|
|||
defer lan.Unlock()
|
||||
|
||||
mac = NormalizeMac(mac)
|
||||
lan.aliases.Set(mac, alias)
|
||||
if e, found := lan.hosts[mac]; found {
|
||||
lan.aliases.Set(mac, alias)
|
||||
e.Alias = alias
|
||||
return true
|
||||
}
|
||||
|
|
|
@ -4,6 +4,8 @@ import (
|
|||
"encoding/json"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/evilsocket/islazy/data"
|
||||
)
|
||||
|
||||
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()
|
||||
defer ap.Unlock()
|
||||
|
||||
|
@ -77,10 +79,17 @@ func (ap *AccessPoint) AddClientIfNew(bssid string, frequency int, rssi int8) (*
|
|||
s.RSSI = rssi
|
||||
s.LastSeen = time.Now()
|
||||
|
||||
if aliases != nil {
|
||||
s.Alias = aliases.GetOr(bssid, "")
|
||||
}
|
||||
|
||||
return s, false
|
||||
}
|
||||
|
||||
s := NewStation("", bssid, frequency, rssi)
|
||||
if aliases != nil {
|
||||
s.Alias = aliases.GetOr(bssid, "")
|
||||
}
|
||||
ap.clients[bssid] = s
|
||||
|
||||
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 {
|
||||
mac := args[0]
|
||||
alias := str.Trim(args[1])
|
||||
|
||||
if s.Lan.SetAliasFor(mac, alias) {
|
||||
return nil
|
||||
} else {
|
||||
return fmt.Errorf("Could not find endpoint %s", mac)
|
||||
}
|
||||
s.Lan.SetAliasFor(mac, alias)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Session) addHandler(h CommandHandler, c *readline.PrefixCompleter) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue