|
|
@@ -6,8 +6,8 @@ import (
|
|
|
"time"
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
- "gopkg.in/jcmturner/gokrb5.v5/mstypes"
|
|
|
"gopkg.in/jcmturner/gokrb5.v5/testdata"
|
|
|
+ "gopkg.in/jcmturner/rpc.v1/mstypes"
|
|
|
)
|
|
|
|
|
|
func TestKerbValidationInfo_Unmarshal(t *testing.T) {
|
|
|
@@ -28,21 +28,17 @@ func TestKerbValidationInfo_Unmarshal(t *testing.T) {
|
|
|
assert.Equal(t, time.Date(2006, 3, 19, 10, 44, 54, 837147900, time.UTC), k.PasswordCanChange.Time(), "PasswordCanChange not as expected")
|
|
|
|
|
|
assert.Equal(t, "lzhu", k.EffectiveName.Value, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, "Liqiang(Larry) Zhu", k.FullName.Value, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, "ntds2.bat", k.LogonScript.Value, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, "", k.ProfilePath.Value, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, "", k.HomeDirectory.Value, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, "", k.HomeDirectoryDrive.Value, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, uint32(131088), k.ProfilePath.BufferPrt, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, uint32(131092), k.HomeDirectory.BufferPrt, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, uint32(131096), k.HomeDirectoryDrive.BufferPrt, "EffectiveName not as expected")
|
|
|
+ assert.Equal(t, "Liqiang(Larry) Zhu", k.FullName.String(), "EffectiveName not as expected")
|
|
|
+ assert.Equal(t, "ntds2.bat", k.LogonScript.String(), "EffectiveName not as expected")
|
|
|
+ assert.Equal(t, "", k.ProfilePath.String(), "EffectiveName not as expected")
|
|
|
+ assert.Equal(t, "", k.HomeDirectory.String(), "EffectiveName not as expected")
|
|
|
+ assert.Equal(t, "", k.HomeDirectoryDrive.String(), "EffectiveName not as expected")
|
|
|
|
|
|
assert.Equal(t, uint16(4180), k.LogonCount, "LogonCount not as expected")
|
|
|
assert.Equal(t, uint16(0), k.BadPasswordCount, "BadPasswordCount not as expected")
|
|
|
assert.Equal(t, uint32(2914711), k.UserID, "UserID not as expected")
|
|
|
assert.Equal(t, uint32(513), k.PrimaryGroupID, "PrimaryGroupID not as expected")
|
|
|
assert.Equal(t, uint32(26), k.GroupCount, "GroupCount not as expected")
|
|
|
- assert.Equal(t, uint32(131100), k.pGroupIDs, "pGroupIDs not as expected")
|
|
|
|
|
|
gids := []mstypes.GroupMembership{
|
|
|
{RelativeID: 3392609, Attributes: 7},
|
|
|
@@ -76,14 +72,12 @@ func TestKerbValidationInfo_Unmarshal(t *testing.T) {
|
|
|
|
|
|
assert.Equal(t, uint32(32), k.UserFlags, "UserFlags not as expected")
|
|
|
|
|
|
- assert.Equal(t, mstypes.UserSessionKey{Data: []mstypes.CypherBlock{{Data: make([]byte, 8, 8)}, {Data: make([]byte, 8, 8)}}}, k.UserSessionKey, "UserSessionKey not as expected")
|
|
|
+ assert.Equal(t, mstypes.UserSessionKey{CypherBlock: [2]mstypes.CypherBlock{{Data: [8]byte{}}, {Data: [8]byte{}}}}, k.UserSessionKey, "UserSessionKey not as expected")
|
|
|
|
|
|
assert.Equal(t, "NTDEV-DC-05", k.LogonServer.Value, "LogonServer not as expected")
|
|
|
assert.Equal(t, "NTDEV", k.LogonDomainName.Value, "LogonDomainName not as expected")
|
|
|
|
|
|
- assert.Equal(t, uint32(131112), k.pLogonDomainID, "pLogonDomainID not as expected")
|
|
|
-
|
|
|
- assert.Equal(t, "S-1-5-21-397955417-626881126-188441444", k.LogonDomainID.ToString(), "LogonDomainID not as expected")
|
|
|
+ assert.Equal(t, "S-1-5-21-397955417-626881126-188441444", k.LogonDomainID.String(), "LogonDomainID not as expected")
|
|
|
|
|
|
assert.Equal(t, uint32(16), k.UserAccountControl, "UserAccountControl not as expected")
|
|
|
assert.Equal(t, uint32(0), k.SubAuthStatus, "SubAuthStatus not as expected")
|
|
|
@@ -92,7 +86,6 @@ func TestKerbValidationInfo_Unmarshal(t *testing.T) {
|
|
|
assert.Equal(t, uint32(0), k.FailedILogonCount, "FailedILogonCount not as expected")
|
|
|
|
|
|
assert.Equal(t, uint32(13), k.SIDCount, "SIDCount not as expected")
|
|
|
- assert.Equal(t, uint32(131116), k.pExtraSIDs, "SIDCount not as expected")
|
|
|
assert.Equal(t, int(k.SIDCount), len(k.ExtraSIDs), "SIDCount and size of ExtraSIDs list are not the same")
|
|
|
|
|
|
var es = []struct {
|
|
|
@@ -113,13 +106,11 @@ func TestKerbValidationInfo_Unmarshal(t *testing.T) {
|
|
|
{"S-1-5-21-397955417-626881126-188441444-3248111", uint32(536870919)},
|
|
|
}
|
|
|
for i, s := range es {
|
|
|
- assert.Equal(t, s.sid, k.ExtraSIDs[i].SID.ToString(), "ExtraSID SID value not as epxected")
|
|
|
+ assert.Equal(t, s.sid, k.ExtraSIDs[i].SID.String(), "ExtraSID SID value not as epxected")
|
|
|
assert.Equal(t, s.attr, k.ExtraSIDs[i].Attributes, "ExtraSID Attributes value not as epxected")
|
|
|
}
|
|
|
|
|
|
- assert.Equal(t, uint32(0), k.pResourceGroupDomainSID, "pResourceGroupDomainSID not as expected")
|
|
|
assert.Equal(t, uint8(0), k.ResourceGroupDomainSID.SubAuthorityCount, "ResourceGroupDomainSID not as expected")
|
|
|
- assert.Equal(t, uint32(0), k.pResourceGroupIDs, "pResourceGroupIDs not as expected")
|
|
|
assert.Equal(t, 0, len(k.ResourceGroupIDs), "ResourceGroupIDs not as expected")
|
|
|
|
|
|
b, err = hex.DecodeString(testdata.TestVectors["PAC_Kerb_Validation_Info"])
|
|
|
@@ -138,22 +129,18 @@ func TestKerbValidationInfo_Unmarshal(t *testing.T) {
|
|
|
assert.Equal(t, time.Date(2017, 5, 6, 7, 23, 8, 968750000, time.UTC), k2.PasswordLastSet.Time(), "PasswordLastSet not as expected")
|
|
|
assert.Equal(t, time.Date(2017, 5, 7, 7, 23, 8, 968750000, time.UTC), k2.PasswordCanChange.Time(), "PasswordCanChange not as expected")
|
|
|
|
|
|
- assert.Equal(t, "testuser1", k2.EffectiveName.Value, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, "Test1 User1", k2.FullName.Value, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, "", k2.LogonScript.Value, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, "", k2.ProfilePath.Value, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, "", k2.HomeDirectory.Value, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, "", k2.HomeDirectoryDrive.Value, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, uint32(131088), k2.ProfilePath.BufferPrt, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, uint32(131092), k2.HomeDirectory.BufferPrt, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, uint32(131096), k2.HomeDirectoryDrive.BufferPrt, "EffectiveName not as expected")
|
|
|
+ assert.Equal(t, "testuser1", k2.EffectiveName.String(), "EffectiveName not as expected")
|
|
|
+ assert.Equal(t, "Test1 User1", k2.FullName.String(), "EffectiveName not as expected")
|
|
|
+ assert.Equal(t, "", k2.LogonScript.String(), "EffectiveName not as expected")
|
|
|
+ assert.Equal(t, "", k2.ProfilePath.String(), "EffectiveName not as expected")
|
|
|
+ assert.Equal(t, "", k2.HomeDirectory.String(), "EffectiveName not as expected")
|
|
|
+ assert.Equal(t, "", k2.HomeDirectoryDrive.String(), "EffectiveName not as expected")
|
|
|
|
|
|
assert.Equal(t, uint16(216), k2.LogonCount, "LogonCount not as expected")
|
|
|
assert.Equal(t, uint16(0), k2.BadPasswordCount, "BadPasswordCount not as expected")
|
|
|
assert.Equal(t, uint32(1105), k2.UserID, "UserID not as expected")
|
|
|
assert.Equal(t, uint32(513), k2.PrimaryGroupID, "PrimaryGroupID not as expected")
|
|
|
assert.Equal(t, uint32(5), k2.GroupCount, "GroupCount not as expected")
|
|
|
- assert.Equal(t, uint32(131100), k2.pGroupIDs, "pGroupIDs not as expected")
|
|
|
|
|
|
gids = []mstypes.GroupMembership{
|
|
|
{RelativeID: 513, Attributes: 7},
|
|
|
@@ -166,14 +153,12 @@ func TestKerbValidationInfo_Unmarshal(t *testing.T) {
|
|
|
|
|
|
assert.Equal(t, uint32(32), k2.UserFlags, "UserFlags not as expected")
|
|
|
|
|
|
- assert.Equal(t, mstypes.UserSessionKey{Data: []mstypes.CypherBlock{{Data: make([]byte, 8, 8)}, {Data: make([]byte, 8, 8)}}}, k2.UserSessionKey, "UserSessionKey not as expected")
|
|
|
+ assert.Equal(t, mstypes.UserSessionKey{CypherBlock: [2]mstypes.CypherBlock{{Data: [8]byte{}}, {Data: [8]byte{}}}}, k2.UserSessionKey, "UserSessionKey not as expected")
|
|
|
|
|
|
assert.Equal(t, "ADDC", k2.LogonServer.Value, "LogonServer not as expected")
|
|
|
assert.Equal(t, "TEST", k2.LogonDomainName.Value, "LogonDomainName not as expected")
|
|
|
|
|
|
- assert.Equal(t, uint32(131112), k2.pLogonDomainID, "pLogonDomainID not as expected")
|
|
|
-
|
|
|
- assert.Equal(t, "S-1-5-21-3167651404-3865080224-2280184895", k2.LogonDomainID.ToString(), "LogonDomainID not as expected")
|
|
|
+ assert.Equal(t, "S-1-5-21-3167651404-3865080224-2280184895", k2.LogonDomainID.String(), "LogonDomainID not as expected")
|
|
|
|
|
|
assert.Equal(t, uint32(528), k2.UserAccountControl, "UserAccountControl not as expected")
|
|
|
assert.Equal(t, uint32(0), k2.SubAuthStatus, "SubAuthStatus not as expected")
|
|
|
@@ -182,7 +167,6 @@ func TestKerbValidationInfo_Unmarshal(t *testing.T) {
|
|
|
assert.Equal(t, uint32(0), k2.FailedILogonCount, "FailedILogonCount not as expected")
|
|
|
|
|
|
assert.Equal(t, uint32(2), k2.SIDCount, "SIDCount not as expected")
|
|
|
- assert.Equal(t, uint32(131116), k2.pExtraSIDs, "SIDCount not as expected")
|
|
|
assert.Equal(t, int(k2.SIDCount), len(k2.ExtraSIDs), "SIDCount and size of ExtraSIDs list are not the same")
|
|
|
|
|
|
var es2 = []struct {
|
|
|
@@ -193,13 +177,11 @@ func TestKerbValidationInfo_Unmarshal(t *testing.T) {
|
|
|
{"S-1-5-21-3167651404-3865080224-2280184895-1111", uint32(536870919)},
|
|
|
}
|
|
|
for i, s := range es2 {
|
|
|
- assert.Equal(t, s.sid, k2.ExtraSIDs[i].SID.ToString(), "ExtraSID SID value not as epxected")
|
|
|
+ assert.Equal(t, s.sid, k2.ExtraSIDs[i].SID.String(), "ExtraSID SID value not as epxected")
|
|
|
assert.Equal(t, s.attr, k2.ExtraSIDs[i].Attributes, "ExtraSID Attributes value not as epxected")
|
|
|
}
|
|
|
|
|
|
- assert.Equal(t, uint32(0), k2.pResourceGroupDomainSID, "pResourceGroupDomainSID not as expected")
|
|
|
assert.Equal(t, uint8(0), k2.ResourceGroupDomainSID.SubAuthorityCount, "ResourceGroupDomainSID not as expected")
|
|
|
- assert.Equal(t, uint32(0), k2.pResourceGroupIDs, "pResourceGroupIDs not as expected")
|
|
|
assert.Equal(t, 0, len(k2.ResourceGroupIDs), "ResourceGroupIDs not as expected")
|
|
|
}
|
|
|
|
|
|
@@ -219,22 +201,18 @@ func TestKerbValidationInfo_Unmarshal_DomainTrust(t *testing.T) {
|
|
|
assert.Equal(t, time.Date(2017, 10, 10, 20, 42, 56, 220282300, time.UTC), k.PasswordLastSet.Time(), "PasswordLastSet not as expected")
|
|
|
assert.Equal(t, time.Date(2017, 10, 11, 20, 42, 56, 220282300, time.UTC), k.PasswordCanChange.Time(), "PasswordCanChange not as expected")
|
|
|
|
|
|
- assert.Equal(t, "testuser1", k.EffectiveName.Value, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, "Test1 User1", k.FullName.Value, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, "", k.LogonScript.Value, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, "", k.ProfilePath.Value, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, "", k.HomeDirectory.Value, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, "", k.HomeDirectoryDrive.Value, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, uint32(131088), k.ProfilePath.BufferPrt, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, uint32(131092), k.HomeDirectory.BufferPrt, "EffectiveName not as expected")
|
|
|
- assert.Equal(t, uint32(131096), k.HomeDirectoryDrive.BufferPrt, "EffectiveName not as expected")
|
|
|
+ assert.Equal(t, "testuser1", k.EffectiveName.String(), "EffectiveName not as expected")
|
|
|
+ assert.Equal(t, "Test1 User1", k.FullName.String(), "EffectiveName not as expected")
|
|
|
+ assert.Equal(t, "", k.LogonScript.String(), "EffectiveName not as expected")
|
|
|
+ assert.Equal(t, "", k.ProfilePath.String(), "EffectiveName not as expected")
|
|
|
+ assert.Equal(t, "", k.HomeDirectory.String(), "EffectiveName not as expected")
|
|
|
+ assert.Equal(t, "", k.HomeDirectoryDrive.String(), "EffectiveName not as expected")
|
|
|
|
|
|
assert.Equal(t, uint16(46), k.LogonCount, "LogonCount not as expected")
|
|
|
assert.Equal(t, uint16(0), k.BadPasswordCount, "BadPasswordCount not as expected")
|
|
|
assert.Equal(t, uint32(1106), k.UserID, "UserID not as expected")
|
|
|
assert.Equal(t, uint32(513), k.PrimaryGroupID, "PrimaryGroupID not as expected")
|
|
|
assert.Equal(t, uint32(3), k.GroupCount, "GroupCount not as expected")
|
|
|
- assert.Equal(t, uint32(131100), k.pGroupIDs, "pGroupIDs not as expected")
|
|
|
|
|
|
gids := []mstypes.GroupMembership{
|
|
|
{RelativeID: 1110, Attributes: 7},
|
|
|
@@ -245,14 +223,12 @@ func TestKerbValidationInfo_Unmarshal_DomainTrust(t *testing.T) {
|
|
|
|
|
|
assert.Equal(t, uint32(544), k.UserFlags, "UserFlags not as expected")
|
|
|
|
|
|
- assert.Equal(t, mstypes.UserSessionKey{Data: []mstypes.CypherBlock{{Data: make([]byte, 8, 8)}, {Data: make([]byte, 8, 8)}}}, k.UserSessionKey, "UserSessionKey not as expected")
|
|
|
+ assert.Equal(t, mstypes.UserSessionKey{CypherBlock: [2]mstypes.CypherBlock{{Data: [8]byte{}}, {Data: [8]byte{}}}}, k.UserSessionKey, "UserSessionKey not as expected")
|
|
|
|
|
|
assert.Equal(t, "UDC", k.LogonServer.Value, "LogonServer not as expected")
|
|
|
assert.Equal(t, "USER", k.LogonDomainName.Value, "LogonDomainName not as expected")
|
|
|
|
|
|
- assert.Equal(t, uint32(131112), k.pLogonDomainID, "pLogonDomainID not as expected")
|
|
|
-
|
|
|
- assert.Equal(t, "S-1-5-21-2284869408-3503417140-1141177250", k.LogonDomainID.ToString(), "LogonDomainID not as expected")
|
|
|
+ assert.Equal(t, "S-1-5-21-2284869408-3503417140-1141177250", k.LogonDomainID.String(), "LogonDomainID not as expected")
|
|
|
|
|
|
assert.Equal(t, uint32(528), k.UserAccountControl, "UserAccountControl not as expected")
|
|
|
assert.Equal(t, uint32(0), k.SubAuthStatus, "SubAuthStatus not as expected")
|
|
|
@@ -261,7 +237,6 @@ func TestKerbValidationInfo_Unmarshal_DomainTrust(t *testing.T) {
|
|
|
assert.Equal(t, uint32(0), k.FailedILogonCount, "FailedILogonCount not as expected")
|
|
|
|
|
|
assert.Equal(t, uint32(1), k.SIDCount, "SIDCount not as expected")
|
|
|
- assert.Equal(t, uint32(131116), k.pExtraSIDs, "SIDCount not as expected")
|
|
|
assert.Equal(t, int(k.SIDCount), len(k.ExtraSIDs), "SIDCount and size of ExtraSIDs list are not the same")
|
|
|
|
|
|
var es = []struct {
|
|
|
@@ -271,14 +246,12 @@ func TestKerbValidationInfo_Unmarshal_DomainTrust(t *testing.T) {
|
|
|
{"S-1-18-1", uint32(7)},
|
|
|
}
|
|
|
for i, s := range es {
|
|
|
- assert.Equal(t, s.sid, k.ExtraSIDs[i].SID.ToString(), "ExtraSID SID value not as epxected")
|
|
|
+ assert.Equal(t, s.sid, k.ExtraSIDs[i].SID.String(), "ExtraSID SID value not as epxected")
|
|
|
assert.Equal(t, s.attr, k.ExtraSIDs[i].Attributes, "ExtraSID Attributes value not as epxected")
|
|
|
}
|
|
|
|
|
|
- assert.Equal(t, uint32(131124), k.pResourceGroupDomainSID, "pResourceGroupDomainSID not as expected")
|
|
|
assert.Equal(t, uint8(4), k.ResourceGroupDomainSID.SubAuthorityCount, "ResourceGroupDomainSID not as expected")
|
|
|
- assert.Equal(t, "S-1-5-21-3062750306-1230139592-1973306805", k.ResourceGroupDomainSID.ToString(), "ResourceGroupDomainSID value not as expected")
|
|
|
- assert.Equal(t, uint32(131128), k.pResourceGroupIDs, "pResourceGroupIDs not as expected")
|
|
|
+ assert.Equal(t, "S-1-5-21-3062750306-1230139592-1973306805", k.ResourceGroupDomainSID.String(), "ResourceGroupDomainSID value not as expected")
|
|
|
assert.Equal(t, 2, len(k.ResourceGroupIDs), "ResourceGroupIDs not as expected")
|
|
|
rgids := []mstypes.GroupMembership{
|
|
|
{RelativeID: 1107, Attributes: 536870919},
|