42 lines
1.1 KiB
Plaintext
42 lines
1.1 KiB
Plaintext
= NTLM Implementation for Go
|
|
|
|
== Sample Usage as NTLM Client
|
|
|
|
import "ntlm"
|
|
import "ntlm/messages"
|
|
|
|
session = ntlm.NewClientSession(ntlm.Version1, ntlm.ConnectionlessMode)
|
|
session.SetUserInfo("someuser","somepassword","somedomain")
|
|
|
|
negotiate := session.GenerateNegotiateMessage()
|
|
|
|
<send negotiate to server>
|
|
|
|
challenge, err := messages.ParseChallengeMessage(challengeBytes)
|
|
session.ProcessChallengeMessage(challenge)
|
|
|
|
authenticate := session.GenerateAuthenticateMessage()
|
|
|
|
<send authenticate message to server>
|
|
|
|
== Sample Usage as NTLM Server
|
|
|
|
session = ntlm.NewServerSession(ntlm.Version1, ntlm.ConnectionlessMode)
|
|
session.SetUserInfo("someuser","somepassword","somedomain")
|
|
|
|
challenge := session.GenerateChallengeMessage()
|
|
|
|
<send challenge to client>
|
|
|
|
<receive authentication bytes>
|
|
|
|
auth, err := messages.ParseAuthentiateMessage(authenticateBytes)
|
|
session.ProcessAuthenticateMessage(auth)
|
|
|
|
== Generating a message MAC
|
|
|
|
Once a session is created you can generate the Mac for a message using:
|
|
|
|
message := "this is some message to sign"
|
|
sequenceNumber := 100
|
|
signature, err := session.Mac([]byte(message), sequenceNumber) |