Class NtlmFunctions


  • public class NtlmFunctions
    extends java.lang.Object
    NTLM Helper functions
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.nio.charset.Charset UNICODE  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      byte[] encryptRc4​(byte[] key, byte[] val)  
      byte[] getNTLMv2ClientChallenge​(TargetInfo targetInfo)
      [MS-NLMP].pdf 2.2.2.7 NTLM v2: NTLMv2_CLIENT_CHALLENGE
      byte[] getNTLMv2Response​(byte[] responseKeyNT, byte[] serverChallenge, byte[] ntlmv2ClientChallenge)
      3.3.2 NTLM v2 Authentication
      byte[] hmac_md5​(byte[] key, byte[]... message)
      [MS-NLMP].pdf 6 Appendix A: Cryptographic Operations Reference (HMAC_MD5(K, M)).
      byte[] LMOWFv1​(java.lang.String password, java.lang.String username, java.lang.String userDomain)
      [MS-NLMP].pdf 3.3.1 NTLM v1 authentication (LMOWF v1).
      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[] NTOWFv1​(java.lang.String password, java.lang.String username, java.lang.String userDomain)
      [MS-NLMP].pdf 3.3.1 NTLM v1 authentication (NTOWF v1).
      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).
      static byte[] unicode​(java.lang.String string)
      [MS-NLMP].pdf 6 Appendix A: Cryptographic Operations Reference (UNICODE(string)).
      • Methods inherited from class java.lang.Object

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

      • UNICODE

        public static final java.nio.charset.Charset UNICODE
    • Constructor Detail

      • NtlmFunctions

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

      • 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

      • NTOWFv1

        public byte[] NTOWFv1​(java.lang.String password,
                              java.lang.String username,
                              java.lang.String userDomain)
        [MS-NLMP].pdf 3.3.1 NTLM v1 authentication (NTOWF v1).

        Define NTOWFv1(Passwd, User, UserDom) as MD4(UNICODE(Passwd)) EndDefine

      • unicode

        public static byte[] unicode​(java.lang.String string)
        [MS-NLMP].pdf 6 Appendix A: Cryptographic Operations Reference (UNICODE(string)).
        Parameters:
        string - The string to get the bytes of.
        Returns:
        The 2-byte little endian byte order encoding of the Unicode UTF-16 representation of the string.
      • hmac_md5

        public byte[] hmac_md5​(byte[] key,
                               byte[]... message)
        [MS-NLMP].pdf 6 Appendix A: Cryptographic Operations Reference (HMAC_MD5(K, M)).
        Parameters:
        key - The bytes of key K
        message - The bytes of message M
        Returns:
        The 16-byte HMAC-keyed MD5 message digest of the byte string M using the key K
      • LMOWFv1

        public byte[] LMOWFv1​(java.lang.String password,
                              java.lang.String username,
                              java.lang.String userDomain)
        [MS-NLMP].pdf 3.3.1 NTLM v1 authentication (LMOWF v1).

        Define LMOWFv1(Passwd, User, UserDom) as ConcatenationOf( DES(UpperCase(Passwd)[0..6], "KGS!@#$%"), DES(UpperCase(Passwd)[7..13], "KGS!@#$%")) EndDefine

        Parameters:
        password -
        username -
        userDomain -
        Returns:
      • getNTLMv2ClientChallenge

        public byte[] getNTLMv2ClientChallenge​(TargetInfo targetInfo)
        [MS-NLMP].pdf 2.2.2.7 NTLM v2: NTLMv2_CLIENT_CHALLENGE

        3.3.2 NTLM v2 Authentication Set temp to ConcatenationOf(Responserversion, HiResponserversion, Z(6), Time, ClientChallenge, Z(4), ServerName, Z(4))

        Parameters:
        targetInformation -
        Returns:
      • getNTLMv2Response

        public byte[] getNTLMv2Response​(byte[] responseKeyNT,
                                        byte[] serverChallenge,
                                        byte[] ntlmv2ClientChallenge)
        3.3.2 NTLM v2 Authentication

        Set NTProofStr to HMAC_MD5(ResponseKeyNT, ConcatenationOf(CHALLENGE_MESSAGE.ServerChallenge,temp)) Set NtChallengeResponse to ConcatenationOf(NTProofStr, temp)

        Parameters:
        responseKeyNT -
        serverChallenge -
        ntlmv2ClientChallenge - (temp from above)
        Returns: