diff --git a/modules/wifi.go b/modules/wifi.go index 9aad9490..2ab0c0b0 100644 --- a/modules/wifi.go +++ b/modules/wifi.go @@ -34,6 +34,7 @@ type WiFiModule struct { pktSourceChan chan gopacket.Packet pktSourceChanClosed bool deauthSkip []net.HardwareAddr + deauthSilent bool apRunning bool apConfig packets.Dot11ApConfig writes *sync.WaitGroup @@ -51,6 +52,7 @@ func NewWiFiModule(s *session.Session) *WiFiModule { skipBroken: true, apRunning: false, deauthSkip: []net.HardwareAddr{}, + deauthSilent: false, writes: &sync.WaitGroup{}, reads: &sync.WaitGroup{}, chanLock: &sync.Mutex{}, @@ -106,6 +108,10 @@ func NewWiFiModule(s *session.Session) *WiFiModule { "", "Comma separated list of BSSID to skip while sending deauth packets.")) + w.AddParam(session.NewBoolParameter("wifi.deauth.silent", + "false", + "If true, messages from wifi.deauth will be suppressed.")) + w.AddHandler(session.NewModuleHandler("wifi.ap", "", "Inject fake management beacons in order to create a rogue access point.", func(args []string) error { diff --git a/modules/wifi_deauth.go b/modules/wifi_deauth.go index 39b7a2c1..ebb1e017 100644 --- a/modules/wifi_deauth.go +++ b/modules/wifi_deauth.go @@ -50,6 +50,15 @@ func (w *WiFiModule) skipDeauth(to net.HardwareAddr) bool { return false } +func (w *WiFiModule) isDeauthSilent() bool { + if err, is := w.BoolParam("wifi.deauth.silent"); err != nil { + log.Warning("%v", err) + } else { + w.deauthSilent = is + } + return w.deauthSilent +} + func (w *WiFiModule) startDeauth(to net.HardwareAddr) error { // parse skip list if err, deauthSkip := w.StringParam("wifi.deauth.skip"); err != nil { @@ -112,7 +121,9 @@ func (w *WiFiModule) startDeauth(to net.HardwareAddr) error { client := deauth.Client ap := deauth.Ap if w.Running() { - log.Info("deauthing client %s from AP %s (channel %d)", client.String(), ap.ESSID(), ap.Channel()) + if !w.isDeauthSilent() { + log.Info("deauthing client %s from AP %s (channel %d)", client.String(), ap.ESSID(), ap.Channel()) + } w.onChannel(ap.Channel(), func() { w.sendDeauthPacket(ap.HW, client.HW) })