Python impacket.dcerpc.v5.samr.hSamrOpenAlias() Examples
The following are 19
code examples of impacket.dcerpc.v5.samr.hSamrOpenAlias().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
impacket.dcerpc.v5.samr
, or try the search function
.
Example #1
Source File: enum.py From CVE-2019-1040 with MIT License | 6 votes |
def __getLocalAdminSids(self): dce = self.__getDceBinding(self.__samrBinding) dce.connect() dce.bind(samr.MSRPC_UUID_SAMR) resp = samr.hSamrConnect(dce) serverHandle = resp['ServerHandle'] resp = samr.hSamrLookupDomainInSamServer(dce, serverHandle, 'Builtin') resp = samr.hSamrOpenDomain(dce, serverHandle=serverHandle, domainId=resp['DomainId']) domainHandle = resp['DomainHandle'] resp = samr.hSamrOpenAlias(dce, domainHandle, desiredAccess=MAXIMUM_ALLOWED, aliasId=544) resp = samr.hSamrGetMembersInAlias(dce, resp['AliasHandle']) memberSids = [] for member in resp['Members']['Sids']: memberSids.append(member['SidPointer'].formatCanonical()) dce.disconnect() return memberSids
Example #2
Source File: enum.py From Slackor with GNU General Public License v3.0 | 6 votes |
def __getLocalAdminSids(self): dce = self.__getDceBinding(self.__samrBinding) dce.connect() dce.bind(samr.MSRPC_UUID_SAMR) resp = samr.hSamrConnect(dce) serverHandle = resp['ServerHandle'] resp = samr.hSamrLookupDomainInSamServer(dce, serverHandle, 'Builtin') resp = samr.hSamrOpenDomain(dce, serverHandle=serverHandle, domainId=resp['DomainId']) domainHandle = resp['DomainHandle'] resp = samr.hSamrOpenAlias(dce, domainHandle, desiredAccess=MAXIMUM_ALLOWED, aliasId=544) resp = samr.hSamrGetMembersInAlias(dce, resp['AliasHandle']) memberSids = [] for member in resp['Members']['Sids']: memberSids.append(member['SidPointer'].formatCanonical()) dce.disconnect() return memberSids
Example #3
Source File: enum.py From Exchange2domain with MIT License | 6 votes |
def __getLocalAdminSids(self): dce = self.__getDceBinding(self.__samrBinding) dce.connect() dce.bind(samr.MSRPC_UUID_SAMR) resp = samr.hSamrConnect(dce) serverHandle = resp['ServerHandle'] resp = samr.hSamrLookupDomainInSamServer(dce, serverHandle, 'Builtin') resp = samr.hSamrOpenDomain(dce, serverHandle=serverHandle, domainId=resp['DomainId']) domainHandle = resp['DomainHandle'] resp = samr.hSamrOpenAlias(dce, domainHandle, desiredAccess=MAXIMUM_ALLOWED, aliasId=544) resp = samr.hSamrGetMembersInAlias(dce, resp['AliasHandle']) memberSids = [] for member in resp['Members']['Sids']: memberSids.append(member['SidPointer'].formatCanonical()) dce.disconnect() return memberSids
Example #4
Source File: test_samr.py From CVE-2017-7494 with GNU General Public License v3.0 | 5 votes |
def test_hSamrQueryInformationAlias_hSamrSetInformationAlias(self): dce, rpctransport, domainHandle = self.connect() resp4 = samr.hSamrEnumerateAliasesInDomain(dce, domainHandle) resp4.dump() resp0 = samr.hSamrOpenAlias(dce, domainHandle, aliasId = resp4['Buffer']['Buffer'][0]['RelativeId']) resp0.dump() resp = samr.hSamrQueryInformationAlias(dce, resp0['AliasHandle'], samr.ALIAS_INFORMATION_CLASS.AliasGeneralInformation) resp.dump() ################################################################################ resp = samr.hSamrQueryInformationAlias(dce, resp0['AliasHandle'], samr.ALIAS_INFORMATION_CLASS.AliasNameInformation) resp.dump() oldData = resp['Buffer']['Name']['Name'] req = samr.SAMPR_ALIAS_INFO_BUFFER() req['tag'] = samr.ALIAS_INFORMATION_CLASS.AliasNameInformation req['Name']['Name'] = 'BETUS' resp = samr.hSamrSetInformationAlias(dce, resp0['AliasHandle'], req) resp.dump() resp = samr.hSamrQueryInformationAlias(dce, resp0['AliasHandle'], samr.ALIAS_INFORMATION_CLASS.AliasNameInformation) resp.dump() self.assertTrue( 'BETUS' == resp['Buffer']['Name']['Name']) req['Name']['Name'] = oldData resp = samr.hSamrSetInformationAlias(dce, resp0['AliasHandle'], req) resp.dump()
Example #5
Source File: test_samr.py From PiBunny with MIT License | 5 votes |
def test_hSamrQueryInformationAlias_hSamrSetInformationAlias(self): dce, rpctransport, domainHandle = self.connect() resp4 = samr.hSamrEnumerateAliasesInDomain(dce, domainHandle) resp4.dump() resp0 = samr.hSamrOpenAlias(dce, domainHandle, aliasId = resp4['Buffer']['Buffer'][0]['RelativeId']) resp0.dump() resp = samr.hSamrQueryInformationAlias(dce, resp0['AliasHandle'], samr.ALIAS_INFORMATION_CLASS.AliasGeneralInformation) resp.dump() ################################################################################ resp = samr.hSamrQueryInformationAlias(dce, resp0['AliasHandle'], samr.ALIAS_INFORMATION_CLASS.AliasNameInformation) resp.dump() oldData = resp['Buffer']['Name']['Name'] req = samr.SAMPR_ALIAS_INFO_BUFFER() req['tag'] = samr.ALIAS_INFORMATION_CLASS.AliasNameInformation req['Name']['Name'] = 'BETUS' resp = samr.hSamrSetInformationAlias(dce, resp0['AliasHandle'], req) resp.dump() resp = samr.hSamrQueryInformationAlias(dce, resp0['AliasHandle'], samr.ALIAS_INFORMATION_CLASS.AliasNameInformation) resp.dump() self.assertTrue( 'BETUS' == resp['Buffer']['Name']['Name']) req['Name']['Name'] = oldData resp = samr.hSamrSetInformationAlias(dce, resp0['AliasHandle'], req) resp.dump()
Example #6
Source File: test_samr.py From PiBunny with MIT License | 5 votes |
def test_hSamrOpenAlias(self): dce, rpctransport, domainHandle = self.connect() try: resp = samr.hSamrOpenAlias(dce, domainHandle, aliasId = 25) resp.dump() except Exception, e: if str(e).find('STATUS_NO_SUCH_ALIAS') < 0: raise
Example #7
Source File: test_samr.py From Slackor with GNU General Public License v3.0 | 5 votes |
def test_hSamrQueryInformationAlias_hSamrSetInformationAlias(self): dce, rpctransport, domainHandle = self.connect() resp4 = samr.hSamrEnumerateAliasesInDomain(dce, domainHandle) resp4.dump() resp0 = samr.hSamrOpenAlias(dce, domainHandle, aliasId = resp4['Buffer']['Buffer'][0]['RelativeId']) resp0.dump() resp = samr.hSamrQueryInformationAlias(dce, resp0['AliasHandle'], samr.ALIAS_INFORMATION_CLASS.AliasGeneralInformation) resp.dump() ################################################################################ resp = samr.hSamrQueryInformationAlias(dce, resp0['AliasHandle'], samr.ALIAS_INFORMATION_CLASS.AliasNameInformation) resp.dump() oldData = resp['Buffer']['Name']['Name'] req = samr.SAMPR_ALIAS_INFO_BUFFER() req['tag'] = samr.ALIAS_INFORMATION_CLASS.AliasNameInformation req['Name']['Name'] = 'BETUS' resp = samr.hSamrSetInformationAlias(dce, resp0['AliasHandle'], req) resp.dump() resp = samr.hSamrQueryInformationAlias(dce, resp0['AliasHandle'], samr.ALIAS_INFORMATION_CLASS.AliasNameInformation) resp.dump() self.assertTrue( 'BETUS' == resp['Buffer']['Name']['Name']) req['Name']['Name'] = oldData resp = samr.hSamrSetInformationAlias(dce, resp0['AliasHandle'], req) resp.dump()
Example #8
Source File: test_samr.py From Slackor with GNU General Public License v3.0 | 5 votes |
def test_hSamrOpenAlias(self): dce, rpctransport, domainHandle = self.connect() try: resp = samr.hSamrOpenAlias(dce, domainHandle, aliasId = 25) resp.dump() except Exception as e: if str(e).find('STATUS_NO_SUCH_ALIAS') < 0: raise
Example #9
Source File: test_samr.py From cracke-dit with MIT License | 5 votes |
def test_hSamrQueryInformationAlias_hSamrSetInformationAlias(self): dce, rpctransport, domainHandle = self.connect() resp4 = samr.hSamrEnumerateAliasesInDomain(dce, domainHandle) resp4.dump() resp0 = samr.hSamrOpenAlias(dce, domainHandle, aliasId = resp4['Buffer']['Buffer'][0]['RelativeId']) resp0.dump() resp = samr.hSamrQueryInformationAlias(dce, resp0['AliasHandle'], samr.ALIAS_INFORMATION_CLASS.AliasGeneralInformation) resp.dump() ################################################################################ resp = samr.hSamrQueryInformationAlias(dce, resp0['AliasHandle'], samr.ALIAS_INFORMATION_CLASS.AliasNameInformation) resp.dump() oldData = resp['Buffer']['Name']['Name'] req = samr.SAMPR_ALIAS_INFO_BUFFER() req['tag'] = samr.ALIAS_INFORMATION_CLASS.AliasNameInformation req['Name']['Name'] = 'BETUS' resp = samr.hSamrSetInformationAlias(dce, resp0['AliasHandle'], req) resp.dump() resp = samr.hSamrQueryInformationAlias(dce, resp0['AliasHandle'], samr.ALIAS_INFORMATION_CLASS.AliasNameInformation) resp.dump() self.assertTrue( 'BETUS' == resp['Buffer']['Name']['Name']) req['Name']['Name'] = oldData resp = samr.hSamrSetInformationAlias(dce, resp0['AliasHandle'], req) resp.dump()
Example #10
Source File: test_samr.py From cracke-dit with MIT License | 5 votes |
def test_hSamrOpenAlias(self): dce, rpctransport, domainHandle = self.connect() try: resp = samr.hSamrOpenAlias(dce, domainHandle, aliasId = 25) resp.dump() except Exception, e: if str(e).find('STATUS_NO_SUCH_ALIAS') < 0: raise
Example #11
Source File: test_samr.py From CVE-2017-7494 with GNU General Public License v3.0 | 5 votes |
def test_hSamrOpenAlias(self): dce, rpctransport, domainHandle = self.connect() try: resp = samr.hSamrOpenAlias(dce, domainHandle, aliasId = 25) resp.dump() except Exception, e: if str(e).find('STATUS_NO_SUCH_ALIAS') < 0: raise
Example #12
Source File: test_samr.py From cracke-dit with MIT License | 4 votes |
def test_hSamrGetAliasMembership(self): dce, rpctransport, domainHandle = self.connect() #resp = samr.hSamrEnumerateAliasesInDomain(dce, domainHandle) #resp = samr.hSamrOpenAlias(dce, domainHandle, samr.DELETE, 1268) #resp = samr.hSamrDeleteAlias(dce, resp['AliasHandle']) request = samr.SamrCreateAliasInDomain() request['DomainHandle'] = domainHandle request['AccountName'] = 'testGroup' request['DesiredAccess'] = samr.GROUP_ALL_ACCESS | samr.DELETE #request.dump() resp = dce.request(request) aliasHandle = resp['AliasHandle'] relativeId = resp['RelativeId'] resp.dump() request = samr.SamrRidToSid() request['ObjectHandle'] = domainHandle request['Rid'] = relativeId resp3 = dce.request(request) resp3.dump() # Let's extract the SID and remove the RID from one entry sp = resp3['Sid'].formatCanonical() domainID = '-'.join(sp.split('-')[:-1]) adminSID = domainID + '-%d' % samr.DOMAIN_USER_RID_ADMIN sid = samr.RPC_SID() sid.fromCanonical(adminSID) guestSID = domainID + '-%d' % samr.DOMAIN_USER_RID_GUEST sid1 = samr.RPC_SID() sid1.fromCanonical(adminSID) sid2 = samr.RPC_SID() sid2.fromCanonical(guestSID) si = samr.PSAMPR_SID_INFORMATION() si['SidPointer'] = sid1 si2 = samr.PSAMPR_SID_INFORMATION() si2['SidPointer'] = sid2 sidsArray = samr.SAMPR_PSID_ARRAY() sidsArray['Sids'].append(si) sidsArray['Sids'].append(si2) try: resp = samr.hSamrGetAliasMembership(dce, domainHandle, sidsArray) resp.dump() except Exception, e: request = samr.SamrDeleteAlias() request['AliasHandle'] = aliasHandle resp = dce.request(request) raise
Example #13
Source File: test_samr.py From cracke-dit with MIT License | 4 votes |
def test_hSamrAddMultipleMembersToAlias_hSamrRemoveMultipleMembersFromAliass(self): dce, rpctransport, domainHandle = self.connect() #resp = samr.hSamrEnumerateAliasesInDomain(dce, domainHandle) #resp = samr.hSamrOpenAlias(dce, domainHandle, samr.DELETE, 1257) #resp = samr.hSamrDeleteAlias(dce, resp['AliasHandle']) resp = samr.hSamrCreateAliasInDomain(dce, domainHandle, 'testGroup', samr.GROUP_ALL_ACCESS | samr.DELETE) aliasHandle = resp['AliasHandle'] relativeId = resp['RelativeId'] resp.dump() request = samr.SamrRidToSid() request['ObjectHandle'] = domainHandle request['Rid'] = relativeId resp3 = dce.request(request) resp3.dump() # Let's extract the SID and remove the RID from one entry sp = resp3['Sid'].formatCanonical() domainID = '-'.join(sp.split('-')[:-1]) adminSID = domainID + '-%d' % samr.DOMAIN_USER_RID_ADMIN sid = samr.RPC_SID() sid.fromCanonical(adminSID) sid = samr.RPC_SID() sid.fromCanonical(adminSID) guestSID = domainID + '-%d' % samr.DOMAIN_USER_RID_GUEST sid1 = samr.RPC_SID() sid1.fromCanonical(adminSID) sid2 = samr.RPC_SID() sid2.fromCanonical(guestSID) si = samr.PSAMPR_SID_INFORMATION() si['SidPointer'] = sid1 si2 = samr.PSAMPR_SID_INFORMATION() si2['SidPointer'] = sid2 sidArray = samr.SAMPR_PSID_ARRAY() sidArray['Sids'].append(si) sidArray['Sids'].append(si2) resp = samr.hSamrAddMultipleMembersToAlias(dce, aliasHandle, sidArray) resp.dump() resp = samr.hSamrRemoveMultipleMembersFromAlias(dce, aliasHandle, sidArray) resp.dump() request = samr.SamrDeleteAlias() request['AliasHandle'] = aliasHandle resp = dce.request(request)
Example #14
Source File: test_samr.py From Slackor with GNU General Public License v3.0 | 4 votes |
def test_hSamrAddMultipleMembersToAlias_hSamrRemoveMultipleMembersFromAliass(self): dce, rpctransport, domainHandle = self.connect() #resp = samr.hSamrEnumerateAliasesInDomain(dce, domainHandle) #resp = samr.hSamrOpenAlias(dce, domainHandle, samr.DELETE, 1257) #resp = samr.hSamrDeleteAlias(dce, resp['AliasHandle']) resp = samr.hSamrCreateAliasInDomain(dce, domainHandle, 'testGroup', samr.GROUP_ALL_ACCESS | samr.DELETE) aliasHandle = resp['AliasHandle'] relativeId = resp['RelativeId'] resp.dump() request = samr.SamrRidToSid() request['ObjectHandle'] = domainHandle request['Rid'] = relativeId resp3 = dce.request(request) resp3.dump() # Let's extract the SID and remove the RID from one entry sp = resp3['Sid'].formatCanonical() domainID = '-'.join(sp.split('-')[:-1]) adminSID = domainID + '-%d' % samr.DOMAIN_USER_RID_ADMIN sid = samr.RPC_SID() sid.fromCanonical(adminSID) sid = samr.RPC_SID() sid.fromCanonical(adminSID) guestSID = domainID + '-%d' % samr.DOMAIN_USER_RID_GUEST sid1 = samr.RPC_SID() sid1.fromCanonical(adminSID) sid2 = samr.RPC_SID() sid2.fromCanonical(guestSID) si = samr.PSAMPR_SID_INFORMATION() si['SidPointer'] = sid1 si2 = samr.PSAMPR_SID_INFORMATION() si2['SidPointer'] = sid2 sidArray = samr.SAMPR_PSID_ARRAY() sidArray['Sids'].append(si) sidArray['Sids'].append(si2) resp = samr.hSamrAddMultipleMembersToAlias(dce, aliasHandle, sidArray) resp.dump() resp = samr.hSamrRemoveMultipleMembersFromAlias(dce, aliasHandle, sidArray) resp.dump() request = samr.SamrDeleteAlias() request['AliasHandle'] = aliasHandle dce.request(request)
Example #15
Source File: test_samr.py From Slackor with GNU General Public License v3.0 | 4 votes |
def test_hSamrGetAliasMembership(self): dce, rpctransport, domainHandle = self.connect() #resp = samr.hSamrEnumerateAliasesInDomain(dce, domainHandle) #resp = samr.hSamrOpenAlias(dce, domainHandle, samr.DELETE, 1268) #resp = samr.hSamrDeleteAlias(dce, resp['AliasHandle']) request = samr.SamrCreateAliasInDomain() request['DomainHandle'] = domainHandle request['AccountName'] = 'testGroup' request['DesiredAccess'] = samr.GROUP_ALL_ACCESS | samr.DELETE #request.dump() resp = dce.request(request) aliasHandle = resp['AliasHandle'] relativeId = resp['RelativeId'] resp.dump() request = samr.SamrRidToSid() request['ObjectHandle'] = domainHandle request['Rid'] = relativeId resp3 = dce.request(request) resp3.dump() # Let's extract the SID and remove the RID from one entry sp = resp3['Sid'].formatCanonical() domainID = '-'.join(sp.split('-')[:-1]) adminSID = domainID + '-%d' % samr.DOMAIN_USER_RID_ADMIN sid = samr.RPC_SID() sid.fromCanonical(adminSID) guestSID = domainID + '-%d' % samr.DOMAIN_USER_RID_GUEST sid1 = samr.RPC_SID() sid1.fromCanonical(adminSID) sid2 = samr.RPC_SID() sid2.fromCanonical(guestSID) si = samr.PSAMPR_SID_INFORMATION() si['SidPointer'] = sid1 si2 = samr.PSAMPR_SID_INFORMATION() si2['SidPointer'] = sid2 sidsArray = samr.SAMPR_PSID_ARRAY() sidsArray['Sids'].append(si) sidsArray['Sids'].append(si2) try: resp = samr.hSamrGetAliasMembership(dce, domainHandle, sidsArray) resp.dump() except Exception as e: request = samr.SamrDeleteAlias() request['AliasHandle'] = aliasHandle dce.request(request) raise request = samr.SamrDeleteAlias() request['AliasHandle'] = aliasHandle dce.request(request)
Example #16
Source File: test_samr.py From CVE-2017-7494 with GNU General Public License v3.0 | 4 votes |
def test_hSamrGetAliasMembership(self): dce, rpctransport, domainHandle = self.connect() #resp = samr.hSamrEnumerateAliasesInDomain(dce, domainHandle) #resp = samr.hSamrOpenAlias(dce, domainHandle, samr.DELETE, 1268) #resp = samr.hSamrDeleteAlias(dce, resp['AliasHandle']) request = samr.SamrCreateAliasInDomain() request['DomainHandle'] = domainHandle request['AccountName'] = 'testGroup' request['DesiredAccess'] = samr.GROUP_ALL_ACCESS | samr.DELETE #request.dump() resp = dce.request(request) aliasHandle = resp['AliasHandle'] relativeId = resp['RelativeId'] resp.dump() request = samr.SamrRidToSid() request['ObjectHandle'] = domainHandle request['Rid'] = relativeId resp3 = dce.request(request) resp3.dump() # Let's extract the SID and remove the RID from one entry sp = resp3['Sid'].formatCanonical() domainID = '-'.join(sp.split('-')[:-1]) adminSID = domainID + '-%d' % samr.DOMAIN_USER_RID_ADMIN sid = samr.RPC_SID() sid.fromCanonical(adminSID) guestSID = domainID + '-%d' % samr.DOMAIN_USER_RID_GUEST sid1 = samr.RPC_SID() sid1.fromCanonical(adminSID) sid2 = samr.RPC_SID() sid2.fromCanonical(guestSID) si = samr.PSAMPR_SID_INFORMATION() si['SidPointer'] = sid1 si2 = samr.PSAMPR_SID_INFORMATION() si2['SidPointer'] = sid2 sidsArray = samr.SAMPR_PSID_ARRAY() sidsArray['Sids'].append(si) sidsArray['Sids'].append(si2) try: resp = samr.hSamrGetAliasMembership(dce, domainHandle, sidsArray) resp.dump() except Exception, e: request = samr.SamrDeleteAlias() request['AliasHandle'] = aliasHandle resp = dce.request(request) raise
Example #17
Source File: test_samr.py From CVE-2017-7494 with GNU General Public License v3.0 | 4 votes |
def test_hSamrAddMultipleMembersToAlias_hSamrRemoveMultipleMembersFromAliass(self): dce, rpctransport, domainHandle = self.connect() #resp = samr.hSamrEnumerateAliasesInDomain(dce, domainHandle) #resp = samr.hSamrOpenAlias(dce, domainHandle, samr.DELETE, 1257) #resp = samr.hSamrDeleteAlias(dce, resp['AliasHandle']) resp = samr.hSamrCreateAliasInDomain(dce, domainHandle, 'testGroup', samr.GROUP_ALL_ACCESS | samr.DELETE) aliasHandle = resp['AliasHandle'] relativeId = resp['RelativeId'] resp.dump() request = samr.SamrRidToSid() request['ObjectHandle'] = domainHandle request['Rid'] = relativeId resp3 = dce.request(request) resp3.dump() # Let's extract the SID and remove the RID from one entry sp = resp3['Sid'].formatCanonical() domainID = '-'.join(sp.split('-')[:-1]) adminSID = domainID + '-%d' % samr.DOMAIN_USER_RID_ADMIN sid = samr.RPC_SID() sid.fromCanonical(adminSID) sid = samr.RPC_SID() sid.fromCanonical(adminSID) guestSID = domainID + '-%d' % samr.DOMAIN_USER_RID_GUEST sid1 = samr.RPC_SID() sid1.fromCanonical(adminSID) sid2 = samr.RPC_SID() sid2.fromCanonical(guestSID) si = samr.PSAMPR_SID_INFORMATION() si['SidPointer'] = sid1 si2 = samr.PSAMPR_SID_INFORMATION() si2['SidPointer'] = sid2 sidArray = samr.SAMPR_PSID_ARRAY() sidArray['Sids'].append(si) sidArray['Sids'].append(si2) resp = samr.hSamrAddMultipleMembersToAlias(dce, aliasHandle, sidArray) resp.dump() resp = samr.hSamrRemoveMultipleMembersFromAlias(dce, aliasHandle, sidArray) resp.dump() request = samr.SamrDeleteAlias() request['AliasHandle'] = aliasHandle resp = dce.request(request)
Example #18
Source File: test_samr.py From PiBunny with MIT License | 4 votes |
def test_hSamrAddMultipleMembersToAlias_hSamrRemoveMultipleMembersFromAliass(self): dce, rpctransport, domainHandle = self.connect() #resp = samr.hSamrEnumerateAliasesInDomain(dce, domainHandle) #resp = samr.hSamrOpenAlias(dce, domainHandle, samr.DELETE, 1257) #resp = samr.hSamrDeleteAlias(dce, resp['AliasHandle']) resp = samr.hSamrCreateAliasInDomain(dce, domainHandle, 'testGroup', samr.GROUP_ALL_ACCESS | samr.DELETE) aliasHandle = resp['AliasHandle'] relativeId = resp['RelativeId'] resp.dump() request = samr.SamrRidToSid() request['ObjectHandle'] = domainHandle request['Rid'] = relativeId resp3 = dce.request(request) resp3.dump() # Let's extract the SID and remove the RID from one entry sp = resp3['Sid'].formatCanonical() domainID = '-'.join(sp.split('-')[:-1]) adminSID = domainID + '-%d' % samr.DOMAIN_USER_RID_ADMIN sid = samr.RPC_SID() sid.fromCanonical(adminSID) sid = samr.RPC_SID() sid.fromCanonical(adminSID) guestSID = domainID + '-%d' % samr.DOMAIN_USER_RID_GUEST sid1 = samr.RPC_SID() sid1.fromCanonical(adminSID) sid2 = samr.RPC_SID() sid2.fromCanonical(guestSID) si = samr.PSAMPR_SID_INFORMATION() si['SidPointer'] = sid1 si2 = samr.PSAMPR_SID_INFORMATION() si2['SidPointer'] = sid2 sidArray = samr.SAMPR_PSID_ARRAY() sidArray['Sids'].append(si) sidArray['Sids'].append(si2) resp = samr.hSamrAddMultipleMembersToAlias(dce, aliasHandle, sidArray) resp.dump() resp = samr.hSamrRemoveMultipleMembersFromAlias(dce, aliasHandle, sidArray) resp.dump() request = samr.SamrDeleteAlias() request['AliasHandle'] = aliasHandle resp = dce.request(request)
Example #19
Source File: test_samr.py From PiBunny with MIT License | 4 votes |
def test_hSamrGetAliasMembership(self): dce, rpctransport, domainHandle = self.connect() #resp = samr.hSamrEnumerateAliasesInDomain(dce, domainHandle) #resp = samr.hSamrOpenAlias(dce, domainHandle, samr.DELETE, 1268) #resp = samr.hSamrDeleteAlias(dce, resp['AliasHandle']) request = samr.SamrCreateAliasInDomain() request['DomainHandle'] = domainHandle request['AccountName'] = 'testGroup' request['DesiredAccess'] = samr.GROUP_ALL_ACCESS | samr.DELETE #request.dump() resp = dce.request(request) aliasHandle = resp['AliasHandle'] relativeId = resp['RelativeId'] resp.dump() request = samr.SamrRidToSid() request['ObjectHandle'] = domainHandle request['Rid'] = relativeId resp3 = dce.request(request) resp3.dump() # Let's extract the SID and remove the RID from one entry sp = resp3['Sid'].formatCanonical() domainID = '-'.join(sp.split('-')[:-1]) adminSID = domainID + '-%d' % samr.DOMAIN_USER_RID_ADMIN sid = samr.RPC_SID() sid.fromCanonical(adminSID) guestSID = domainID + '-%d' % samr.DOMAIN_USER_RID_GUEST sid1 = samr.RPC_SID() sid1.fromCanonical(adminSID) sid2 = samr.RPC_SID() sid2.fromCanonical(guestSID) si = samr.PSAMPR_SID_INFORMATION() si['SidPointer'] = sid1 si2 = samr.PSAMPR_SID_INFORMATION() si2['SidPointer'] = sid2 sidsArray = samr.SAMPR_PSID_ARRAY() sidsArray['Sids'].append(si) sidsArray['Sids'].append(si2) try: resp = samr.hSamrGetAliasMembership(dce, domainHandle, sidsArray) resp.dump() except Exception, e: request = samr.SamrDeleteAlias() request['AliasHandle'] = aliasHandle resp = dce.request(request) raise