I want to know how many valid WPA handshakes are in a cap file.
I did try using this approach:
tshark -r file.cap -R "(wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || eapol)" -2
1 0.064507 D-LinkIn_89:9f:44 → Broadcast 802.11 325 Beacon frame, SN=2485, FN=0, Flags=........, BI=100, SSID=AAAAA
2 15.639995 LgElectr_94:af:ba → D-LinkIn_89:9f:44 EAPOL 155 Key (Message 2 of 4)
3 15.643065 D-LinkIn_89:9f:44 → LgElectr_94:af:ba EAPOL 213 Key (Message 3 of 4)
4 27.695798 LgElectr_94:af:ba → D-LinkIn_89:9f:44 EAPOL 155 Key (Message 2 of 4)
5 27.703480 LgElectr_94:af:ba → D-LinkIn_89:9f:44 EAPOL 133 Key (Message 4 of 4)
6 54.926712 D-LinkIn_89:9f:44 → LgElectr_94:af:ba EAPOL 133 Key (Message 1 of 4)
7 54.975420 D-LinkIn_89:9f:44 → LgElectr_94:af:ba EAPOL 213 Key (Message 3 of 4)
8 81.340985 D-LinkIn_89:9f:44 → LgElectr_94:af:ba EAPOL 133 Key (Message 1 of 4)
9 81.351228 LgElectr_94:af:ba → D-LinkIn_89:9f:44 EAPOL 155 Key (Message 2 of 4)
10 81.353779 D-LinkIn_89:9f:44 → LgElectr_94:af:ba EAPOL 213 Key (Message 3 of 4)
11 81.358911 LgElectr_94:af:ba → D-LinkIn_89:9f:44 EAPOL 133 Key (Message 4 of 4)
12 119.080377 LgElectr_94:af:ba → D-LinkIn_89:9f:44 EAPOL 133 Key (Message 4 of 4)
I want the following output:
count.sh file.cap
3 (3 valid handshake).
What I don't know is to identify when a set of messages is a valid Handshake to crack it (let's say something like aircrack-ng).
Help.
Well, after some more digging I realize the answer was right in front of my eyes.
I found LazyScript (github repo) that has a feature to check/validate WPA/WPA2 handshakes. Diving into the source code I figured it out that it uses Pyrit and Cowpatty
So, in summary, there's a very easy/simple way to count for handshakes in a cap file (also check the quality):
pyrit -r fileWithHandShakes.cap analyze
It will give this output:
Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com
This code is distributed under the GNU General Public License v3+
Parsing file '/folder/fileWithHandShakes.cap' (1/1)...
Parsed 112 packets (112 802.11-packets), got 1 AP(s)
#1: AccessPoint fd:94:e3:43:bc:b6 ('MyWifi'):
#1: Station 30:fd:38:c1:2b:bb, 3 handshake(s):
#1: HMAC_SHA1_AES, good, spread 1
#2: HMAC_SHA1_AES, bad, spread 17
#3: HMAC_SHA1_AES, bad, spread 22
#2: Station 44:00:10:06:bc:bc, 2 handshake(s):
#1: HMAC_SHA1_AES, good, spread 1
#2: HMAC_SHA1_AES, bad, spread 3
That's the way to count for handshakes and also to check for the quality of those handshakes.