From 78c341c2b3619a83b37f61ee5873c01c7a5e6f17 Mon Sep 17 00:00:00 2001 From: evilsocket Date: Sun, 24 Feb 2019 20:12:41 +0100 Subject: [PATCH] fix: wifi.AccessPoint and wifi.Station now export the Channel field via JSON --- modules/wifi/wifi.go | 2 +- modules/wifi/wifi_assoc.go | 6 +++--- modules/wifi/wifi_deauth.go | 6 +++--- modules/wifi/wifi_show.go | 8 ++++---- network/wifi_station.go | 7 ++----- 5 files changed, 13 insertions(+), 16 deletions(-) diff --git a/modules/wifi/wifi.go b/modules/wifi/wifi.go index d5a388ed..a0c8ebdf 100644 --- a/modules/wifi/wifi.go +++ b/modules/wifi/wifi.go @@ -106,7 +106,7 @@ func NewWiFiModule(s *session.Session) *WiFiModule { return err } else if ap, found := mod.Session.WiFi.Get(bssid.String()); found { mod.ap = ap - mod.stickChan = ap.Channel() + mod.stickChan = ap.Channel return nil } return fmt.Errorf("Could not find station with BSSID %s", args[0]) diff --git a/modules/wifi/wifi_assoc.go b/modules/wifi/wifi_assoc.go index ff3524cd..975fd91a 100644 --- a/modules/wifi/wifi_assoc.go +++ b/modules/wifi/wifi_assoc.go @@ -97,7 +97,7 @@ func (mod *WiFiModule) startAssoc(to net.HardwareAddr) error { // association request, let's sort by channel so we do the minimum // amount of hops possible sort.Slice(toAssoc, func(i, j int) bool { - return toAssoc[i].Channel() < toAssoc[j].Channel() + return toAssoc[i].Channel < toAssoc[j].Channel }) // send the association request frames @@ -111,9 +111,9 @@ func (mod *WiFiModule) startAssoc(to net.HardwareAddr) error { if ap.IsOpen() && !mod.doAssocOpen() { mod.Debug("skipping association for open network %s (wifi.assoc.open is false)", ap.ESSID()) } else { - logger("sending association request to AP %s (channel:%d encryption:%s)", ap.ESSID(), ap.Channel(), ap.Encryption) + logger("sending association request to AP %s (channel:%d encryption:%s)", ap.ESSID(), ap.Channel, ap.Encryption) - mod.onChannel(ap.Channel(), func() { + mod.onChannel(ap.Channel, func() { mod.sendAssocPacket(ap) }) } diff --git a/modules/wifi/wifi_deauth.go b/modules/wifi/wifi_deauth.go index a4522a13..d4f77427 100644 --- a/modules/wifi/wifi_deauth.go +++ b/modules/wifi/wifi_deauth.go @@ -121,7 +121,7 @@ func (mod *WiFiModule) startDeauth(to net.HardwareAddr) error { // deauth packet, let's sort by channel so we do the minimum // amount of hops possible sort.Slice(toDeauth, func(i, j int) bool { - return toDeauth[i].Ap.Channel() < toDeauth[j].Ap.Channel() + return toDeauth[i].Ap.Channel < toDeauth[j].Ap.Channel }) // send the deauth frames @@ -137,9 +137,9 @@ func (mod *WiFiModule) startDeauth(to net.HardwareAddr) error { if ap.IsOpen() && !mod.doDeauthOpen() { mod.Debug("skipping deauth for open network %s (wifi.deauth.open is false)", ap.ESSID()) } else { - logger("deauthing client %s from AP %s (channel:%d encryption:%s)", client.String(), ap.ESSID(), ap.Channel(), ap.Encryption) + logger("deauthing client %s from AP %s (channel:%d encryption:%s)", client.String(), ap.ESSID(), ap.Channel, ap.Encryption) - mod.onChannel(ap.Channel(), func() { + mod.onChannel(ap.Channel, func() { mod.sendDeauthPacket(ap.HW, client.HW) }) } diff --git a/modules/wifi/wifi_show.go b/modules/wifi/wifi_show.go index bde27a88..7a44bb26 100644 --- a/modules/wifi/wifi_show.go +++ b/modules/wifi/wifi_show.go @@ -86,7 +86,7 @@ func (mod *WiFiModule) getRow(station *network.Station) ([]string, bool) { rssi, bssid, tui.Dim(station.Vendor), - strconv.Itoa(station.Channel()), + strconv.Itoa(station.Channel), sent, recvd, seen, @@ -95,7 +95,7 @@ func (mod *WiFiModule) getRow(station *network.Station) ([]string, bool) { return []string{ rssi, bssid, - strconv.Itoa(station.Channel()), + strconv.Itoa(station.Channel), sent, recvd, seen, @@ -137,7 +137,7 @@ func (mod *WiFiModule) getRow(station *network.Station) ([]string, bool) { ssid, encryption, wps, - strconv.Itoa(station.Channel()), + strconv.Itoa(station.Channel), clients, sent, recvd, @@ -150,7 +150,7 @@ func (mod *WiFiModule) getRow(station *network.Station) ([]string, bool) { ssid, encryption, wps, - strconv.Itoa(station.Channel()), + strconv.Itoa(station.Channel), clients, sent, recvd, diff --git a/network/wifi_station.go b/network/wifi_station.go index 8e4db9c2..a197e3c4 100644 --- a/network/wifi_station.go +++ b/network/wifi_station.go @@ -7,6 +7,7 @@ import ( type Station struct { *Endpoint Frequency int `json:"frequency"` + Channel int `json:"channel"` RSSI int8 `json:"rssi"` Sent uint64 `json:"sent"` Received uint64 `json:"received"` @@ -19,7 +20,6 @@ type Station struct { func cleanESSID(essid string) string { res := "" - for _, c := range essid { if strconv.IsPrint(c) { res += string(c) @@ -34,6 +34,7 @@ func NewStation(essid, bssid string, frequency int, rssi int8) *Station { return &Station{ Endpoint: NewEndpointNoResolve(MonitorModeAddress, bssid, cleanESSID(essid), 0), Frequency: frequency, + Channel: Dot11Freq2Chan(frequency), RSSI: rssi, WPS: make(map[string]string), Handshake: NewHandshake(), @@ -48,10 +49,6 @@ func (s *Station) ESSID() string { return s.Hostname } -func (s *Station) Channel() int { - return Dot11Freq2Chan(s.Frequency) -} - func (s *Station) HasWPS() bool { return len(s.WPS) > 0 }