2013-04-11 74 views
0

我試圖研究NTLMv2響應,Eric Glass's work
但卡在HMAC-MD5部分。 (使用功能如this使用openSSL的HMAC-MD5

我得到了正確的NTLM哈希和unicode用戶名&域。
(他只強調 「USERDOMAIN」,但沒有用戶名,所以我想這是 「用戶」)

unsigned char v1hash[16]; // "0xcd06ca7c7e10c99b1d33b7485a2ed808" 
unsigned short udata[14]; 
// concated unicode USER+USERDOMAIN "0x550053004500520044004f004d00410049004e00" 
unsigned char v2hash[16]; 
int iLen; 

HMAC(EVP_md5(), v1hash, 16, udata, sizeof(udata), v2hash, &iLen); 

但結果是:

v2hash(16): 23 d2 3c a4 dd 1a 20 81 35 cf 3a 42 1c e1 5a 17 

這應該是 「0x04b8e0ba74289cc540826bab1dee63ae」

我在這裏做錯了什麼?

回答

1

我不是一個C程序員,但...

從我的那篇文章USERDOMAIN的閱讀應該是這樣 - 不是用戶+ USERDOMAIN即大寫的用戶名=「用戶」與目標=「DOMAIN CONCAT 「給USERDOMAIN,它給出的unicode字節開始55005300 ...

然後它會出現你的udata數組是錯誤的大小。您只處理20個字節的信息,因此不要將數組設置爲28,否則HMAC/MD5函數將在輸入數組末尾處理額外的隨機數據。

+0

哦,是的,我的愚蠢的錯誤:x正是它的用戶+ DOMAIN – moeCake 2013-04-11 11:25:36