mò |tÊ=c@sŒdkZdkZdkZdkZdfd„ƒYZd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z dS( NtrecordcBstZdd„Zd„ZRS(NicCs8||_t|ƒ|_d|_|i|i|_dS(tiN(tdatatselftlentoffsett next_offset(RRR((tntlm\ntlm_messages.pyt__init__s   cCs\||_ti|iƒ}|}ti|iƒ}|||d|_||i|_ dS(RtN( RRt ntlmutilstint2chrsRtlen1tlen2tdata_offt record_infoR(RRRR R ((Rtcreate_record_info#s (t__name__t __module__RR(((RRs c Cs|}d}d} d} ti|dƒ}d}d}d}d}|| | |||||}t i|ƒ}ti|d dƒ}|S( RtNTLMSSPsR tFLAGSt t t0t0s N(tenvironment_dicttedtprotocolttypetzeros1R thex2strtflagstzeros2tzeros3tsmthg1tsmthg2tmsg1tbase64t encodestringtstringtreplace( RR$RR!R RR#R"RRR((Rtcreate_message1/s"cCs?|}ti|dƒ}d}d} || d} t|dƒ}t|dƒ}t|dƒ}tdƒ} |do tt i|d |ƒƒ} n tdƒ} |d o tt i|d |ƒƒ}n tdƒ}t| ƒd d }|ddjo|d t|ƒ}n|i|ƒ|i|iƒ|i|iƒ| i|iƒ|i| iƒ| i|iƒ|i|i|i| i|i} | | i|i|i|i|i}|ddjo|| i|}n|| }|ddjo|| i}nti|ƒ}ti|ddƒ}|S(RRRsR tDOMAINtUSERtHOSTtLMt LM_HASHED_PWtNTt NT_HASHED_PWiit NTLM_MODEis N(RRR RRRRtheadRt domain_rectuser_recthost_rectadditional_rect ntlm_procst calc_resptnoncetlm_rectnt_recRt domain_offsetRRRt data_partRtm3R%R&R'R((R9RRRR<R3R;R5R>RR2R6R:R=RR4((Rtcreate_message3EsF        %) cCs ti|ƒ}|dd!}|S(Rii N(R%t decodestringtmsg2R9(RAR9((Rtparse_message2†s cCs h}d}ti|dd!ƒ|d