关于NTLM认证的相关问题
最近需要在做OPC协议的客户端,使用OPC协议登陆远程计算机时,需要NTLM认证,但是目前NTLM认证数据一直计算不对,请大神们指点一下:
1.根据wireshark抓到的报文,server侧发送的NTLMSSP_CHALLENGE报文中的challenge为
NTLM Server Challenge:6ac419cd40e23b32
2.客户端使用的登陆密码为123,根据hash计算得到LM哈希值为ccf9155e3e7db453aad3b435b51404ee
3.根据NTLM协议
LMResp[0] = E(substr(LMPW[0], 0, 6), challenge),
LMResp[1] = E(substr(LMPW[0], 7, 13), challenge)
BYTE[7] K;
K= zeros(7)
K=substr(LMPW[0], 14, 15)
LMResp[2] = E(K, challenge)
4.从LM的哈希中取前7个字节ccf9155e3e7db4,由于目前使用的des算法接口都是8个字节的,将值转化为二进制,在每第8个字节进行填充0后,值为CC7C44AAE2F2F668,因为des计算中第8个字节为校验位,填写0或1,不影响加密结果
5.使用key值CC7C44AAE2F2F668对challenge中的数据内容6ac419cd40e23b32进行DES加密处理,得到9EDEE68FA7FD4375
6.正常通信过程中,server发送challenge后,客户端回复的是response报文的内容为
NTLM Response:9782E1B7CA1567CE3DD7F5CA4606B31BE510359BCE43226B,并且能够被认证通过
请大神们帮忙看看,我是根据验证成功报文的challenge进行计算,为什么我算的数据和正常回复的数据不一致,感觉也是照着协议算的,哪里算错了,或者哪里理解有问题?