diff --git a/modules/wifi/wifi_recon.go b/modules/wifi/wifi_recon.go index 6e62d0d9..dab0360b 100644 --- a/modules/wifi/wifi_recon.go +++ b/modules/wifi/wifi_recon.go @@ -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, diff --git a/modules/wifi/wifi_recon_handshakes.go b/modules/wifi/wifi_recon_handshakes.go index a8eb676e..7c5045a5 100644 --- a/modules/wifi/wifi_recon_handshakes.go +++ b/modules/wifi/wifi_recon_handshakes.go @@ -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) diff --git a/network/lan.go b/network/lan.go index 953ef882..9363c0ba 100644 --- a/network/lan.go +++ b/network/lan.go @@ -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 } diff --git a/network/wifi_ap.go b/network/wifi_ap.go index afaf9c14..ec864916 100644 --- a/network/wifi_ap.go +++ b/network/wifi_ap.go @@ -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 diff --git a/session/session_core_handlers.go b/session/session_core_handlers.go index 90b0b3d4..1a8fa83e 100644 --- a/session/session_core_handlers.go +++ b/session/session_core_handlers.go @@ -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) {