o
    j                     @   s   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 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mZmZ d dlmZ edddZG dd dZdS )    )SMBDCEFactory)atsvc)EPM)MAXIMUM_ALLOWED)NTStatus)logger)NULL)SMBConnection)DCERPC5Connection)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DCERPCExceptionRPC_C_AUTHN_GSS_NEGOTIATE)asynccontextmanagerNTFc                 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)ATSVCRPC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/atsvcmgr.pyatsvcrpc_from_smb   s   "r    c                   @   s   e Zd Zdd Zdd Zdd Zdd Zeddede	de	fddZ
eddede	de	fddZdddZdddZdddZdddZd	S )r   c                 C   s   d| _ tj| _d | _d | _d S )Nz\atsvc)service_pipenamer   MSRPC_UUID_ATSVCservice_uuiddcehandleselfr   r   r   __init__!   s   
zATSVCRPC.__init__c                    s   | S Nr   r&   r   r   r   
__aenter__*   s   zATSVCRPC.__aenter__c                    s   |   I d H  dS N)TN)r   )r'   exc_typeexc	tracebackr   r   r   	__aexit__-   s   zATSVCRPC.__aexit__c              
      sd   z| j rz| j  I d H  W W dS    Y W dS W d S  ty1 } z
d |fW  Y d }~S d }~ww r+   )r$   
disconnect	Exception)r'   er   r   r   r   1   s   zATSVCRPC.closeNTFr   r   r   c              
      s   z.t  }| |_|j I d H \}}|d ur||jt  jI d H \}}|d ur+||d fW S  tyE } z
d|fW  Y d }~S d }~ww )NF)r   r$   connectbindr#   r1   )r   r   r   r   service_r   r2   r   r   r   from_rpcconnection<   s   
zATSVCRPC.from_rpcconnectionc              
      sv   z#t | t jd}tj| |||dI dH \}}|dur ||dfW S  ty: } z
d|fW  Y d}~S d}~ww )z
		Creates the connection to the service using an established SMBConnection.
		This connection will use the given SMBConnection as transport layer.
		)filenamer   N)r   r   r!   r7   get_dce_rpcr1   )r   r   r   r   rpctransportr5   r   r2   r   r   r   r   R   s    
zATSVCRPC.from_smbconnectionc              
      p   z |d u rt }t| j||I d H \}}|d ur||d d fW S  ty7 } z
d |fW  Y d }~S d }~ww )NJobId)r   r   hNetrJobAddr$   r1   )r'   atinfo
servernameansr   r2   r   r   r   add_jobb      zATSVCRPC.add_jobc              
      sh   z|d u rt }t| j||I d H \}}|d ur|W dS  ty3 } z
d |fW  Y d }~S d }~ww r+   )r   r   hNetrJobDelr$   r1   )r'   jobidr?   r6   r   r2   r   r   r   del_jobn   s   zATSVCRPC.del_jobc              
      sv   z#|d u rt }t| j|I d H \}}|d ur||  |d d fW S  ty: } z
d |fW  Y d }~S d }~ww )N
JobEntries)r   r   hNetrJobEnumr$   dumpr1   )r'   r?   r@   r   r2   r   r   r   	enum_jobsz   s   zATSVCRPC.enum_jobsc              
      r;   )NppAtInfo)r   r   hNetrJobGetInfor$   r1   )r'   rD   r?   r@   r   r2   r   r   r   get_job   rB   zATSVCRPC.get_jobNTFr)   )__name__
__module____qualname__r(   r*   r/   r   staticmethodr
   boolr7   r	   r   rA   rE   rI   rL   r   r   r   r   r       s    	


r   rM   )0aiosmb.dcerpc.v5.common.connection.smbdcefactoryr   aiosmb.dcerpc.v5r   'aiosmb.dcerpc.v5.interfaces.endpointmgrr   aiosmb.dcerpc.v5.dtypesr   aiosmb.wintypes.ntstatusr   aiosmbr   r   aiosmb.connectionr	   aiosmb.dcerpc.v5.connectionr
   aiosmb.dcerpc.v5.rpcrtr   r   r   r   r   r   r   r   
contextlibr   r    r   r   r   r   r   <module>   s    (
