def QueryGroupMember(self): r = dcerpc.samr_QueryGroupMember() r.data_in.group_handle = self.handle call_fn(dcerpc.dcerpc_samr_QueryGroupMember, self.pipe, r) return [(dcerpc.uint32_array_getitem(r.data_out.rids.rids, x), dcerpc.uint32_array_getitem(r.data_out.rids.unknown, x)) for x in range(r.data_out.rids.count)]
def CreateUser2(self, account_name, acct_flags = 0x00000010, access_mask = 0x02000000): r = dcerpc.samr_CreateUser2() r.data_in.domain_handle = self.handle r.data_in.account_name = dcerpc.samr_String() r.data_in.account_name.string = account_name r.data_in.acct_flags = acct_flags r.data_in.access_mask = access_mask call_fn(dcerpc.dcerpc_samr_CreateUser2, self.pipe, r) return (r.data_out.user_handle, dcerpc.uint32_array_getitem(r.data_out.access_granted, 0), dcerpc.uint32_array_getitem(r.data_out.rid, 0))
def CreateUser2(self, account_name, acct_flags=0x00000010, access_mask=0x02000000): r = dcerpc.samr_CreateUser2() r.data_in.domain_handle = self.handle r.data_in.account_name = dcerpc.samr_String() r.data_in.account_name.string = account_name r.data_in.acct_flags = acct_flags r.data_in.access_mask = access_mask call_fn(dcerpc.dcerpc_samr_CreateUser2, self.pipe, r) return (r.data_out.user_handle, dcerpc.uint32_array_getitem(r.data_out.access_granted, 0), dcerpc.uint32_array_getitem(r.data_out.rid, 0))
def LookupNames(self, names): r = dcerpc.samr_LookupNames() r.data_in.domain_handle = self.handle r.data_in.num_names = len(names) r.data_in.names = dcerpc.new_samr_String_array(len(names)) for i in range(len(names)): s = dcerpc.samr_String() s.string = names[i] dcerpc.samr_String_array_setitem(r.data_in.names, i, s) call_fn(dcerpc.dcerpc_samr_LookupNames, self.pipe, r) return ([dcerpc.uint32_array_getitem(r.data_out.rids.ids, i) for i in range(r.data_out.rids.count)], [dcerpc.uint32_array_getitem(r.data_out.types.ids, i) for i in range(r.data_out.types.count)])
def LookupNames(self, names): r = dcerpc.samr_LookupNames() r.data_in.domain_handle = self.handle r.data_in.num_names = len(names) r.data_in.names = dcerpc.new_samr_String_array(len(names)) for i in range(len(names)): s = dcerpc.samr_String() s.string = names[i] dcerpc.samr_String_array_setitem(r.data_in.names, i, s) call_fn(dcerpc.dcerpc_samr_LookupNames, self.pipe, r) return ([ dcerpc.uint32_array_getitem(r.data_out.rids.ids, i) for i in range(r.data_out.rids.count) ], [ dcerpc.uint32_array_getitem(r.data_out.types.ids, i) for i in range(r.data_out.types.count) ])
def sid_to_string(sid): """Convert a Python dictionary SID to a string SID.""" result = 'S-%d' % sid.sid_rev_num result = result + '-%u' % \ (dcerpc.uint8_array_getitem(sid.id_auth, 5) + (dcerpc.uint8_array_getitem(sid.id_auth, 4) << 8) + (dcerpc.uint8_array_getitem(sid.id_auth, 3) << 16) + (dcerpc.uint8_array_getitem(sid.id_auth, 2) << 24)) for i in range(0, sid.num_auths): result = result + '-%u' % \ dcerpc.uint32_array_getitem(sid.sub_auths, i) return result