o
    j9
                     @   s6   d dl mZmZmZmZ d dlmZ G dd dZdS )    )	transportlsatsamrlsad)MAXIMUM_ALLOWEDc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )EnumLocalAdminsc                 C   s   || _ d| _d| _d S )Nzncacn_np:445[\pipe\samr]zncacn_np:445[\pipe\lsarpc])_EnumLocalAdmins__smbConnection_EnumLocalAdmins__samrBinding_EnumLocalAdmins__lsaBinding)selfsmbConnection r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/impacket/examples/ntlmrelayx/utils/enum.py__init__   s   
zEnumLocalAdmins.__init__c                 C   s   t |}|| j | S N)r   DCERPCTransportFactoryset_smb_connectionr   get_dce_rpc)r   
strBindingrpcr   r   r   __getDceBinding   s   
zEnumLocalAdmins.__getDceBindingc                 C   s   |   }| |}||fS r   )#_EnumLocalAdmins__getLocalAdminSids_EnumLocalAdmins__resolveSids)r   	adminSids
adminNamesr   r   r   getLocalAdmins"   s   
zEnumLocalAdmins.getLocalAdminsc                 C   s   |  | j}|  |tj t|}|d }t||d}tj|||d d}|d }tj	||t
dd}t||d }g }|d	 d
 D ]}||d   qG|  |S )NServerHandleBuiltinDomainId)serverHandledomainIdDomainHandlei   )desiredAccessaliasIdAliasHandleMembersSids
SidPointer)_EnumLocalAdmins__getDceBindingr	   connectbindr   MSRPC_UUID_SAMRhSamrConnecthSamrLookupDomainInSamServerhSamrOpenDomainhSamrOpenAliasr   hSamrGetMembersInAliasappendformatCanonical
disconnect)r   dcerespr   domainHandle
memberSidsmemberr   r   r   __getLocalAdminSids'   s   
z#EnumLocalAdmins.__getLocalAdminSidsc                 C   s   |  | j}|  |tj t|ttj	B }|d }t
|||tjj}g }t|d d D ]\}}|d|d d |d  d |d  q1|  |S )	NPolicyHandleTranslatedNamesNamesz{}\{}ReferencedDomainsDomainsDomainIndexName)r(   r
   r)   r*   r   MSRPC_UUID_LSATr   hLsarOpenPolicy2r   POLICY_LOOKUP_NAMEShLsarLookupSidsLSAP_LOOKUP_LEVELLsapLookupWksta	enumerater1   formatr3   )r   sidsr4   r5   policyHandlenamesnitemr   r   r   __resolveSids9   s   ,zEnumLocalAdmins.__resolveSidsN)__name__
__module____qualname__r   r(   r   r   r   r   r   r   r   r      s    r   N)impacket.dcerpc.v5r   r   r   r   impacket.dcerpc.v5.dtypesr   r   r   r   r   r   <module>   s   