rename Authenticate/Challenge/Negotiate to *Message

This commit is contained in:
Conor Hunt 2013-07-23 15:35:16 -05:00
parent af256c1a87
commit 6783d408ba
6 changed files with 38 additions and 38 deletions

View File

@ -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")

View File

@ -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")

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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)