⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 samr.py

📁 samba最新软件
💻 PY
📖 第 1 页 / 共 2 页
字号:
    def RidToSid(self, rid):        r = dcerpc.samr_RidToSid()        r.data_in.domain_handle = self.handle        r.data_in.rid = rid        call_fn(dcerpc.dcerpc_samr_RidToSid, self.pipe, r)        return sid_to_string(r.data_out.sid)    def RemoveMemberFromForeignDomain(self, sid):        r = dcerpc.samr_RemoveMemberFromForeignDomain()        r.data_in.domain_handle = self.handle        r.data_in.sid = sid        call_fn(dcerpc.dcerpc_samr_RemoveMemberFromForeignDomain, self.pipe, r)    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 CreateDomainGroup(self, domain_name, access_mask = 0x02000000):        r = dcerpc.samr_CreateDomainGroup()        r.data_in.domain_handle = self.handle        r.data_in.name = dcerpc.samr_String()        r.data_in.name.string = domain_name        r.data_in.access_mask = access_mask        call_fn(dcerpc.dcerpc_samr_CreateDomainGroup, self.pipe, r)    def GetAliasMembership(self, sids):        r = dcerpc.samr_GetAliasMembership()        r.data_in.domain_handle = self.handle        r.data_in.sids = dcerpc.lsa_SidArray()        r.data_in.sids.num_sids = len(sids)        r.data_in.sids.sids = dcerpc.new_lsa_SidPtr_array(len(sids))        for i in range(len(sids)):            s = dcerpc.lsa_SidPtr()            s.sid = string_to_sid(sids[i])            dcerpc.lsa_SidPtr_array_setitem(r.data_in.sids.sids, i, s)        call_fn(dcerpc.dcerpc_samr_GetAliasMembership, self.pipe, r)        return [r.ids[x] for x in range(r.count)]    def QueryDisplayInfo(self, level):        # TODO: Handle more data returns        r = dcerpc.samr_QueryDisplayInfo()        r.data_in.domain_handle = self.handle        r.data_in.level = level        r.data_in.start_idx = 0        r.data_in.max_entries = 1000        r.data_in.buf_size = -1        call_fn(dcerpc.dcerpc_samr_QueryDisplayInfo, self.pipe, r)        # TODO: Return a mapping of the various samr_DispInfo        # structures here.        return getattr(r.data_out.info, 'info%d' % level)        def QueryDisplayInfo2(self, level):        # TODO: Handle more data returns        r = dcerpc.samr_QueryDisplayInfo2()        r.data_in.domain_handle = self.handle        r.data_in.level = level        r.data_in.start_idx = 0        r.data_in.max_entries = 1000        r.data_in.buf_size = -1        call_fn(dcerpc.dcerpc_samr_QueryDisplayInfo2, self.pipe, r)        # TODO: Return a mapping of the various samr_DispInfo        # structures here.        return getattr(r.data_out.info, 'info%d' % level)    def QueryDisplayInfo3(self, level):        # TODO: Handle more data returns        r = dcerpc.samr_QueryDisplayInfo3()        r.data_in.domain_handle = self.handle        r.data_in.level = level        r.data_in.start_idx = 0        r.data_in.max_entries = 1000        r.data_in.buf_size = -1        call_fn(dcerpc.dcerpc_samr_QueryDisplayInfo3, self.pipe, r)        # TODO: Return a mapping of the various samr_DispInfo        # structures here.        return getattr(r.data_out.info, 'info%d' % level)    def GetBootKeyInformation(self):        r = dcerpc.samr_GetBootKeyInformation()        r.data_in.domain_handle = self.handle        call_fn(dcerpc.dcerpc_samr_GetBootKeyInformation, self.pipe, r)        return r.data_out.unknown    def SetBootKeyInformation(self):        r = dcerpc.samr_GetBootKeyInformation()        r.data_in.domain_handle = self.handle        call_fn(dcerpc.dcerpc_samr_GetBootKeyInformation, self.pipe, r)    def TestPrivateFunctionsDomain(self):        r = dcerpc.samr_TestPrivateFunctionsDomain()        r.data_in.domain_handle = self.handle        call_fn(dcerpc.dcerpc_samr_TestPrivateFunctionsDomain, self.pipe, r)class UserHandle(SamrHandle):    def DeleteUser(self):        r = dcerpc.samr_DeleteUser()        r.data_in.user_handle = self.handle                call_fn(dcerpc.dcerpc_samr_DeleteUser, self.pipe, r)        self.handle = None    def GetUserPwInfo(self):        r = dcerpc.samr_GetUserPwInfo()        r.data_in.user_handle = self.handle        call_fn(dcerpc.dcerpc_samr_GetUserPwInfo, self.pipe, r)        return r.data_out.info    def QueryUserInfo(self, level):        r = dcerpc.samr_QueryUserInfo()        r.data_in.user_handle = self.handle        r.data_in.level = level        call_fn(dcerpc.dcerpc_samr_QueryUserInfo, self.pipe, r)        return r.data_out.info    def QueryUserInfo2(self, level):        r = dcerpc.samr_QueryUserInfo2()        r.data_in.user_handle = self.handle        r.data_in.level = level        call_fn(dcerpc.dcerpc_samr_QueryUserInfo2, self.pipe, r)        return r.data_out.info    def GetGroupsForUser(self):        r = dcerpc.samr_GetGroupsForUser()        r.data_in.user_handle = self.handle        call_fn(dcerpc.dcerpc_samr_GetGroupsForUser, self.pipe, r)        rid_types = [dcerpc.samr_RidType_array_getitem(r.data_out.rids.rid, x)                     for x in range(r.data_out.rids.count)]        return [(x.rid, x.type) for x in rid_types]    def TestPrivateFunctionsUser(self):        r = dcerpc.samr_TestPrivateFunctionsUser()        r.data_in.user_handle = self.handle        call_fn(dcerpc.dcerpc_samr_TestPrivateFunctionsUser, self.pipe, r)            class GroupHandle(SamrHandle):    def QueryGroupInfo(self, level):        r = dcerpc.samr_QueryGroupInfo()        r.data_in.group_handle = self.handle        r.data_in.level = level        call_fn(dcerpc.dcerpc_samr_QueryGroupInfo, self.pipe, r)        return r.data_out.info    def SetGroupInfo(self, level, info):        r = dcerpc.samr_SetGroupInfo()        r.data_in.group_handle = self.handle        r.data_in.level = level        r.data_in.info = info        call_fn(dcerpc.dcerpc_samr_SetGroupInfo, self.pipe, r)    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)]    class AliasHandle(SamrHandle):    def DeleteDomAlias(self):        r = dcerpc.samr_DeleteDomAlias()        r.data_in.alias_handle = self.handle        call_fn(dcerpc.dcerpc_samr_DeleteDomAlias, self.pipe, r)        self.handle = None    def QueryAliasInfo(self, level = 1):        r = dcerpc.samr_QueryAliasInfo()        r.data_in.alias_handle = self.handle        r.data_in.level = level        call_fn(dcerpc.dcerpc_samr_QueryAliasInfo, self.pipe, r)        return r.data_out.info    def SetAliasInfo(self, level, info):        r = dcerpc.samr_SetAliasInfo()        r.data_in.alias_handle = self.handle        r.data_in.level = level        r.data_in.info = info        call_fn(dcerpc.dcerpc_samr_SetAliasInfo, self.pipe, r)    def AddAliasMember(self, sid):        r = dcerpc.samr_AddAliasMember()        r.data_in.alias_handle = self.handle        r.data_in.sid = string_to_sid(sid)        call_fn(dcerpc.dcerpc_samr_AddAliasMember, self.pipe, r)    def AddMultipleMembersToAlias(self, sids):        r = dcerpc.samr_AddMultipleMembersToAlias()        r.data_in.alias_handle = self.handle        r.data_in.sids = dcerpc.lsa_SidArray()        r.data_in.sids.num_sids = len(sids)        r.data_in.sids.sids = dcerpc.new_lsa_SidPtr_array(len(sids))        for i in range(len(sids)):            s = dcerpc.lsa_SidPtr()            s.sid = string_to_sid(sids[i])            dcerpc.lsa_SidPtr_array_setitem(r.data_in.sids.sids, i, s)        call_fn(dcerpc.dcerpc_samr_AddMultipleMembersToAlias, self.pipe, r)    def GetMembersInAlias(self):        r = dcerpc.samr_GetMembersInAlias()        r.data_in.alias_handle = self.handle        call_fn(dcerpc.dcerpc_samr_GetMembersInAlias, self.pipe, r)        return [            sid_to_string(                dcerpc.lsa_SidPtr_array_getitem(r.data_out.sids.sids, x).sid)            for x in range(r.data_out.sids.num_sids)]def Connect(pipe, access_mask = 0x02000000):    r = dcerpc.samr_Connect()    r.data_in.system_name = dcerpc.new_uint16_array(1)    dcerpc.uint16_array_setitem(r.data_in.system_name, 0, ord('\\'))    r.data_in.access_mask = access_mask    call_fn(dcerpc.dcerpc_samr_Connect, pipe, r)    return ConnectHandle(pipe, r.data_out.connect_handle)def Connect2(pipe, system_name = '', access_mask = 0x02000000):    """Connect to the SAMR pipe."""    r = dcerpc.samr_Connect2()    r.data_in.system_name = system_name    r.data_in.access_mask = access_mask    call_fn(dcerpc.dcerpc_samr_Connect2, pipe, r)    return ConnectHandle(pipe, r.data_out.connect_handle)def Connect3(pipe, system_name = '', access_mask = 0x02000000):    r = dcerpc.samr_Connect3()    r.data_in.system_name = system_name    r.data_in.unknown = 0    r.data_in.access_mask = access_mask    call_fn(dcerpc.dcerpc_samr_Connect3, pipe, r)    return ConnectHandle(pipe, r.data_out.connect_handle)def Connect4(pipe, system_name = '', access_mask = 0x02000000):    r = dcerpc.samr_Connect4()    r.data_in.system_name = system_name    r.data_in.unknown = 0    r.data_in.access_mask = access_mask    call_fn(dcerpc.dcerpc_samr_Connect4, pipe, r)    return ConnectHandle(pipe, r.data_out.connect_handle)def Connect5(pipe, system_name = '', access_mask = 0x02000000):    r = dcerpc.samr_Connect5()    r.data_in.system_name = system_name    r.data_in.access_mask = access_mask    r.data_in.level = 1    r.data_in.info = dcerpc.new_samr_ConnectInfo_array(1)    r.data_in.info.unknown1 = 0    r.data_in.info.unknown2 = 0    call_fn(dcerpc.dcerpc_samr_Connect5, pipe, r)    return ConnectHandle(pipe, r.data_out.connect_handle)    # AddGroupMember# DeleteDomainGroup# DeleteGroupMember# SetMemberAttributesofGroup# AddAliasMember# DeleteAliasMember# GetMembersinAlias# SetUserInfo# ChangePasswordUser# GetDisplayEnumerationIndex# RemoveMemberFromForeignDomain# GetDisplayEnumerationIndex2# RemoveMultipleMembersFromAlias# OemChangePasswordUser2# ChangePasswordUser2# SetUserInfo2# ChangePasswordUser3# SetDsrmPassword# ValidatePassword

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -