From e34ee4fdaa4f8b6ae7167b663c2acda2654f2895 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Sun, 7 Nov 2004 01:11:11 +0000 Subject: r3590: Add some more commands to rpcclient from a patch by jbm. Add SamrQueryDomInfo, SamrQueryDomInfo2, SamrEnumDomainAliases, and SamrEnumDomainUsers. (This used to be commit 91eb405354a65bfd94bf59c21fe21f68fff7b9fd) --- source4/scripting/swig/samr.py | 59 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 5 deletions(-) (limited to 'source4/scripting/swig/samr.py') diff --git a/source4/scripting/swig/samr.py b/source4/scripting/swig/samr.py index 5fd87da3ad..d29b7f6682 100644 --- a/source4/scripting/swig/samr.py +++ b/source4/scripting/swig/samr.py @@ -73,11 +73,10 @@ def string_to_sid(string): string = string[match.end():] - print map(type, sub_auths) - return {'sid_rev_num': sid_rev_num, 'id_auth': id_auth, 'num_auths': num_auths, 'sub_auths': sub_auths} + class SamrHandle: def __init__(self, pipe, handle): @@ -92,6 +91,7 @@ class SamrHandle: dcerpc.samr_Close(self.pipe, r) + class ConnectHandle(SamrHandle): def EnumDomains(self): @@ -139,20 +139,69 @@ class ConnectHandle(SamrHandle): result = dcerpc.samr_OpenDomain(self.pipe, r) - return DomainHandle(pipe, result['domain_handle']) + return DomainHandle(self.pipe, result['domain_handle']) + class DomainHandle(SamrHandle): def QueryDomainInfo(self, level = 2): r = {} - r['domain_handle'] = self.domain_handle + r['domain_handle'] = self.handle r['level'] = level - result = dcerpc.samr_QueryDomainInfo(pipe, r) + result = dcerpc.samr_QueryDomainInfo(self.pipe, r) return result + def QueryDomainInfo2(self, level = 2): + + r = {} + r['domain_handle'] = self.handle + r['level'] = level + + result = dcerpc.samr_QueryDomainInfo2(self.pipe, r) + + return result + + def EnumDomainGroups(self): + + r = {} + r['domain_handle'] = self.handle + r['resume_handle'] = 0 + r['max_size'] = 1000 + + result = dcerpc.samr_EnumDomainGroups(self.pipe, r) + + return result + + def EnumDomainAliases(self): + + r = {} + r['domain_handle'] = self.handle + r['resume_handle'] = 0 + # acct_flags in SamrEnumerateAliasesInDomain has probably + # no meaning so use 0xffffffff like W2K + r['acct_flags'] = 0xffffffff + r['max_size'] = 1000 + + result = dcerpc.samr_EnumDomainAliases(self.pipe, r) + + return result + + def EnumDomainUsers(self, user_account_flags = 16): + + r = {} + r['domain_handle'] = self.handle + r['resume_handle'] = 0 + r['acct_flags'] = user_account_flags + r['max_size'] = 1000 + + result = dcerpc.samr_EnumDomainUsers(self.pipe, r) + + return result + + def Connect(pipe, system_name = None, access_mask = 0x02000000): """Connect to the SAMR pipe.""" -- cgit