From b00ec39bbdd04f845950f4dbb4fd0a2c3155e830 Mon Sep 17 00:00:00 2001 From: Brian Cully Date: Fri, 30 Oct 2015 00:47:37 +0000 Subject: [PATCH] Use golang's log, so we don't need log4go. --- ntlm/crypto.go | 3 ++- ntlm/helpers.go | 29 ++++++++++++++--------------- ntlm/message_authenticate.go | 2 +- ntlm/ntlmv1.go | 6 +++--- ntlm/ntlmv1_test.go | 8 ++++---- ntlm/ntlmv2.go | 15 +++++++-------- utils/decode_auth.go | 2 ++ utils/test_auth.go | 1 + 8 files changed, 34 insertions(+), 32 deletions(-) diff --git a/ntlm/crypto.go b/ntlm/crypto.go index a52ceab..6e6774d 100644 --- a/ntlm/crypto.go +++ b/ntlm/crypto.go @@ -8,8 +8,9 @@ import ( md5P "crypto/md5" "crypto/rand" rc4P "crypto/rc4" - md4P "github.com/ThomsonReutersEikon/go-ntlm/ntlm/md4" crc32P "hash/crc32" + + md4P "github.com/ThomsonReutersEikon/go-ntlm/ntlm/md4" ) func md4(data []byte) []byte { diff --git a/ntlm/helpers.go b/ntlm/helpers.go index 1cc78d5..6b1a1dd 100644 --- a/ntlm/helpers.go +++ b/ntlm/helpers.go @@ -5,8 +5,8 @@ package ntlm import ( "bytes" "crypto/rand" - "unicode/utf16" "encoding/binary" + "unicode/utf16" ) // Concatenate two byte slices into a new slice @@ -67,23 +67,22 @@ func utf16FromString(s string) []byte { // Convert a UTF16 string to UTF8 string for Go usage func utf16ToString(bytes []byte) string { - var data []uint16 + var data []uint16 - // NOTE: This is definitely not the best way to do this, but when I tried using a buffer.Read I could not get it to work - for offset := 0; offset < len(bytes); offset = offset + 2 { - i := binary.LittleEndian.Uint16(bytes[offset : offset+2]) - data = append(data, i) - } + // NOTE: This is definitely not the best way to do this, but when I tried using a buffer.Read I could not get it to work + for offset := 0; offset < len(bytes); offset = offset + 2 { + i := binary.LittleEndian.Uint16(bytes[offset : offset+2]) + data = append(data, i) + } - return string(utf16.Decode(data)) + return string(utf16.Decode(data)) } func uint32ToBytes(v uint32) []byte { - bytes := make([]byte, 4) - bytes[0] = byte(v & 0xff) - bytes[1] = byte((v >> 8) & 0xff) - bytes[2] = byte((v >> 16) & 0xff) - bytes[3] = byte((v >> 24) & 0xff) - return bytes + bytes := make([]byte, 4) + bytes[0] = byte(v & 0xff) + bytes[1] = byte((v >> 8) & 0xff) + bytes[2] = byte((v >> 16) & 0xff) + bytes[3] = byte((v >> 24) & 0xff) + return bytes } - diff --git a/ntlm/message_authenticate.go b/ntlm/message_authenticate.go index 5c2448e..1792f53 100644 --- a/ntlm/message_authenticate.go +++ b/ntlm/message_authenticate.go @@ -38,7 +38,7 @@ type AuthenticateMessage struct { /// MS-NLMP 2.2.1.3 - In connectionless mode, a NEGOTIATE structure that contains a set of bit flags (section 2.2.2.5) and represents the // conclusion of negotiation—the choices the client has made from the options the server offered in the CHALLENGE_MESSAGE. // In connection-oriented mode, a NEGOTIATE structure that contains the set of bit flags (section 2.2.2.5) negotiated in - // the previous + // the previous NegotiateFlags uint32 // 4 bytes // Version (8 bytes): A VERSION structure (section 2.2.2.10) that is present only when the NTLMSSP_NEGOTIATE_VERSION diff --git a/ntlm/ntlmv1.go b/ntlm/ntlmv1.go index e66a3eb..4ad2b84 100644 --- a/ntlm/ntlmv1.go +++ b/ntlm/ntlmv1.go @@ -6,7 +6,7 @@ import ( "bytes" rc4P "crypto/rc4" "errors" - l4g "github.com/ThomsonReutersEikon/log4go" + "log" "strings" ) @@ -181,7 +181,7 @@ func (n *V1ServerSession) ProcessAuthenticateMessage(am *AuthenticateMessage) (e // They should always be correct (I hope) n.user = am.UserName.String() n.userDomain = am.DomainName.String() - l4g.Info("(ProcessAuthenticateMessage)NTLM v1 User %s Domain %s", n.user, n.userDomain) + log.Printf("(ProcessAuthenticateMessage)NTLM v1 User %s Domain %s", n.user, n.userDomain) err = n.fetchResponseKeys() if err != nil { @@ -225,7 +225,7 @@ func (n *V1ServerSession) ProcessAuthenticateMessage(am *AuthenticateMessage) (e //UGH not entirely sure how this could possibly happen, going to put this in for now //TODO investigate if this ever is really happening am.Version = &VersionStruct{ProductMajorVersion: uint8(5), ProductMinorVersion: uint8(1), ProductBuild: uint16(2600), NTLMRevisionCurrent: uint8(15)} - l4g.Error("Nil version in ntlmv1") + log.Printf("Nil version in ntlmv1") } err = n.calculateKeys(am.Version.NTLMRevisionCurrent) diff --git a/ntlm/ntlmv1_test.go b/ntlm/ntlmv1_test.go index 18e02cf..e175557 100644 --- a/ntlm/ntlmv1_test.go +++ b/ntlm/ntlmv1_test.go @@ -42,14 +42,14 @@ func checkV1Value(t *testing.T, name string, value []byte, expected string, err // would authenticate. This was due to a bug in the MS-NLMP docs. This tests for that issue func TestNtlmV1ExtendedSessionSecurity(t *testing.T) { // NTLMv1 with extended session security - challengeMessage := "TlRMTVNTUAACAAAAAAAAADgAAABVgphiRy3oSZvn1I4AAAAAAAAAAKIAogA4AAAABQEoCgAAAA8CAA4AUgBFAFUAVABFAFIAUwABABwAVQBLAEIAUAAtAEMAQgBUAFIATQBGAEUAMAA2AAQAFgBSAGUAdQB0AGUAcgBzAC4AbgBlAHQAAwA0AHUAawBiAHAALQBjAGIAdAByAG0AZgBlADAANgAuAFIAZQB1AHQAZQByAHMALgBuAGUAdAAFABYAUgBlAHUAdABlAHIAcwAuAG4AZQB0AAAAAAA=" - authenticateMessage := "TlRMTVNTUAADAAAAGAAYAJgAAAAYABgAsAAAAAAAAABIAAAAOgA6AEgAAAAWABYAggAAABAAEADIAAAAVYKYYgUCzg4AAAAPMQAwADAAMAAwADEALgB3AGMAcABAAHQAaABvAG0AcwBvAG4AcgBlAHUAdABlAHIAcwAuAGMAbwBtAE4AWQBDAFMATQBTAEcAOQA5ADAAOQBRWAK3h/TIywAAAAAAAAAAAAAAAAAAAAA3tp89kZU1hs1XZp7KTyGm3XsFAT9stEDW9YXDaeYVBmBcBb//2FOu" + challengeMessage := "TlRMTVNTUAACAAAAAAAAADgAAABVgphiRy3oSZvn1I4AAAAAAAAAAKIAogA4AAAABQEoCgAAAA8CAA4AUgBFAFUAVABFAFIAUwABABwAVQBLAEIAUAAtAEMAQgBUAFIATQBGAEUAMAA2AAQAFgBSAGUAdQB0AGUAcgBzAC4AbgBlAHQAAwA0AHUAawBiAHAALQBjAGIAdAByAG0AZgBlADAANgAuAFIAZQB1AHQAZQByAHMALgBuAGUAdAAFABYAUgBlAHUAdABlAHIAcwAuAG4AZQB0AAAAAAA=" + authenticateMessage := "TlRMTVNTUAADAAAAGAAYAJgAAAAYABgAsAAAAAAAAABIAAAAOgA6AEgAAAAWABYAggAAABAAEADIAAAAVYKYYgUCzg4AAAAPMQAwADAAMAAwADEALgB3AGMAcABAAHQAaABvAG0AcwBvAG4AcgBlAHUAdABlAHIAcwAuAGMAbwBtAE4AWQBDAFMATQBTAEcAOQA5ADAAOQBRWAK3h/TIywAAAAAAAAAAAAAAAAAAAAA3tp89kZU1hs1XZp7KTyGm3XsFAT9stEDW9YXDaeYVBmBcBb//2FOu" challengeData, _ := base64.StdEncoding.DecodeString(challengeMessage) c, _ := ParseChallengeMessage(challengeData) - authenticateData, _ := base64.StdEncoding.DecodeString(authenticateMessage) - msg, err := ParseAuthenticateMessage(authenticateData, 1) + authenticateData, _ := base64.StdEncoding.DecodeString(authenticateMessage) + msg, err := ParseAuthenticateMessage(authenticateData, 1) if err != nil { t.Errorf("Could not process authenticate message: %s", err) } diff --git a/ntlm/ntlmv2.go b/ntlm/ntlmv2.go index d6528d4..a511f89 100644 --- a/ntlm/ntlmv2.go +++ b/ntlm/ntlmv2.go @@ -7,7 +7,7 @@ import ( rc4P "crypto/rc4" "encoding/binary" "errors" - l4g "github.com/ThomsonReutersEikon/log4go" + "log" "strings" "time" ) @@ -204,7 +204,7 @@ func (n *V2ServerSession) ProcessAuthenticateMessage(am *AuthenticateMessage) (e // They should always be correct (I hope) n.user = am.UserName.String() n.userDomain = am.DomainName.String() - l4g.Info("(ProcessAuthenticateMessage)NTLM v2 User %s Domain %s", n.user, n.userDomain) + log.Printf("(ProcessAuthenticateMessage)NTLM v2 User %s Domain %s", n.user, n.userDomain) err = n.fetchResponseKeys() if err != nil { @@ -238,14 +238,13 @@ func (n *V2ServerSession) ProcessAuthenticateMessage(am *AuthenticateMessage) (e return err } - if am.Version == nil { - //UGH not entirely sure how this could possibly happen, going to put this in for now - //TODO investigate if this ever is really happening - am.Version = &VersionStruct{ProductMajorVersion: uint8(5), ProductMinorVersion: uint8(1), ProductBuild: uint16(2600), NTLMRevisionCurrent: uint8(15)} + //UGH not entirely sure how this could possibly happen, going to put this in for now + //TODO investigate if this ever is really happening + am.Version = &VersionStruct{ProductMajorVersion: uint8(5), ProductMinorVersion: uint8(1), ProductBuild: uint16(2600), NTLMRevisionCurrent: uint8(15)} - l4g.Error("Nil version in ntlmv2") - } + log.Printf("Nil version in ntlmv2") + } err = n.calculateKeys(am.Version.NTLMRevisionCurrent) if err != nil { diff --git a/utils/decode_auth.go b/utils/decode_auth.go index d2d1d1f..166b522 100644 --- a/utils/decode_auth.go +++ b/utils/decode_auth.go @@ -4,6 +4,8 @@ import ( "encoding/base64" "flag" "fmt" + + "github.com/ThomsonReutersEikon/go-ntlm/ntlm" ) func main() { diff --git a/utils/test_auth.go b/utils/test_auth.go index 2338ba1..057b0d7 100644 --- a/utils/test_auth.go +++ b/utils/test_auth.go @@ -3,6 +3,7 @@ package main import ( "encoding/base64" "fmt" + "github.com/ThomsonReutersEikon/go-ntlm/ntlm" )