o
    Žõ±jß  ã                   @   sÖ   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ 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 eddd„ƒZG dd„ dƒZdd„ ZedkridZe  eeƒ¡ dS dS )é    N)ÚSMBDCEFactory)Úbkrp)ÚNTStatus)ÚDCERPCException)Úlogger)Ú
pprint_exc)ÚNULL)ÚRPC_C_AUTHN_LEVEL_NONEÚRPC_C_AUTHN_LEVEL_PKT_INTEGRITYÚRPC_C_AUTHN_LEVEL_PKT_PRIVACYr   ÚRPC_C_AUTHN_GSS_NEGOTIATEÚRPC_C_AUTHN_LEVEL_CONNECT)ÚasynccontextmanagerTFc                 C  sR   �t j| |||d�I d H \}}|r|‚z|V  W | ¡ I d H  d S | ¡ I d H  w )N)Ú
auth_levelÚopenÚperform_dummy)ÚSMBBKRPÚfrom_smbconnectionÚclose)Ú
connectionr   r   r   ÚinstanceÚerr© r   ú“/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/dcerpc/v5/interfaces/bkrp.pyÚbkrprpc_from_smb   s   €"r   c                   @   sV   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zdd
d„Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )r   c                 C   s   || _ d | _d S ©N)r   Údce)Úselfr   r   r   r   Ú__init__   s   
zSMBBKRP.__init__c                 Ã   s   �| S r   r   ©r   r   r   r   Ú
__aenter__   s   €zSMBBKRP.__aenter__c                 Ã   s   �|   ¡ I d H  dS ©N©TN)r   )r   Úexc_typeÚexcÚ	tracebackr   r   r   Ú	__aexit__"   s   €zSMBBKRP.__aexit__c                 Ã   s0   �| j rz| j  ¡ I d H  W d S    Y d S dS r!   )r   Ú
disconnectr   r   r   r   r   &   s   €þzSMBBKRP.closeTc                 Ã   sv   �t | jdd�}| ¡ | _| j t¡ | j ¡ I d H \}}|d ur%d|fS | j tj	¡I d H \}}|d ur9d|fS dS )Nz\protected_storage)ÚfilenameFr"   )
r   r   Úget_dce_rpcr   Úset_auth_levelr   ÚconnectÚbindr   ÚMSRPC_UUID_BKRP)r   r   ÚrpctransportÚ_r   r   r   r   r+   0   s   €
zSMBBKRP.connectc                 Ã   s@   �t  | jt jt¡I d H \}}|d urd |fS d |d ¡d fS ©Nó    Ú	ppDataOut)r   ÚhBackuprKeyr   Ú"BACKUPKEY_RETRIEVE_BACKUP_KEY_GUIDr   Újoin)r   Úrespr   r   r   r   Úretrieve_backup_key<   s
   €zSMBBKRP.retrieve_backup_keyc                 Ã   ó@   �t  | jt j|¡I d H \}}|d urd |fS d |d ¡d fS r0   )r   r3   r   ÚBACKUPKEY_BACKUP_GUIDr5   ©r   Údatar6   r   r   r   r   Úencrypt_dataC   ó
   €zSMBBKRP.encrypt_datac                 Ã   r8   r0   )r   r3   r   ÚBACKUPKEY_RESTORE_GUIDr5   r:   r   r   r   Údecrypt_dataI   r=   zSMBBKRP.decrypt_datac                 Ã   r8   r0   )r   r3   r   ÚBACKUPKEY_RESTORE_GUID_WIN2Kr5   r:   r   r   r   Údecrypt_data_2kO   r=   zSMBBKRP.decrypt_data_2kN)T)Ú__name__Ú
__module__Ú__qualname__r   r    r&   r   r+   r7   r<   r?   rA   r   r   r   r   r      s    

r   c           
   	   Ã   sð  �dd l }dd l}ddlm} ddlm} | | ¡} |  ¡ }| ¡ I d H \}}|d ur1t	|ƒ |‚t
|ƒ4 I d H š²}| ¡ I d H \}}|d ur_t	|ƒ t	| |j¡ƒ 	 W d   ƒI d H  d S | ¡ I d H \}	}|d ur„t	|ƒ t	| |j¡ƒ 	 W d   ƒI d H  d S t	|	ƒ t	dƒ | d¡I d H \}	}|d ur²t	|ƒ t	| |j¡ƒ 	 W d   ƒI d H  d S t	|	ƒ | |	¡I d H \}	}|d urÜt	|ƒ t	| |j¡ƒ 	 W d   ƒI d H  d S t	|	ƒ W d   ƒI d H  d S 1 I d H sñw   Y  d S )Nr   )ÚSMBConnectionFactory)Ú
SMBMachinez!!!!!!!!!!!!!!!!!!!!!!!s   HEELLO WORLD!)r%   ÚhashlibÚ!aiosmb.commons.connection.factoryrE   Ú!aiosmb.commons.interfaces.machinerF   Úfrom_urlÚget_connectionÚloginÚprintr   r+   Ú	format_tbÚ__traceback__r7   r<   r?   )
Úurlr%   rG   rE   rF   r   r/   r   ÚbÚresr   r   r   ÚamainV   sR   €
ûõîç
.ærS   Ú__main__z=smb2+ntlm-password://TEST\Administrator:Passw0rd!1@10.10.10.2)NTF)ÚasyncioÚosÚ0aiosmb.dcerpc.v5.common.connection.smbdcefactoryr   Úaiosmb.dcerpc.v5r   Úaiosmb.wintypes.ntstatusr   Úaiosmb.dcerpc.v5.rpcrtr   Úaiosmbr   Úaiosmb.commons.utils.extbr   Úaiosmb.dcerpc.v5.dtypesr   r	   r
   r   r   r   Ú
contextlibr   r   r   rS   rB   rP   Úrunr   r   r   r   Ú<module>   s&    
<)þ