Estoy tratando de desarrollar una función PHP para calcular el hash NTLMv2 al proporcionar el servidor & Desafío del cliente, dominio, cuenta y contraseña. El hash resultante parece no ser correcto. Alguien me puede guiar sobre la forma correcta:
Aquí está el algoritmo en lenguaje PHP:
function GenerateNTMLv2($password, $account, $domain, $client_challenge, $server_challenge) {
$hash = mhash(MHASH_MD4, $password);
$hash = mhash(MHASH_MD5, strtoupper($account) . $domain, $hash);
$hash = mhash(MHASH_MD5, $client_challenge . $server_challenge, $hash);
return strtoupper(bin2hex($hash));
}
He proporcionado los siguientes parámetros:
$password='asim3347';
$client_challenge = '0101000000000000DF5ED1178FBACE012FDEE788AA2574CE0000000002001200430041004E00440059004C0041004E00440001001200430041004E00440059004C0041004E00440004001200630061006E00640079006C0061006E00640003001200630061006E00640079006C0061006E006400060004000300000007000800DF5ED1178FBACE0108003000300000000000000001000000002000004C60DD0226C932C69BAF540769C9E4DA53ABF77A8D56DBA0F9AA214EEEBB30AE0A001000000000000000000000000000000000000900240063006900660073002F003100390032002E003100360038002E0030002E003200320038000000000000000000';
$server_challenge = 'FFC7C728CAAC8BE8';
$domain = 'SOFTECH';
$account = 'asim';
La función devuelve el siguiente hash NTLMv2: 48335EFCA9A07EA12B9EBBC2AEE30C8E
Donde debe estar el HASH: 3780B32F46FA60CE1431264A525B0D60
¿Alguien puede sugerir el algoritmo correcto?