diff options
-rwxr-xr-x | source4/scripting/swig/torture/pytorture | 2 | ||||
-rwxr-xr-x | source4/scripting/swig/torture/torture_samr.py (renamed from source4/scripting/swig/torture/samr.py) | 237 |
2 files changed, 41 insertions, 198 deletions
diff --git a/source4/scripting/swig/torture/pytorture b/source4/scripting/swig/torture/pytorture index 8a8f4d8bdf..fd4a92eeb4 100755 --- a/source4/scripting/swig/torture/pytorture +++ b/source4/scripting/swig/torture/pytorture @@ -40,7 +40,7 @@ if len(args) == 0: for test in args: try: - module = __import__(test) + module = __import__('torture_%s' % test) except ImportError: print 'No such module "%s"' % test sys.exit(1) diff --git a/source4/scripting/swig/torture/samr.py b/source4/scripting/swig/torture/torture_samr.py index f7c33baeb3..929420695d 100755 --- a/source4/scripting/swig/torture/samr.py +++ b/source4/scripting/swig/torture/torture_samr.py @@ -1,162 +1,57 @@ #!/usr/bin/python -import dcerpc +import sys +import dcerpc, samr def test_Connect(pipe): - print 'testing samr_Connect' + print 'testing Connect' - r = {} - r['system_name'] = 0; - r['access_mask'] = 0x02000000 - - result = dcerpc.samr_Connect(pipe, r) - - s = {} - s['handle'] = result['connect_handle'] - - handle = result['connect_handle'] - - print 'testing samr_Connect2' - - r = {} - r['system_name'] = None - r['access_mask'] = 0x02000000 - - result = dcerpc.samr_Connect2(pipe, r) - - s = {} - s['handle'] = result['connect_handle'] - - dcerpc.samr_Close(pipe, s) - - print 'testing samr_Connect3' - - r = {} - r['system_name'] = None - r['unknown'] = 0 - r['access_mask'] = 0x02000000 - - result = dcerpc.samr_Connect3(pipe, r) - - s = {} - s['handle'] = result['connect_handle'] - - dcerpc.samr_Close(pipe, s) - - print 'testing samr_Connect4' - - r = {} - r['system_name'] = None - r['unknown'] = 0 - r['access_mask'] = 0x02000000 - - result = dcerpc.samr_Connect4(pipe, r) - - s = {} - s['handle'] = result['connect_handle'] - - dcerpc.samr_Close(pipe, s) - - print 'testing samr_Connect5' - - r = {} - r['system_name'] = None - r['access_mask'] = 0x02000000 - r['level'] = 1 - r['info'] = {} - r['info']['info1'] = {} - r['info']['info1']['unknown1'] = 0 - r['info']['info1']['unknown2'] = 0 - - try: - result = dcerpc.samr_Connect5(pipe, r) - s = {} - s['handle'] = result['connect_handle'] - dcerpc.samr_Close(pipe, s) - except dcerpc.NTSTATUS, arg: - if arg[0] != dcerpc.NT_STATUS_NET_WRITE_FAULT: - raise + handle = samr.Connect(pipe) + handle = samr.Connect2(pipe) + handle = samr.Connect3(pipe) + handle = samr.Connect4(pipe) + handle = samr.Connect5(pipe) return handle def test_QuerySecurity(pipe, handle): - print 'testing samr_QuerySecurity' - - r = {} - r['handle'] = handle - r['sec_info'] = 7 - - result = dcerpc.samr_QuerySecurity(pipe, r) - - s = {} - s['handle'] = handle - s['sec_info'] = 7 - s['sdbuf'] = result['sdbuf'] + print 'testing QuerySecurity' - dcerpc.samr_SetSecurity(pipe, s) + sdbuf = handle.QuerySecurity() + handle.SetSecurity(sdbuf) - dcerpc.samr_QuerySecurity(pipe, r) def test_GetDomPwInfo(pipe, handle, domain): - print 'testing samr_GetDomPwInfo' - - r = {} - r['handle'] = handle - r['name'] = {} - r['name']['name'] = domain - - dcerpc.samr_GetDomPwInfo(pipe, r) + print 'testing GetDomPwInfo' - r['name']['name'] = '\\\\%s' % domain - - dcerpc.samr_GetDomPwInfo(pipe, r) - - r['name']['name'] = '\\\\__NONAME__' - - dcerpc.samr_GetDomPwInfo(pipe, r) - - r['name']['name'] = '\\\\Builtin' - - dcerpc.samr_GetDomPwInfo(pipe, r) + handle.GetDomPwInfo(domain) + handle.GetDomPwInfo('__NONAME__') + handle.GetDomPwInfo('Builtin') def test_RemoveMemberFromForeignDomain(pipe, domain_handle): - print 'test samr_RemoveMemberFromForeignDomain' + print 'test RemoveMemberFromForeignDomain' - r = {} - r['domain_handle'] = domain_handle - r['sid'] = {} - r['sid']['sid_rev_num'] = 1 - r['sid']['id_auth'] = [1, 2, 3, 4, 5, 6] - r['sid']['num_auths'] = 4 - r['sid']['sub_auths'] = [7, 8, 9, 10] + sid = samr.string_to_sid('S-1-5-32-12-34-56-78-9') - dcerpc.samr_RemoveMemberFromForeignDomain(pipe, r) + domain_handle.RemoveMemberFromForeignDomain(sid) def test_CreateUser2(pipe, domain_handle): - print 'test samr_CreateUser2' + print 'test CreateUser2' - r = {} - r['domain_handle'] = domain_handle - r['access_mask'] = 0x02000000 - r['account_name'] = {} - r['account_name']['name'] = 'samrtorturemach$' - r['acct_flags'] = 0x0080 # WSTRUST + username = 'samrtorturemach$' try: - dcerpc.samr_CreateUser2(pipe, r) + return domain_handle.CreateUser2(username, 0x0080) # WSTRUST except dcerpc.NTSTATUS, arg: - if arg[0] == dcerpc.NT_STATUS_ACCESS_DENIED: - return - elif arg[0] == dcerpc.NT_STATUS_USER_EXISTS: - test_DeleteUser_byname(pipe, domain_handle, 'samrtorturemach$') - result = dcerpc.samr_CreateUser(pipe, r) - else: - raise dcerpc.NTSTATUS(arg) + if arg[0] == 0x0c0000063L: + domain_handle.OpenUser(username).DeleteUser() + return domain_handle.CreateUser2(username) + raise def test_LookupName(pipe, domain_handle, name): @@ -749,16 +644,9 @@ def test_Close(pipe, handle): def test_OpenDomain(pipe, connect_handle, domain_sid): - print 'testing samr_OpenDomain' - - r = {} - r['connect_handle'] = connect_handle - r['access_mask'] = 0x02000000 - r['sid'] = domain_sid - - result = dcerpc.samr_OpenDomain(pipe, r) + print 'testing OpenDomain' - domain_handle = result['domain_handle'] + domain_handle = connect_handle.OpenDomain(domain_sid) test_QuerySecurity(pipe, domain_handle) @@ -766,6 +654,8 @@ def test_OpenDomain(pipe, connect_handle, domain_sid): test_CreateUser2(pipe, domain_handle) + sys.exit(0) + user_handle = test_CreateUser(pipe, domain_handle) alias_handle = test_CreateAlias(pipe, domain_handle, domain_sid) @@ -811,81 +701,34 @@ def test_OpenDomain(pipe, connect_handle, domain_sid): def test_LookupDomain(pipe, connect_handle, domain): - print 'testing samr_LookupDomain' - - r = {} - r['connect_handle'] = connect_handle - r['domain'] = {} - r['domain']['name'] = None - - try: - dcerpc.samr_LookupDomain(pipe, r) - except dcerpc.NTSTATUS, arg: - if arg[0] != dcerpc.NT_STATUS_INVALID_PARAMETER: - raise dcerpc.NTSTATUS(arg) + print 'testing LookupDomain' - r['domain']['name'] = 'xxNODOMAINxx' + sid = connect_handle.LookupDomain(domain) try: - dcerpc.samr_LookupDomain(pipe, r) + connect_handle.LookupDomain('xxNODOMAINxx') except dcerpc.NTSTATUS, arg: - if arg[0] != dcerpc.NT_STATUS_NO_SUCH_DOMAIN: - raise dcerpc.NTSTATUS(arg) - - r['domain']['name'] = domain - - result = dcerpc.samr_LookupDomain(pipe, r) - + if arg[0] != 0xC00000DFL: # NT_STATUS_NO_SUCH_DOMAIN + raise + test_GetDomPwInfo(pipe, connect_handle, domain) - - test_OpenDomain(pipe, connect_handle, result['sid']) + test_OpenDomain(pipe, connect_handle, sid) def test_EnumDomains(pipe, connect_handle): - print 'testing samr_EnumDomains' - - r = {} - r['connect_handle'] = connect_handle - r['resume_handle'] = 0 - r['buf_size'] = -1 + print 'testing EnumDomains' - result = dcerpc.samr_EnumDomains(pipe, r) - - for domain in result['sam']['entries']: - test_LookupDomain(pipe, connect_handle, domain['name']['name']) - -def test_LongInt(pipe): - - # Check that we can use long values for shorter width types - - r = {} - r['system_name'] = 0L; - r['access_mask'] = 0x02000000L - - result = dcerpc.samr_Connect(pipe, r) - - # Test that we can parse a SID that contains a sub_auth that can't - # be held in a python int. - - r = {} - r['connect_handle'] = result['connect_handle'] - r['access_mask'] = 0x02000000 - r['sid'] = {'sid_rev_num': 1, 'id_auth': [0, 0, 0, 0, 0, 5], - 'num_auths': 4, - 'sub_auths': [21, 737922324, 3002806791L, 1285293260]} - - result = dcerpc.samr_OpenDomain(pipe, r) + for domain in connect_handle.EnumDomains(): + test_LookupDomain(pipe, connect_handle, domain) def runtests(binding, domain, username, password): print 'Testing SAMR pipe' pipe = dcerpc.pipe_connect(binding, - dcerpc.DCERPC_SAMR_UUID, dcerpc.DCERPC_SAMR_VERSION, + dcerpc.DCERPC_SAMR_UUID, int(dcerpc.DCERPC_SAMR_VERSION), domain, username, password) - test_LongInt(pipe) - handle = test_Connect(pipe) test_QuerySecurity(pipe, handle) |