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rt	| t	||j 	 W d   I d H  d S t	|	 t	d |dI d H \}	}|d urt	| t	||j 	 W d   I d H  d S t	|	 ||	I d H \}	}|d urt	| t	||j 	 W d   I d H  d S t	|	 W d   I d H  d S 1 I d H sw   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os0aiosmb.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&    
<)