o
    j                     @   s   d dl Z d dlmZ d dlZd dlmZ d dlmZ d dlm	Z	m
Z
 G dd de	ZG dd	 d	eZG d
d deZG dd deZG dd deZG dd deZedkr_dZeeZdS dS )    N)List)DCERPCStringBinding)UniProxyTarget)	UniTargetUniProtoc                
   @   s   e Zd ZddefddZdd Zdd	 Zd
efddZedddZ	edde
e dededefddZdd Zdd Zdd ZdS )DCERPCTargetN   connection_stringc                 C   s   || _ || _|| _|| _| jd ur)| jjj| _| jjj| _| jj }| jj }z	t	t
|}W n   |}Y tj| |||||||	|
d	 d S )N)hostnameproxiesdomaindc_ip)r	   rpcprotocolpipesmb_connectiontargetr   r   get_ip_or_hostnameget_hostname_or_ipstr	ipaddress
ip_addressr   __init__)selfr	   ipportprotocolr   r   timeoutr
   r   r   r   r    r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/dcerpc/v5/common/connection/target.pyr      s   
 zDCERPCTarget.__init__c                 C   ,   | j d ur| j j S | jd u r| jS | jS N)r   r   r   r
   r   r   r   r   r   r   !   
   

zDCERPCTarget.get_hostname_or_ipc                 C   r   r    )r   r   r   r   r
   r!   r   r   r   r   (   r"   zDCERPCTarget.get_ip_or_hostnamereturnc                 C   s&   | j d ur| j j S d| j| jf S )Nz
cifs/%s@%s)r   r   to_target_stringr
   r   r!   r   r   r   r$   6   s   
zDCERPCTarget.to_target_stringc                 C   sV   |d u rt d | j | | jj| j d}|S t d | j || | jj| j d}|S )Nr   r   r
   )DCERPCSMBTargetr   r   r   r   )r   r   r   r   r   r   from_smbconnection;   s
   "$zDCERPCTarget.from_smbconnectionr   r   r   r
   c              	   C   s|  t | tr
t| }nt | tr| }ntdt|  |d u r&|d ur&|jj}|d u r2|d ur2|jj}|d u r?|d ur?|j }|	 }|
 }	|	dkrOtd|	dkrc| }
t|||
||||d}n=|	dkrktd|	d	kr| }|r|td
d  }t||||||d}nt|||||d}n|	dkrtdtd|	 |d urt||_|d ur|jjd urt|jj|_|S )NzUnknown string binding type %sncadg_ip_udpzDCERPC UDP not implemented)r   ncacn_ip_tcp)r   r   r   r
   
ncacn_httpzDCERPC HTTP not implementedncacn_npz\pipe)r   r   r   r
   r%   ncalocalzDCERPC LOCAL not implementedzUnknown DCERPC protocol %s)
isinstancer   r   	Exceptiontyper   r   r   r   get_network_addressget_protocol_sequenceget_endpointDCERPCUDPTargetintDCERPCTCPTargetDCERPCHTTPTargetlenr&   DCERPCLocalTargetcopydeepcopyr   )sr   r   r   r   r   r
   r	   napsr   r   
named_piper   r   r   from_connection_stringC   sF   



z#DCERPCTarget.from_connection_stringc                 C   s*   d}| j D ]}|d|| j | f 7 }q|S )Nz==== DCERPCTarget ====
z%s: %s
)__dict__)r   tkr   r   r   __str__z   s   
zDCERPCTarget.__str__c                 C   sh   t t| jt| j t| j t| j t| j t| j t| j t| j	 t| j
 t| j S r    )hashr   r	   r   r   r   r   r   r   r
   r   r   r!   r   r   r   __hash__   s   zDCERPCTarget.__hash__c                 C   s   t |tsdS |  | kS )NF)r-   r   rE   )r   otherr   r   r   __eq__   s   
zDCERPCTarget.__eq__)Nr   NNNNNr    )Nr   NNNN)__name__
__module____qualname__r   r   r   r   r$   staticmethodr'   r   r   r?   rC   rE   rG   r   r   r   r   r   
   s    "6r   c                   @       e Zd ZddedefddZdS )r5   r   Nr   r   c	           	      C   *   t j| ||t|tjd|||||d d S )Nr)   r   r   r
   r   r   )r   r   r4   r   
CLIENT_TCP	r   r	   r   r   r   r   r   r   r
   r   r   r   r         
zDCERPCTCPTarget.__init__r   NNNNrH   rI   rJ   r   r   r   r   r   r   r5          r5   c                   @   rL   )r3   r   Nr   r   c	           	      C   rM   )Nr(   rN   )r   r   r4   r   
CLIENT_UDPrP   r   r   r   r      rQ   zDCERPCUDPTarget.__init__rR   rS   r   r   r   r   r3      rT   r3   c                   @   s   e Zd ZdddZdS )r&   Nr   c                 C   s6   t j| ||d tjd|jj|||jj|jj||d d S )Nr+   )r   r   r
   r   r   r   r   )r   r   r   rO   r   r   r   r   )r   r	   r   r   r   r   r
   r   r   r   r      s   
zDCERPCSMBTarget.__init__)NNr   NrH   rI   rJ   r   r   r   r   r   r&          r&   c                   @      e Zd ZdddZdS )r6   r   Nc	           	      C   s:   t j| |||tjd|||||d | | t|| _d S )Nr*   rN   )r   r   r   rO   set_hostname_or_ipr4   r   )	r   r	   r   r   r   r   r   r   r
   r   r   r   r      s   
zDCERPCHTTPTarget.__init__rR   rV   r   r   r   r   r6      rW   r6   c                   @   rX   )r8   r   Nc                 C   s   t  r    )	NotImplementedErrorr   r   DCERPCTargetTypeLOCALrY   r4   r   r   )r   r	   r   r   r   r
   r   r   r   r      s   zDCERPCLocalTarget.__init__)r   NrV   r   r   r   r   r8      rW   r8   __main__ )r9   typingr   r   3aiosmb.dcerpc.v5.common.connection.connectionstringr   asysocks.unicomm.common.proxyr   asysocks.unicomm.common.targetr   r   r   r5   r3   r&   r6   r8   rH   r;   r?   r   r   r   r   r   <module>   s"     
