From 32e1bf8a7b561b148c7c9f094ba2f6c28b75974b Mon Sep 17 00:00:00 2001 From: evilsocket Date: Sat, 7 Sep 2019 17:53:59 +0200 Subject: [PATCH] new: new wifi.ap.ttl and wifi.sta.ttl parameters --- modules/wifi/wifi.go | 18 ++++++++++++++++++ modules/wifi/wifi_recon.go | 11 ++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/modules/wifi/wifi.go b/modules/wifi/wifi.go index 919ae038..0ba7c7cd 100644 --- a/modules/wifi/wifi.go +++ b/modules/wifi/wifi.go @@ -32,6 +32,8 @@ type WiFiModule struct { region string txPower int minRSSI int + apTTL int + staTTL int channel int hopPeriod time.Duration hopChanges chan bool @@ -63,6 +65,8 @@ func NewWiFiModule(s *session.Session) *WiFiModule { SessionModule: session.NewSessionModule("wifi", s), iface: s.Interface, minRSSI: -200, + apTTL: 300, + staTTL: 300, channel: 0, stickChan: 0, hopPeriod: 250 * time.Millisecond, @@ -185,6 +189,14 @@ func NewWiFiModule(s *session.Session) *WiFiModule { mod.AddHandler(assoc) + mod.AddParam(session.NewIntParameter("wifi.ap.ttl", + "300", + "Seconds of inactivity for an access points to be considered not in range anymore.")) + + mod.AddParam(session.NewIntParameter("wifi.sta.ttl", + "300", + "Seconds of inactivity for a client station to be considered not in range or not connected to its access point anymore.")) + mod.AddParam(session.NewStringParameter("wifi.region", "", "", @@ -354,6 +366,12 @@ func (mod *WiFiModule) Configure() error { var hopPeriod int var err error + if err, mod.apTTL = mod.IntParam("wifi.ap.ttl"); err != nil { + return err + } else if err, mod.staTTL = mod.IntParam("wifi.sta.ttl"); err != nil { + return err + } + if err, mod.region = mod.StringParam("wifi.region"); err != nil { return err } else if err, mod.txPower = mod.IntParam("wifi.txpower"); err != nil { diff --git a/modules/wifi/wifi_recon.go b/modules/wifi/wifi_recon.go index e1453a02..a7ae756d 100644 --- a/modules/wifi/wifi_recon.go +++ b/modules/wifi/wifi_recon.go @@ -11,18 +11,19 @@ import ( "github.com/google/gopacket/layers" ) -var maxStationTTL = 5 * time.Minute - func (mod *WiFiModule) stationPruner() { mod.reads.Add(1) defer mod.reads.Done() - mod.Debug("wifi stations pruner started.") + maxApTTL := time.Duration(mod.apTTL) * time.Second + maxStaTTL := time.Duration(mod.staTTL) * time.Second + + mod.Debug("wifi stations pruner started (ap.ttl:%v sta.ttl:%v).", maxApTTL, maxStaTTL) for mod.Running() { // loop every AP for _, ap := range mod.Session.WiFi.List() { sinceLastSeen := time.Since(ap.LastSeen) - if sinceLastSeen > maxStationTTL { + if sinceLastSeen > maxApTTL { mod.Debug("station %s not seen in %s, removing.", ap.BSSID(), sinceLastSeen) mod.Session.WiFi.Remove(ap.BSSID()) continue @@ -30,7 +31,7 @@ func (mod *WiFiModule) stationPruner() { // loop every AP client for _, c := range ap.Clients() { sinceLastSeen := time.Since(c.LastSeen) - if sinceLastSeen > maxStationTTL { + if sinceLastSeen > maxStaTTL { mod.Debug("client %s of station %s not seen in %s, removing.", c.String(), ap.BSSID(), sinceLastSeen) ap.RemoveClient(c.BSSID())