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