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   