How to calculate PMKID for WPA*01?
#2
Just compare my solution (PKCS5_PBKDF2_HMAC -> HMAC(EVP_sha1)
Code:
PMK is calculated by: PKCS5_PBKDF2_HMAC((const char*)psk, psklen, (unsigned char*)essid, essidlen, 4096, EVP_sha1(), 32, pmk) PMKID is calculated by: HMAC(EVP_sha1(), pmk, 32, salt, 20, pmkid, NULL);
$ wlangenpmk -e "hashcat-essid" -p "hashcat!"

essid (networkname)....: hashcat-essid
password...............: hashcat!
plainmasterkey (SHA1)..: 88f43854ae7b1624fc2ab7724859e795130f4843c7535729e819cf92f39535dc



with your code ( (PKCS5_PBKDF2_HMAC -> PKCS5_PBKDF2_HMAC -> HMAC(EVP_sha1):
Code:
//Calculate PSK = PBKDF2(Passphrase, SSID, 4096) PKCS5_PBKDF2_HMAC(pass, (int)strlen(pass), (const unsigned char*)salt,(int)strlen(salt), iterations, EVP_sha1(), outputBytes, digest); //Calculate PMK = PBKDF2(HMAC−SHA1, PSK, SSID, 4096, 256) PKCS5_PBKDF2_HMAC((const char*)digest, 32, (const unsigned char*)salt, (int)strlen(salt), iterations, EVP_sha1(), outputBytes, digest); //Calculate PMKID = HMAC-SHA1-128(PMK,"PMK Name" | MAC_AP | MAC_STA) HMAC(EVP_sha1(), (const char*)digest, 32, (const unsigned char*)salt_PMKID, (size_t)20, digest, PMKID_len); /*memcpy(test, (const unsigned char*)salt_PMKID, 20);*/
you run PKCS5_PBKDF2_HMAC twice. That result in a wrong PMK
your PMK = 29033d570e2f52259f03135c935239053c7d0e0c3bb9ab06e97d92e3c3da3e4e

There is absolutely no need to calculate the PSK (by your first function), because it is given:
const char* password = "hashcat!";
as well as the ESSID:
const char* salttext = "hashcat-essid";
Reply


Messages In This Thread
How to calculate PMKID for WPA*01? - by Caster - 10-16-2022, 12:16 PM
RE: How to calculate PMKID for WPA*01? - by ZerBea - 10-23-2022, 09:07 PM