Skip to content

Commit

Permalink
Implemented a way to not send deauthentication and/or association pac…
Browse files Browse the repository at this point in the history
…kets to AP's for which key material was already acquired
  • Loading branch information
Frank Spierings committed Feb 28, 2020
1 parent 8ae28f4 commit a0a0963
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 0 deletions.
12 changes: 12 additions & 0 deletions modules/wifi/wifi.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,11 @@ type WiFiModule struct {
deauthSkip []net.HardwareAddr
deauthSilent bool
deauthOpen bool
deauthAcquired bool
assocSkip []net.HardwareAddr
assocSilent bool
assocOpen bool
assocAcquired bool
filterProbeSTA *regexp.Regexp
filterProbeAP *regexp.Regexp
apRunning bool
Expand Down Expand Up @@ -80,9 +82,11 @@ func NewWiFiModule(s *session.Session) *WiFiModule {
deauthSkip: []net.HardwareAddr{},
deauthSilent: false,
deauthOpen: false,
deauthAcquired: false,
assocSkip: []net.HardwareAddr{},
assocSilent: false,
assocOpen: false,
assocAcquired: false,
showManuf: false,
shakesAggregate: true,
writes: &sync.WaitGroup{},
Expand Down Expand Up @@ -209,6 +213,10 @@ func NewWiFiModule(s *session.Session) *WiFiModule {
"true",
"Send wifi deauth packets to open networks."))

mod.AddParam(session.NewBoolParameter("wifi.deauth.acquired",
"false",
"Send wifi deauth packets from AP's for which key material was already acquired."))

assoc := session.NewModuleHandler("wifi.assoc BSSID", `wifi\.assoc ((?:[a-fA-F0-9:]{11,})|all|\*)`,
"Send an association request to the selected BSSID in order to receive a RSN PMKID key. Use 'all', '*' or a broadcast BSSID (ff:ff:ff:ff:ff:ff) to iterate for every access point.",
func(args []string) error {
Expand Down Expand Up @@ -272,6 +280,10 @@ func NewWiFiModule(s *session.Session) *WiFiModule {
"false",
"Send association requests to open networks."))

mod.AddParam(session.NewBoolParameter("wifi.assoc.acquired",
"false",
"Send association to AP's for which key material was already acquired."))

mod.AddHandler(session.NewModuleHandler("wifi.ap", "",
"Inject fake management beacons in order to create a rogue access point.",
func(args []string) error {
Expand Down
11 changes: 11 additions & 0 deletions modules/wifi/wifi_assoc.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,15 @@ func (mod *WiFiModule) doAssocOpen() bool {
return mod.assocOpen
}

func (mod *WiFiModule) doAssocAcquired() bool {
if err, is := mod.BoolParam("wifi.assoc.acquired"); err != nil {
mod.Warning("%v", err)
} else {
mod.assocAcquired = is
}
return mod.assocAcquired
}

func (mod *WiFiModule) startAssoc(to net.HardwareAddr) error {
// parse skip list
if err, assocSkip := mod.StringParam("wifi.assoc.skip"); err != nil {
Expand Down Expand Up @@ -110,6 +119,8 @@ 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 if ap.HasKeyMaterial() && !mod.doAssocAcquired() {
mod.Debug("skipping association for AP %s (key material already acquired)", ap.ESSID())
} else {
logger("sending association request to AP %s (channel:%d encryption:%s)", ap.ESSID(), ap.Channel, ap.Encryption)

Expand Down
11 changes: 11 additions & 0 deletions modules/wifi/wifi_deauth.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,15 @@ func (mod *WiFiModule) doDeauthOpen() bool {
return mod.deauthOpen
}

func (mod *WiFiModule) doDeauthAcquired() bool {
if err, is := mod.BoolParam("wifi.deauth.acquired"); err != nil {
mod.Warning("%v", err)
} else {
mod.deauthAcquired = is
}
return mod.deauthAcquired
}

func (mod *WiFiModule) startDeauth(to net.HardwareAddr) error {
// parse skip list
if err, deauthSkip := mod.StringParam("wifi.deauth.skip"); err != nil {
Expand Down Expand Up @@ -136,6 +145,8 @@ 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 if ap.HasKeyMaterial() && !mod.doDeauthAcquired() {
mod.Debug("skipping deauth for AP %s (key material already acquired)", ap.ESSID())
} else {
logger("deauthing client %s from AP %s (channel:%d encryption:%s)", client.String(), ap.ESSID(), ap.Channel, ap.Encryption)

Expand Down

0 comments on commit a0a0963

Please sign in to comment.