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rštdƒ‚td|	 ƒ‚|d urªt |¡|_|d ur¼|jjd ur¼t |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"     
þ