Class NtlmV2Functions


  • public class NtlmV2Functions
    extends java.lang.Object
    • Method Summary

      Modifier and Type Method Description
      ComputedNtlmV2Response computeResponse​(java.lang.String username, java.lang.String domain, char[] password, NtlmChallenge serverNtlmChallenge, long time, TargetInfo clientTargetInfo)
      [MS-NLMP].pdf 3.3.2 NTLM v2 authentication.
      byte[] getLmV2Response​(byte[] responseKeyLM, byte[] serverChallenge, byte[] clientChallenge)
      [MS-NLMP].pdf 3.3.2 NTLM v2 authentication.
      byte[] getNtV2Response​(byte[] responseKeyNT, byte[] serverChallenge, byte[] clientChallenge, long time, TargetInfo targetInfo)
      3.3.2 NTLM v2 Authentication
      byte[] getSessionBaseKey​(byte[] responseKeyNT, byte[] ntProofStr)
      [MS-NLMP].pdf 3.3.2 NTLM v2 authentication.
      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.
      byte[] LMOWFv2​(java.lang.String password, java.lang.String username, java.lang.String userDomain)
      [MS-NLMP].pdf 3.3.2 NTLM v2 authentication (NTOWF v2).
      byte[] NTOWFv2​(java.lang.String password, java.lang.String username, java.lang.String userDomain)
      [MS-NLMP].pdf 3.3.2 NTLM v2 authentication (NTOWF v2).
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • NtlmV2Functions

        public NtlmV2Functions​(java.util.Random random,
                               SecurityProvider securityProvider)
    • Method Detail

      • computeResponse

        public ComputedNtlmV2Response computeResponse​(java.lang.String username,
                                                      java.lang.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​(java.lang.String password,
                              java.lang.String username,
                              java.lang.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​(java.lang.String password,
                              java.lang.String username,
                              java.lang.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)

      • 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.