new: added support for half WPA handshakes (https://hashcat.net/forum/thread-6745-post-36007.html)

This commit is contained in:
evilsocket 2019-08-17 22:33:26 -04:00
parent b57661a097
commit 9e9b984fec
No known key found for this signature in database
GPG key ID: 82E42E7F3B34C97E
2 changed files with 21 additions and 2 deletions

View file

@ -93,9 +93,9 @@ func (mod *WiFiModule) discoverHandshakes(radiotap *layers.RadioTap, dot11 *laye
} }
} }
// if we had unsaved packets and either the handshake is complete // if we had unsaved packets and either the handshake is half, complete
// or it contains the PMKID, generate a new event. // or it contains the PMKID, generate a new event.
if doSave && (rawPMKID != nil || station.Handshake.Complete()) { if doSave && (rawPMKID != nil || station.Handshake.Half() || station.Handshake.Complete()) {
mod.Session.Events.Add("wifi.client.handshake", HandshakeEvent{ mod.Session.Events.Add("wifi.client.handshake", HandshakeEvent{
File: mod.shakesFile, File: mod.shakesFile,
NewPackets: numUnsaved, NewPackets: numUnsaved,

View file

@ -90,6 +90,25 @@ func (h *Handshake) Complete() bool {
return nChal > 0 && nResp > 0 && nConf > 0 return nChal > 0 && nResp > 0 && nConf > 0
} }
func (h *Handshake) Half() bool {
h.Lock()
defer h.Unlock()
/*
* You can use every combination of the handshake to crack the net:
* M1/M2
* M2/M3
* M3/M4
* M1/M4 (if M4 snonce is not zero)
* We only have M1 (the challenge), M2 (the response) and M3 (the confirmation)
*/
nChal := len(h.Challenges)
nResp := len(h.Responses)
nConf := len(h.Confirmations)
return (nChal > 0 && nResp > 0) || (nResp > 0 && nConf > 0)
}
func (h *Handshake) HasPMKID() bool { func (h *Handshake) HasPMKID() bool {
h.Lock() h.Lock()
defer h.Unlock() defer h.Unlock()