Package jcifs.ntlmssp
Class Type3Message
- java.lang.Object
-
- jcifs.ntlmssp.NtlmMessage
-
- jcifs.ntlmssp.Type3Message
-
- All Implemented Interfaces:
NtlmFlags
public class Type3Message extends NtlmMessage
Represents an NTLMSSP Type-3 message.
-
-
Field Summary
-
Fields inherited from class jcifs.ntlmssp.NtlmMessage
NTLMSSP_SIGNATURE, NTLMSSP_TYPE1, NTLMSSP_TYPE2, NTLMSSP_TYPE3, NTLMSSP_VERSION, UNI_ENCODING
-
Fields inherited from interface jcifs.ntlmssp.NtlmFlags
NTLMSSP_NEGOTIATE_128, NTLMSSP_NEGOTIATE_56, NTLMSSP_NEGOTIATE_ALWAYS_SIGN, NTLMSSP_NEGOTIATE_ANONYMOUS, NTLMSSP_NEGOTIATE_DATAGRAM_STYLE, NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY, NTLMSSP_NEGOTIATE_KEY_EXCH, NTLMSSP_NEGOTIATE_LM_KEY, NTLMSSP_NEGOTIATE_LOCAL_CALL, NTLMSSP_NEGOTIATE_NETWARE, NTLMSSP_NEGOTIATE_NTLM, NTLMSSP_NEGOTIATE_OEM, NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED, NTLMSSP_NEGOTIATE_OEM_WORKSTATION_SUPPLIED, NTLMSSP_NEGOTIATE_SEAL, NTLMSSP_NEGOTIATE_SIGN, NTLMSSP_NEGOTIATE_TARGET_INFO, NTLMSSP_NEGOTIATE_UNICODE, NTLMSSP_NEGOTIATE_VERSION, NTLMSSP_REQUEST_ACCEPT_RESPONSE, NTLMSSP_REQUEST_INIT_RESPONSE, NTLMSSP_REQUEST_NON_NT_SESSION_KEY, NTLMSSP_REQUEST_TARGET, NTLMSSP_TARGET_TYPE_DOMAIN, NTLMSSP_TARGET_TYPE_SERVER, NTLMSSP_TARGET_TYPE_SHARE
-
-
Constructor Summary
Constructors Constructor Description Type3Message(byte[] material)Creates a Type-3 message using the given raw Type-3 material.Type3Message(int flags, byte[] lmResponse, byte[] ntResponse, String domain, String user, String workstation)Creates a Type-3 message with the specified parameters.Type3Message(CIFSContext tc)Creates a Type-3 message using default values from the current environment.Type3Message(CIFSContext tc, Type2Message type2, String targetName, byte[] passwordHash, String domain, String user, String workstation, int flags)Creates a Type-3 message in response to the given Type-2 message.Type3Message(CIFSContext tc, Type2Message type2, String targetName, byte[] passwordHash, String password, String domain, String user, String workstation, int flags, boolean nonAnonymous)Creates a Type-3 message in response to the given Type-2 message.Type3Message(CIFSContext tc, Type2Message type2, String targetName, String password, String domain, String user, String workstation, int flags)Creates a Type-3 message in response to the given Type-2 message.Type3Message(CIFSContext tc, Type2Message type2, String targetName, String password, String domain, String user, String workstation, int flags, boolean nonAnonymous)Creates a Type-3 message in response to the given Type-2 message.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static intgetDefaultFlags(CIFSContext tc)Returns the default flags for a generic Type-3 message in the current environment.static intgetDefaultFlags(CIFSContext tc, Type2Message type2)Returns the default flags for a Type-3 message created in response to the given Type-2 message in the current environment.StringgetDomain()Returns the domain in which the user has an account.byte[]getEncryptedSessionKey()Returns the session key.byte[]getLMResponse()Returns the LanManager/LMv2 response.static byte[]getLMResponse(CIFSContext tc, Type2Message type2, String password)Constructs the LanManager response to the given Type-2 message using the supplied password.static byte[]getLMv2Response(CIFSContext tc, Type2Message type2, String domain, String user, byte[] passwordHash, byte[] clientChallenge)static byte[]getLMv2Response(CIFSContext tc, Type2Message type2, String domain, String user, String password, byte[] clientChallenge)byte[]getMasterKey()The real session key if the regular session key is actually the encrypted version used for key exchange.byte[]getMic()static byte[]getNTLMv2Response(CIFSContext tc, Type2Message type2, byte[] responseKeyNT, byte[] clientChallenge, byte[] clientChallengeInfo, long ts)byte[]getNTResponse()Returns the NT/NTLMv2 response.static byte[]getNTResponse(CIFSContext tc, Type2Message type2, byte[] passwordHash)Constructs the NT response to the given Type-2 message using the supplied password.static byte[]getNTResponse(CIFSContext tc, Type2Message type2, String password)Constructs the NT response to the given Type-2 message using the supplied password.StringgetUser()Returns the username for the authenticating user.StringgetWorkstation()Returns the workstation from which authentication is being performed.booleanisMICRequired()voidsetDomain(String domain)Sets the domain for this message.voidsetEncryptedSessionKey(byte[] sessionKey)Sets the session key.voidsetLMResponse(byte[] lmResponse)Sets the LanManager/LMv2 response for this message.voidsetMic(byte[] mic)voidsetNTResponse(byte[] ntResponse)Sets the NT/NTLMv2 response for this message.voidsetupMIC(byte[] type1, byte[] type2)Sets the MICvoidsetUser(String user)Sets the user for this message.voidsetWorkstation(String workstation)Sets the workstation for this message.byte[]toByteArray()Returns the raw byte representation of this message.StringtoString()-
Methods inherited from class jcifs.ntlmssp.NtlmMessage
getFlag, getFlags, setFlag, setFlags
-
-
-
-
Constructor Detail
-
Type3Message
public Type3Message(CIFSContext tc)
Creates a Type-3 message using default values from the current environment.- Parameters:
tc- context to use
-
Type3Message
public Type3Message(CIFSContext tc, Type2Message type2, String targetName, String password, String domain, String user, String workstation, int flags) throws GeneralSecurityException, CIFSException
Creates a Type-3 message in response to the given Type-2 message.- Parameters:
tc- context to usetype2- The Type-2 message which this represents a response to.targetName- SPN of the target system, optionalpassword- The password to use when constructing the response.domain- The domain in which the user has an account.user- The username for the authenticating user.workstation- The workstation from which authentication is taking place.flags-- Throws:
GeneralSecurityExceptionCIFSException
-
Type3Message
public Type3Message(CIFSContext tc, Type2Message type2, String targetName, String password, String domain, String user, String workstation, int flags, boolean nonAnonymous) throws GeneralSecurityException, CIFSException
Creates a Type-3 message in response to the given Type-2 message.- Parameters:
tc- context to usetype2- The Type-2 message which this represents a response to.targetName- SPN of the target system, optionalpassword- The password to use when constructing the response.domain- The domain in which the user has an account.user- The username for the authenticating user.workstation- The workstation from which authentication is taking place.flags-nonAnonymous- actually perform authentication with empty password- Throws:
GeneralSecurityExceptionCIFSException
-
Type3Message
public Type3Message(CIFSContext tc, Type2Message type2, String targetName, byte[] passwordHash, String domain, String user, String workstation, int flags) throws CIFSException, GeneralSecurityException
Creates a Type-3 message in response to the given Type-2 message.- Parameters:
tc- context to usetype2- The Type-2 message which this represents a response to.targetName- SPN of the target system, optionalpasswordHash- The NT password hash to use when constructing the response.domain- The domain in which the user has an account.user- The username for the authenticating user.workstation- The workstation from which authentication is taking place.flags-- Throws:
GeneralSecurityExceptionCIFSException
-
Type3Message
public Type3Message(CIFSContext tc, Type2Message type2, String targetName, byte[] passwordHash, String password, String domain, String user, String workstation, int flags, boolean nonAnonymous) throws GeneralSecurityException, CIFSException
Creates a Type-3 message in response to the given Type-2 message.- Parameters:
tc- context to usetype2- The Type-2 message which this represents a response to.targetName- SPN of the target system, optionalpasswordHash- The NT password hash, takes precedence over password (which is no longer required unless legacy LM authentication is needed)password- The password to use when constructing the response.domain- The domain in which the user has an account.user- The username for the authenticating user.workstation- The workstation from which authentication is taking place.flags-nonAnonymous- actually perform authentication with empty password- Throws:
GeneralSecurityExceptionCIFSException
-
Type3Message
public Type3Message(int flags, byte[] lmResponse, byte[] ntResponse, String domain, String user, String workstation)Creates a Type-3 message with the specified parameters.- Parameters:
flags- The flags to apply to this message.lmResponse- The LanManager/LMv2 response.ntResponse- The NT/NTLMv2 response.domain- The domain in which the user has an account.user- The username for the authenticating user.workstation- The workstation from which authentication is taking place.
-
Type3Message
public Type3Message(byte[] material) throws IOExceptionCreates a Type-3 message using the given raw Type-3 material.- Parameters:
material- The raw Type-3 material used to construct this message.- Throws:
IOException- If an error occurs while parsing the material.
-
-
Method Detail
-
setupMIC
public void setupMIC(byte[] type1, byte[] type2) throws GeneralSecurityException, IOExceptionSets the MIC- Parameters:
type1-type2-- Throws:
GeneralSecurityExceptionIOException
-
getDefaultFlags
public static int getDefaultFlags(CIFSContext tc)
Returns the default flags for a generic Type-3 message in the current environment.- Parameters:
tc- context to use- Returns:
- An
intcontaining the default flags.
-
getDefaultFlags
public static int getDefaultFlags(CIFSContext tc, Type2Message type2)
Returns the default flags for a Type-3 message created in response to the given Type-2 message in the current environment.- Parameters:
tc- context to usetype2- The Type-2 message.- Returns:
- An
intcontaining the default flags.
-
getLMResponse
public byte[] getLMResponse()
Returns the LanManager/LMv2 response.- Returns:
- A
byte[]containing the LanManager response.
-
setLMResponse
public void setLMResponse(byte[] lmResponse)
Sets the LanManager/LMv2 response for this message.- Parameters:
lmResponse- The LanManager response.
-
getNTResponse
public byte[] getNTResponse()
Returns the NT/NTLMv2 response.- Returns:
- A
byte[]containing the NT/NTLMv2 response.
-
setNTResponse
public void setNTResponse(byte[] ntResponse)
Sets the NT/NTLMv2 response for this message.- Parameters:
ntResponse- The NT/NTLMv2 response.
-
getDomain
public String getDomain()
Returns the domain in which the user has an account.- Returns:
- A
Stringcontaining the domain for the user.
-
setDomain
public void setDomain(String domain)
Sets the domain for this message.- Parameters:
domain- The domain.
-
getUser
public String getUser()
Returns the username for the authenticating user.- Returns:
- A
Stringcontaining the user for this message.
-
setUser
public void setUser(String user)
Sets the user for this message.- Parameters:
user- The user.
-
getWorkstation
public String getWorkstation()
Returns the workstation from which authentication is being performed.- Returns:
- A
Stringcontaining the workstation.
-
setWorkstation
public void setWorkstation(String workstation)
Sets the workstation for this message.- Parameters:
workstation- The workstation.
-
getMasterKey
public byte[] getMasterKey()
The real session key if the regular session key is actually the encrypted version used for key exchange.- Returns:
- A
byte[]containing the session key.
-
getEncryptedSessionKey
public byte[] getEncryptedSessionKey()
Returns the session key. This is the encrypted session key included in the message, if the actual session key is desired usegetMasterKey()instead.- Returns:
- A
byte[]containing the encrypted session key.
-
setEncryptedSessionKey
public void setEncryptedSessionKey(byte[] sessionKey)
Sets the session key.- Parameters:
sessionKey- The session key.
-
getMic
public byte[] getMic()
- Returns:
- A
byte[]containing the message integrity code.
-
setMic
public void setMic(byte[] mic)
- Parameters:
mic- NTLM mic to set (16 bytes)
-
isMICRequired
public boolean isMICRequired()
- Returns:
- whether a MIC should be calulated
-
toByteArray
public byte[] toByteArray() throws IOExceptionDescription copied from class:NtlmMessageReturns the raw byte representation of this message.- Specified by:
toByteArrayin classNtlmMessage- Returns:
- A
byte[]containing the raw message material. - Throws:
IOException
-
getLMResponse
public static byte[] getLMResponse(CIFSContext tc, Type2Message type2, String password) throws GeneralSecurityException
Constructs the LanManager response to the given Type-2 message using the supplied password.- Parameters:
tc- context to usetype2- The Type-2 message.password- The password.- Returns:
- A
byte[]containing the LanManager response. - Throws:
GeneralSecurityException
-
getLMv2Response
public static byte[] getLMv2Response(CIFSContext tc, Type2Message type2, String domain, String user, String password, byte[] clientChallenge) throws GeneralSecurityException
- Parameters:
tc-type2-domain-user-password-clientChallenge-- Returns:
- the calculated response
- Throws:
GeneralSecurityException
-
getLMv2Response
public static byte[] getLMv2Response(CIFSContext tc, Type2Message type2, String domain, String user, byte[] passwordHash, byte[] clientChallenge) throws GeneralSecurityException
- Parameters:
tc-type2-domain-user-passwordHash- NT password hashclientChallenge-- Returns:
- the calculated response
- Throws:
GeneralSecurityException
-
getNTLMv2Response
public static byte[] getNTLMv2Response(CIFSContext tc, Type2Message type2, byte[] responseKeyNT, byte[] clientChallenge, byte[] clientChallengeInfo, long ts)
- Parameters:
tc- context to usetype2- The Type-2 message.responseKeyNT-clientChallenge-clientChallengeInfo-ts- timestamp (nanos since 1601)- Returns:
- A
byte[]containing the NTLMv2 response.
-
getNTResponse
public static byte[] getNTResponse(CIFSContext tc, Type2Message type2, String password) throws GeneralSecurityException
Constructs the NT response to the given Type-2 message using the supplied password.- Parameters:
tc- context to usetype2- The Type-2 message.password- The password.- Returns:
- A
byte[]containing the NT response. - Throws:
GeneralSecurityException
-
getNTResponse
public static byte[] getNTResponse(CIFSContext tc, Type2Message type2, byte[] passwordHash) throws GeneralSecurityException
Constructs the NT response to the given Type-2 message using the supplied password.- Parameters:
tc- context to usetype2- The Type-2 message.passwordHash- The NT password hash.- Returns:
- A
byte[]containing the NT response. - Throws:
GeneralSecurityException
-
-