rename Authenticate/Challenge/Negotiate to *Message
This commit is contained in:
		
							parent
							
								
									af256c1a87
								
							
						
					
					
						commit
						6783d408ba
					
				| @ -10,7 +10,7 @@ import ( | |||||||
| 	"fmt" | 	"fmt" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| type Authenticate struct { | type AuthenticateMessage struct { | ||||||
| 	// sig - 8 bytes | 	// sig - 8 bytes | ||||||
| 	Signature []byte | 	Signature []byte | ||||||
| 	// message type - 4 bytes | 	// message type - 4 bytes | ||||||
| @ -53,8 +53,8 @@ type Authenticate struct { | |||||||
| 	Payload []byte | 	Payload []byte | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func ParseAuthenticateMessage(body []byte, ntlmVersion int) (*Authenticate, error) { | func ParseAuthenticateMessage(body []byte, ntlmVersion int) (*AuthenticateMessage, error) { | ||||||
| 	am := new(Authenticate) | 	am := new(AuthenticateMessage) | ||||||
| 
 | 
 | ||||||
| 	am.Signature = body[0:8] | 	am.Signature = body[0:8] | ||||||
| 	if !bytes.Equal(am.Signature, []byte("NTLMSSP\x00")) { | 	if !bytes.Equal(am.Signature, []byte("NTLMSSP\x00")) { | ||||||
| @ -155,7 +155,7 @@ func ParseAuthenticateMessage(body []byte, ntlmVersion int) (*Authenticate, erro | |||||||
| 	return am, nil | 	return am, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (a *Authenticate) ClientChallenge() (response []byte) { | func (a *AuthenticateMessage) ClientChallenge() (response []byte) { | ||||||
| 	if a.NtlmV2Response != nil { | 	if a.NtlmV2Response != nil { | ||||||
| 		response = a.NtlmV2Response.NtlmV2ClientChallenge.ChallengeFromClient | 		response = a.NtlmV2Response.NtlmV2ClientChallenge.ChallengeFromClient | ||||||
| 	} else if a.NtlmV1Response != nil && NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY.IsSet(a.NegotiateFlags) { | 	} else if a.NtlmV1Response != nil && NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY.IsSet(a.NegotiateFlags) { | ||||||
| @ -165,7 +165,7 @@ func (a *Authenticate) ClientChallenge() (response []byte) { | |||||||
| 	return response | 	return response | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (a *Authenticate) getLowestPayloadOffset() int { | func (a *AuthenticateMessage) getLowestPayloadOffset() int { | ||||||
| 	payloadStructs := [...]*PayloadStruct{a.LmChallengeResponse, a.NtChallengeResponseFields, a.DomainName, a.UserName, a.Workstation, a.EncryptedRandomSessionKey} | 	payloadStructs := [...]*PayloadStruct{a.LmChallengeResponse, a.NtChallengeResponseFields, a.DomainName, a.UserName, a.Workstation, a.EncryptedRandomSessionKey} | ||||||
| 
 | 
 | ||||||
| 	// Find the lowest offset value | 	// Find the lowest offset value | ||||||
| @ -180,7 +180,7 @@ func (a *Authenticate) getLowestPayloadOffset() int { | |||||||
| 	return lowest | 	return lowest | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (a *Authenticate) Bytes() []byte { | func (a *AuthenticateMessage) Bytes() []byte { | ||||||
| 	payloadLen := int(a.LmChallengeResponse.Len + a.NtChallengeResponseFields.Len + a.DomainName.Len + a.UserName.Len + a.Workstation.Len + a.EncryptedRandomSessionKey.Len) | 	payloadLen := int(a.LmChallengeResponse.Len + a.NtChallengeResponseFields.Len + a.DomainName.Len + a.UserName.Len + a.Workstation.Len + a.EncryptedRandomSessionKey.Len) | ||||||
| 	messageLen := 8 + 4 + 6*8 + 4 + 8 + 16 | 	messageLen := 8 + 4 + 6*8 + 4 + 8 + 16 | ||||||
| 	payloadOffset := uint32(messageLen) | 	payloadOffset := uint32(messageLen) | ||||||
| @ -241,7 +241,7 @@ func (a *Authenticate) Bytes() []byte { | |||||||
| 	return buffer.Bytes() | 	return buffer.Bytes() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (a *Authenticate) String() string { | func (a *AuthenticateMessage) String() string { | ||||||
| 	var buffer bytes.Buffer | 	var buffer bytes.Buffer | ||||||
| 
 | 
 | ||||||
| 	buffer.WriteString("Authenticate NTLM Message\n") | 	buffer.WriteString("Authenticate NTLM Message\n") | ||||||
|  | |||||||
| @ -10,7 +10,7 @@ import ( | |||||||
| 	"fmt" | 	"fmt" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| type Challenge struct { | type ChallengeMessage struct { | ||||||
| 	// sig - 8 bytes | 	// sig - 8 bytes | ||||||
| 	Signature []byte | 	Signature []byte | ||||||
| 	// message type - 4 bytes | 	// message type - 4 bytes | ||||||
| @ -53,8 +53,8 @@ type Challenge struct { | |||||||
| 	Payload []byte | 	Payload []byte | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func ParseChallengeMessage(body []byte) (*Challenge, error) { | func ParseChallengeMessage(body []byte) (*ChallengeMessage, error) { | ||||||
| 	challenge := new(Challenge) | 	challenge := new(ChallengeMessage) | ||||||
| 
 | 
 | ||||||
| 	challenge.Signature = body[0:8] | 	challenge.Signature = body[0:8] | ||||||
| 	if !bytes.Equal(challenge.Signature, []byte("NTLMSSP\x00")) { | 	if !bytes.Equal(challenge.Signature, []byte("NTLMSSP\x00")) { | ||||||
| @ -101,7 +101,7 @@ func ParseChallengeMessage(body []byte) (*Challenge, error) { | |||||||
| 	return challenge, nil | 	return challenge, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (c *Challenge) Bytes() []byte { | func (c *ChallengeMessage) Bytes() []byte { | ||||||
| 	payloadLen := int(c.TargetName.Len + c.TargetInfoPayloadStruct.Len) | 	payloadLen := int(c.TargetName.Len + c.TargetInfoPayloadStruct.Len) | ||||||
| 	messageLen := 8 + 4 + 8 + 4 + 8 + 8 + 8 + 8 | 	messageLen := 8 + 4 + 8 + 4 + 8 + 8 + 8 + 8 | ||||||
| 	payloadOffset := uint32(messageLen) | 	payloadOffset := uint32(messageLen) | ||||||
| @ -137,7 +137,7 @@ func (c *Challenge) Bytes() []byte { | |||||||
| 	return buffer.Bytes() | 	return buffer.Bytes() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (c *Challenge) getLowestPayloadOffset() int { | func (c *ChallengeMessage) getLowestPayloadOffset() int { | ||||||
| 	payloadStructs := [...]*PayloadStruct{c.TargetName, c.TargetInfoPayloadStruct} | 	payloadStructs := [...]*PayloadStruct{c.TargetName, c.TargetInfoPayloadStruct} | ||||||
| 
 | 
 | ||||||
| 	// Find the lowest offset value | 	// Find the lowest offset value | ||||||
| @ -152,7 +152,7 @@ func (c *Challenge) getLowestPayloadOffset() int { | |||||||
| 	return lowest | 	return lowest | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (c *Challenge) String() string { | func (c *ChallengeMessage) String() string { | ||||||
| 	var buffer bytes.Buffer | 	var buffer bytes.Buffer | ||||||
| 
 | 
 | ||||||
| 	buffer.WriteString("Challenge NTLM Message") | 	buffer.WriteString("Challenge NTLM Message") | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ | |||||||
| 
 | 
 | ||||||
| package ntlm | package ntlm | ||||||
| 
 | 
 | ||||||
| type Negotiate struct { | type NegotiateMessage struct { | ||||||
| 	// All bytes of the message | 	// All bytes of the message | ||||||
| 	Bytes []byte | 	Bytes []byte | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										18
									
								
								ntlm/ntlm.go
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								ntlm/ntlm.go
									
									
									
									
									
								
							| @ -43,9 +43,9 @@ type ClientSession interface { | |||||||
| 	SetUserInfo(username string, password string, domain string) | 	SetUserInfo(username string, password string, domain string) | ||||||
| 	SetMode(mode Mode) | 	SetMode(mode Mode) | ||||||
| 
 | 
 | ||||||
| 	GenerateNegotiateMessage() (*Negotiate, error) | 	GenerateNegotiateMessage() (*NegotiateMessage, error) | ||||||
| 	ProcessChallengeMessage(*Challenge) error | 	ProcessChallengeMessage(*ChallengeMessage) error | ||||||
| 	GenerateAuthenticateMessage() (*Authenticate, error) | 	GenerateAuthenticateMessage() (*AuthenticateMessage, error) | ||||||
| 
 | 
 | ||||||
| 	Seal(message []byte) ([]byte, error) | 	Seal(message []byte) ([]byte, error) | ||||||
| 	Sign(message []byte) ([]byte, error) | 	Sign(message []byte) ([]byte, error) | ||||||
| @ -77,9 +77,9 @@ type ServerSession interface { | |||||||
| 	SetMode(mode Mode) | 	SetMode(mode Mode) | ||||||
| 	SetServerChallenge(challege []byte) | 	SetServerChallenge(challege []byte) | ||||||
| 
 | 
 | ||||||
| 	ProcessNegotiateMessage(*Negotiate) error | 	ProcessNegotiateMessage(*NegotiateMessage) error | ||||||
| 	GenerateChallengeMessage() (*Challenge, error) | 	GenerateChallengeMessage() (*ChallengeMessage, error) | ||||||
| 	ProcessAuthenticateMessage(*Authenticate) error | 	ProcessAuthenticateMessage(*AuthenticateMessage) error | ||||||
| 
 | 
 | ||||||
| 	GetSessionData() *SessionData | 	GetSessionData() *SessionData | ||||||
| 
 | 
 | ||||||
| @ -100,9 +100,9 @@ type SessionData struct { | |||||||
| 
 | 
 | ||||||
| 	NegotiateFlags uint32 | 	NegotiateFlags uint32 | ||||||
| 
 | 
 | ||||||
| 	negotiateMessage    *Negotiate | 	negotiateMessage    *NegotiateMessage | ||||||
| 	challengeMessage    *Challenge | 	challengeMessage    *ChallengeMessage | ||||||
| 	authenticateMessage *Authenticate | 	authenticateMessage *AuthenticateMessage | ||||||
| 
 | 
 | ||||||
| 	serverChallenge     []byte | 	serverChallenge     []byte | ||||||
| 	clientChallenge     []byte | 	clientChallenge     []byte | ||||||
|  | |||||||
| @ -154,12 +154,12 @@ type V1ServerSession struct { | |||||||
| 	V1Session | 	V1Session | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (n *V1ServerSession) ProcessNegotiateMessage(nm *Negotiate) (err error) { | func (n *V1ServerSession) ProcessNegotiateMessage(nm *NegotiateMessage) (err error) { | ||||||
| 	n.negotiateMessage = nm | 	n.negotiateMessage = nm | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (n *V1ServerSession) GenerateChallengeMessage() (cm *Challenge, err error) { | func (n *V1ServerSession) GenerateChallengeMessage() (cm *ChallengeMessage, err error) { | ||||||
| 	// TODO: Generate this challenge message | 	// TODO: Generate this challenge message | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
| @ -172,7 +172,7 @@ func (n *V1ServerSession) GetSessionData() *SessionData { | |||||||
| 	return &n.SessionData | 	return &n.SessionData | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (n *V1ServerSession) ProcessAuthenticateMessage(am *Authenticate) (err error) { | func (n *V1ServerSession) ProcessAuthenticateMessage(am *AuthenticateMessage) (err error) { | ||||||
| 	n.authenticateMessage = am | 	n.authenticateMessage = am | ||||||
| 	n.NegotiateFlags = am.NegotiateFlags | 	n.NegotiateFlags = am.NegotiateFlags | ||||||
| 	n.clientChallenge = am.ClientChallenge() | 	n.clientChallenge = am.ClientChallenge() | ||||||
| @ -262,11 +262,11 @@ type V1ClientSession struct { | |||||||
| 	V1Session | 	V1Session | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (n *V1ClientSession) GenerateNegotiateMessage() (nm *Negotiate, err error) { | func (n *V1ClientSession) GenerateNegotiateMessage() (nm *NegotiateMessage, err error) { | ||||||
| 	return nil, nil | 	return nil, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (n *V1ClientSession) ProcessChallengeMessage(cm *Challenge) (err error) { | func (n *V1ClientSession) ProcessChallengeMessage(cm *ChallengeMessage) (err error) { | ||||||
| 	n.challengeMessage = cm | 	n.challengeMessage = cm | ||||||
| 	n.serverChallenge = cm.ServerChallenge | 	n.serverChallenge = cm.ServerChallenge | ||||||
| 	n.clientChallenge = randomBytes(8) | 	n.clientChallenge = randomBytes(8) | ||||||
| @ -331,8 +331,8 @@ func (n *V1ClientSession) ProcessChallengeMessage(cm *Challenge) (err error) { | |||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (n *V1ClientSession) GenerateAuthenticateMessage() (am *Authenticate, err error) { | func (n *V1ClientSession) GenerateAuthenticateMessage() (am *AuthenticateMessage, err error) { | ||||||
| 	am = new(Authenticate) | 	am = new(AuthenticateMessage) | ||||||
| 	am.Signature = []byte("NTLMSSP\x00") | 	am.Signature = []byte("NTLMSSP\x00") | ||||||
| 	am.MessageType = uint32(3) | 	am.MessageType = uint32(3) | ||||||
| 	am.LmChallengeResponse, _ = CreateBytePayload(n.lmChallengeResponse) | 	am.LmChallengeResponse, _ = CreateBytePayload(n.lmChallengeResponse) | ||||||
|  | |||||||
| @ -149,13 +149,13 @@ func (n *V2ServerSession) SetServerChallenge(challenge []byte) { | |||||||
| 	n.serverChallenge = challenge | 	n.serverChallenge = challenge | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (n *V2ServerSession) ProcessNegotiateMessage(nm *Negotiate) (err error) { | func (n *V2ServerSession) ProcessNegotiateMessage(nm *NegotiateMessage) (err error) { | ||||||
| 	n.negotiateMessage = nm | 	n.negotiateMessage = nm | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (n *V2ServerSession) GenerateChallengeMessage() (cm *Challenge, err error) { | func (n *V2ServerSession) GenerateChallengeMessage() (cm *ChallengeMessage, err error) { | ||||||
| 	cm = new(Challenge) | 	cm = new(ChallengeMessage) | ||||||
| 	cm.Signature = []byte("NTLMSSP\x00") | 	cm.Signature = []byte("NTLMSSP\x00") | ||||||
| 	cm.MessageType = uint32(2) | 	cm.MessageType = uint32(2) | ||||||
| 	cm.TargetName, _ = CreateBytePayload(make([]byte, 0)) | 	cm.TargetName, _ = CreateBytePayload(make([]byte, 0)) | ||||||
| @ -195,7 +195,7 @@ func (n *V2ServerSession) GenerateChallengeMessage() (cm *Challenge, err error) | |||||||
| 	return cm, nil | 	return cm, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (n *V2ServerSession) ProcessAuthenticateMessage(am *Authenticate) (err error) { | func (n *V2ServerSession) ProcessAuthenticateMessage(am *AuthenticateMessage) (err error) { | ||||||
| 	n.authenticateMessage = am | 	n.authenticateMessage = am | ||||||
| 	n.NegotiateFlags = am.NegotiateFlags | 	n.NegotiateFlags = am.NegotiateFlags | ||||||
| 	n.clientChallenge = am.ClientChallenge() | 	n.clientChallenge = am.ClientChallenge() | ||||||
| @ -279,11 +279,11 @@ type V2ClientSession struct { | |||||||
| 	V2Session | 	V2Session | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (n *V2ClientSession) GenerateNegotiateMessage() (nm *Negotiate, err error) { | func (n *V2ClientSession) GenerateNegotiateMessage() (nm *NegotiateMessage, err error) { | ||||||
| 	return nil, nil | 	return nil, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (n *V2ClientSession) ProcessChallengeMessage(cm *Challenge) (err error) { | func (n *V2ClientSession) ProcessChallengeMessage(cm *ChallengeMessage) (err error) { | ||||||
| 	n.challengeMessage = cm | 	n.challengeMessage = cm | ||||||
| 	n.serverChallenge = cm.ServerChallenge | 	n.serverChallenge = cm.ServerChallenge | ||||||
| 	n.clientChallenge = randomBytes(8) | 	n.clientChallenge = randomBytes(8) | ||||||
| @ -343,8 +343,8 @@ func (n *V2ClientSession) ProcessChallengeMessage(cm *Challenge) (err error) { | |||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (n *V2ClientSession) GenerateAuthenticateMessage() (am *Authenticate, err error) { | func (n *V2ClientSession) GenerateAuthenticateMessage() (am *AuthenticateMessage, err error) { | ||||||
| 	am = new(Authenticate) | 	am = new(AuthenticateMessage) | ||||||
| 	am.Signature = []byte("NTLMSSP\x00") | 	am.Signature = []byte("NTLMSSP\x00") | ||||||
| 	am.MessageType = uint32(3) | 	am.MessageType = uint32(3) | ||||||
| 	am.LmChallengeResponse, _ = CreateBytePayload(n.lmChallengeResponse) | 	am.LmChallengeResponse, _ = CreateBytePayload(n.lmChallengeResponse) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user