【问题标题】:HMAC-MD5 using openSSLHMAC-MD5 使用 openSSL
【发布时间】:2013-04-11 11:01:17
【问题描述】:

我正在尝试研究 NTLMv2 响应,Eric Glass's work
但卡在 HMAC-MD5 部分。 (使用this等函数)

我得到了正确的 NTLM 哈希,以及 unicode 用户名和域。
(他只强调“USERDOMAIN”,没有强调用户名,所以我猜是“USER”)

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”

我在这里做错了吗?

【问题讨论】:

    标签: c openssl md5 ntlm hmac


    【解决方案1】:

    我不是 C 程序员,但是...

    从我对那篇文章的阅读来看,USERDOMAIN 应该就是 - NOT USER+USERDOMAIN,即大写用户名 = "USER" 与目标 = "DOMAIN" 相结合,给出 USERDOMAIN,它给出了以 55005300 开头的 unicode 字节...

    然后您的 udata 数组的大小会出现错误。您只处理 20 个字节的信息,因此不要将数组设置为 28,否则 HMAC/MD5 函数将在输入数组的末尾处理额外的随机数据。

    【讨论】:

      猜你喜欢
      • 2012-11-13
      • 1970-01-01
      • 2015-09-07
      • 2016-02-07
      • 2014-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多