挑战/响应模式(鉴权协议)
鉴权协议如下的鉴权协议又被称作挑战--认证模式,使用明文口令模式时,网络上传输的就是明文口令
本身,这很容易被Sniffer捕获。
挑战/响应模式在传输信道是可被侦听Sniffer,但不可被篡改的情况下,这是一种简单而安全的方法。
LANManagerChallenge/Response
LANManagerChallenge/Response验证机制,简称LM。该方案比NTLM响应时间更早,安全性更
低。
SMB通信,ClientA访问ServerB通过LM身份验证的过程
①首先我们假设ServerB的密码为"WELCOME",ServerB已经缓存了密码的LM-HASH(原始密码
在任何情况下都不能被缓存)
我们通过上面的脚本计算"WELCOME"的LM-HASH为"c23413a8a1e7665faad3b435b51404ee"
②ServerB--8bytesChallenge-->ClientA
t_1=bin(int(t_1,16)).lstrip('0b').rjust(56,'0')
t_2=bin(int(t_2,16)).lstrip('0b').rjust(56,'0')
#再分7bit为一组末尾加0,组成新的编码
t_1=Zero_padding(t_1)
t_2=Zero_padding(t_2)
printt_1
t_1=hex(int(t_1,2))
t_2=hex(int(t_2,2))
t_1=t_1[2:].rstrip('L')
t_2=t_2[2:].rstrip('L')
if'0'==t_2:
t_2="0000000000000000"
t_1=binascii.a2b_hex(t_1)
t_2=binascii.a2b_hex(t_2)
#上步骤得到的8byte二组,分别作为DESkey为"KGS!@#$%"进行加密。
LM_1=DesEncrypt("KGS!@#$%",t_1)
LM_2=DesEncrypt("KGS!@#$%",t_2)
#将二组DES加密后的编码拼接,得到最终LMHASH值。
LM=LM_1+LM_2
printLM
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63