o
    Žõ±j  ã                   @   s¸   d dl mZ d dlmZmZmZmZmZmZ d dl	m
Z
mZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZ G dd„ de
ƒZdd	„ Zed
krZd dlZe eƒ ¡ dS dS )é    )Úlogger)ÚRPC_C_AUTHN_LEVEL_NONEÚRPC_C_AUTHN_LEVEL_CONNECTÚRPC_C_AUTHN_LEVEL_CALLÚRPC_C_AUTHN_LEVEL_PKTÚRPC_C_AUTHN_LEVEL_PKT_INTEGRITYÚRPC_C_AUTHN_LEVEL_PKT_PRIVACY)ÚInterfaceManagerÚInterfaceEndpoint)ÚNULL)ÚMSRPC_UUID_EFSRÚhRpcEfsRpcAddUsersToFileÚhRpcEfsRpcAddUsersToFileExÚhRpcEfsRpcDecryptFileSrvÚhRpcEfsRpcEncryptFileSrvÚ%hRpcEfsRpcDuplicateEncryptionInfoFileÚhRpcEfsRpcFileKeyInfoÚhRpcEfsRpcOpenFileRawÚhRpcEfsRpcQueryRecoveryAgentsÚhRpcEfsRpcQueryUsersOnFileÚhRpcEfsRpcRemoveUsersFromFilec                       s”   e Zd Z‡ fdd„Zedd„ ƒZedd„ ƒZdd„ Zd	d
„ Z	dd„ Z
ddd„Zdd„ Zdd„ Zddd„Zddd„Zdd„ Zdd„ Zd dd„Z‡  ZS )!ÚEFSRRPCc                    s   t ƒ  ||¡ d S ©N)ÚsuperÚ__init__)ÚselfÚ
connectionÚendpoint©Ú	__class__© ú–/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/dcerpc/v5/interfaces/efsrmgr.pyr      s   zEFSRRPC.__init__c                 C   sp   t ddddtd�t ddddtd�t ddddtd�t dddd	td�t dddd
td�t dddtd�t dddtd�gS )NÚncan_npz$df1941c5-fe89-4e79-bf10-463657acf44dz1.0z\efsrpc)ÚpipenameÚ	authlevelz$c681d488-d850-11d0-8c52-00c04fd90f7ez\lsarpcz\samrz\lsassz	\netlogonÚncacn_ip_tcp)r$   )r
   r   ©Úclsr    r    r!   Ú	endpoints   s   ùzEFSRRPC.endpointsc                 C   s
   t | |ƒS r   )r   )r   r   r    r    r!   Úcreate_instance"   s   
zEFSRRPC.create_instancec                 Ã   s   �d S r   r    r&   r    r    r!   Úcleanup&   s   €zEFSRRPC.cleanupc                 Ã   ó   �t | j|ƒI d H S r   )r   Údce©r   ÚfileNamer    r    r!   r   )   ó   €z EFSRRPC.hRpcEfsRpcAddUsersToFilec                 Ã   r+   r   )r   r,   r-   r    r    r!   r   ,   r/   z"EFSRRPC.hRpcEfsRpcAddUsersToFileExr   c                 Ã   ó   �t | j||ƒI d H S r   )r   r,   )r   r.   ÚopenFlagr    r    r!   r   /   ó   €z EFSRRPC.hRpcEfsRpcDecryptFileSrvc                 Ã   r+   r   )r   r,   r-   r    r    r!   r   2   r/   z EFSRRPC.hRpcEfsRpcEncryptFileSrvc                 Ã   r0   r   )r   r,   )r   ÚsrcFileNameÚdstFileNamer    r    r!   r   5   r2   z-EFSRRPC.hRpcEfsRpcDuplicateEncryptionInfoFilec                 Ã   r0   r   )r   r,   )r   r.   Ú	infoClassr    r    r!   r   8   r2   zEFSRRPC.hRpcEfsRpcFileKeyInfoc                 Ã   r0   r   )r   r,   )r   r.   Úflagsr    r    r!   r   ;   r2   zEFSRRPC.hRpcEfsRpcOpenFileRawc                 Ã   r+   r   )r   r,   r-   r    r    r!   r   >   r/   z%EFSRRPC.hRpcEfsRpcQueryRecoveryAgentsc                 Ã   r+   r   )r   r,   r-   r    r    r!   r   A   r/   z"EFSRRPC.hRpcEfsRpcQueryUsersOnFileNc                 Ã   s"   �t | j||d ur|ntƒI d H S r   )r   r,   r   )r   r.   ÚEncryptionCertificatesr    r    r!   r   D   s   € z%EFSRRPC.hRpcEfsRpcRemoveUsersFromFile)r   r   )Ú__name__Ú
__module__Ú__qualname__r   Úclassmethodr(   Ústaticmethodr)   r*   r   r   r   r   r   r   r   r   r   r   Ú__classcell__r    r    r   r!   r      s"    




r   c            
   
   Ã   s¼  ��z;d} d}d}d }t  ¡ D �]&}t j| ||||d�I d H \}}|d ur.tdt|ƒ ƒ qt|ƒ |4 I d H šò tdƒ | d¡I d H \}}|d urQtd| ƒ | d¡I d H \}}|d uretd| ƒ | d¡I d H \}}|d urytd| ƒ | d¡I d H \}}|d ur�td	| ƒ | d¡I d H \}}|d ur¡td
| ƒ | 	dd¡I d H \}}|d ur¶td| ƒ | 
d¡I d H \}}|d urÊtd| ƒ | d¡I d H \}}|d urÞtd| ƒ | d¡I d H \}}|d uròtd| ƒ | d¡I d H \}}|d u�rtd| ƒ | d¡I d H \}}|d u�rtd| ƒ t|ƒ W d   ƒI d H  n1 I d H �s1w   Y  qtdƒ W d S  t�y] } zt|ƒ dd l}	|	 ¡  W Y d }~d S d }~ww )Nz192.168.56.22Úhodor)r   zFailed to connect to %sé   z\\192.168.56.129\C$\almaz*hRpcEfsRpcAddUsersToFile failed Reason: %sz,hRpcEfsRpcAddUsersToFileEx failed Reason: %sz*hRpcEfsRpcDecryptFileSrv failed Reason: %sz*hRpcEfsRpcEncryptFileSrv failed Reason: %sz7hRpcEfsRpcDuplicateEncryptionInfoFile failed Reason: %sz'hRpcEfsRpcFileKeyInfo failed Reason: %sz'hRpcEfsRpcOpenFileRaw failed Reason: %sz/hRpcEfsRpcQueryRecoveryAgents failed Reason: %sz,hRpcEfsRpcQueryUsersOnFile failed Reason: %sz/hRpcEfsRpcRemoveUsersFromFile failed Reason: %sé   r   )r   r(   Úfrom_ntlm_paramsÚprintÚstrr   r   r   r   r   r   r   r   r   r   Ú	ExceptionÚ	tracebackÚ	print_exc)
ÚhostÚuserÚpasswordÚdomainr   ÚrpcÚerrÚresÚerE   r    r    r!   ÚamainG   sr   €


*Û€&€ýrO   Ú__main__N)Úaiosmbr   Úaiosmb.dcerpc.v5.rpcrtr   r   r   r   r   r   Úaiosmb.dcerpc.v5.interfacesr	   r
   Úaiosmb.dcerpc.v5.dtypesr   Úaiosmb.dcerpc.v5.efsrr   r   r   r   r   r   r   r   r   r   r   r   rO   r8   ÚasyncioÚrunr    r    r    r!   Ú<module>   s     459ý