Class NtlmV2Functions

java.lang.Object
com.hierynomus.ntlm.functions.NtlmV2Functions

public class NtlmV2Functions extends Object
  • Field Details

  • Constructor Details

  • Method Details

    • computeResponse

      public ComputedNtlmV2Response computeResponse(String username, String domain, char[] password, NtlmChallenge serverNtlmChallenge, long time, TargetInfo clientTargetInfo)
      [MS-NLMP].pdf 3.3.2 NTLM v2 authentication.

      Define ComputeResponse(NegFlg, ResponseKeyNT, ResponseKeyLM, CHALLENGE_MESSAGE.ServerChallenge, ClientChallenge, Time, ServerName) As If (User is set to "" && Passwd is set to "") -- Special case for anonymous authentication Set NtChallengeResponseLen to 0 Set NtChallengeResponseMaxLen to 0 Set NtChallengeResponseBufferOffset to 0 Set LmChallengeResponse to Z(1) Else Set temp to ConcatenationOf(Responserversion, HiResponserversion, Z(6), Time, ClientChallenge, Z(4), ServerName, Z(4)) Set NTProofStr to HMAC_MD5(ResponseKeyNT, ConcatenationOf(CHALLENGE_MESSAGE.ServerChallenge,temp)) Set NtChallengeResponse to ConcatenationOf(NTProofStr, temp) Set LmChallengeResponse to ConcatenationOf(HMAC_MD5(ResponseKeyLM, ConcatenationOf(CHALLENGE_MESSAGE.ServerChallenge, ClientChallenge)), ClientChallenge ) EndIf Set SessionBaseKey to HMAC_MD5(ResponseKeyNT, NTProofStr) EndDefine

    • NTOWFv2

      public byte[] NTOWFv2(String password, String username, String userDomain)
      [MS-NLMP].pdf 3.3.2 NTLM v2 authentication (NTOWF v2).

      Define NTOWFv2(Passwd, User, UserDom) as HMAC_MD5( MD4(UNICODE(Passwd)), UNICODE(ConcatenationOf( Uppercase(User), UserDom ) ) ) EndDefine

    • LMOWFv2

      public byte[] LMOWFv2(String password, String username, String userDomain)
      [MS-NLMP].pdf 3.3.2 NTLM v2 authentication (NTOWF v2).

      Define LMOWFv2(Passwd, User, UserDom) as NTOWFv2(Passwd, User, UserDom) EndDefine

    • getLmV2Response

      public byte[] getLmV2Response(byte[] responseKeyLM, byte[] serverChallenge, byte[] clientChallenge)
      [MS-NLMP].pdf 3.3.2 NTLM v2 authentication.

      Set LmChallengeResponse to ConcatenationOf(HMAC_MD5(ResponseKeyLM, ConcatenationOf(CHALLENGE_MESSAGE.ServerChallenge, ClientChallenge)), ClientChallenge)

    • getNtV2Response

      public byte[] getNtV2Response(byte[] responseKeyNT, byte[] serverChallenge, byte[] clientChallenge, long time, TargetInfo targetInfo)
      3.3.2 NTLM v2 Authentication

      Set temp to ntResponseTemp(ClientChallenge, TargetInfo) // See below Set NTProofStr to HMAC_MD5(ResponseKeyNT, ConcatenationOf(CHALLENGE_MESSAGE.ServerChallenge,temp)) Set NtChallengeResponse to ConcatenationOf(NTProofStr, temp)

    • getSessionBaseKey

      public byte[] getSessionBaseKey(byte[] responseKeyNT, byte[] ntProofStr)
      [MS-NLMP].pdf 3.3.2 NTLM v2 authentication.

      Set SessionBaseKey to HMAC_MD5(ResponseKeyNT, NTProofStr)

    • ntResponseTemp

      byte[] ntResponseTemp(byte[] clientChallenge, long time, TargetInfo targetInfo)
      [MS-NLMP].pdf 2.2.2.7 NTLM v2: (temp)

      Set temp to ConcatenationOf(Responserversion, HiResponserversion, Z(6), Time, ClientChallenge, Z(4), ServerName, Z(4))

    • ntProofStr

      byte[] ntProofStr(byte[] responseKeyNT, byte[] serverChallenge, byte[] temp)
      [MS-NLMP].pdf 3.3.2 NTLM v2 authentication (NTProofStr).

      Define NTProofStr(ResponseKeyNT, ServerChallenge, temp) as HMAC_MD5(ResponseKeyNT, ConcatenationOf(ServerChallenge, temp)) EndDefine

    • kxKey

      public byte[] kxKey(byte[] sessionBaseKey, byte[] lmResponse, byte[] serverChallenge)
      [MS-NLMP].pdf 3.4.5.1 KXKEY If NTLM v2 is used, KeyExchangeKey MUST be set to the given 128-bit SessionBaseKey value.