o
    Žõ±jù  ã                
   @   s  d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZmZ d dlmZmZ d dlmZmZmZmZ G dd	„ d	ejƒZejejejejejejejejejejiZejej ej!d
œZ"e
e
dœZ#G dd„ deƒZ$dd„ Z%e&dkr‚e%ƒ  dS dS )é    N)ÚurlparseÚparse_qs)ÚList)Ústr_oneÚint_oneÚbool_one)Ú	UniTargetÚUniProto)ÚUniProxyProtoÚUniProxyTarget)ÚNegotiateDialectsÚSMB2_NEGOTIATE_DIALTECTS_2ÚSMB2_NEGOTIATE_DIALTECTS_3ÚSMB2_NEGOTIATE_DIALTECTSc                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
d	S )
ÚSMBConnectionDialectÚSMBÚSMB2ÚSMB3ÚSMB202ÚSMB210ÚSMB300ÚSMB302ÚSMB311N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   © r   r   ú“/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/commons/connection/target.pyr      s    r   )ÚTCPÚUDPÚQUIC)ÚfragmentÚcompressc                   @   sÊ   e Zd ZdZdddddddejddddfdededed	ed
ededee	 dededede
defdd„Zdd„ Zdeddfdd„Zdefdd„Zd&dd„Zed&dd„ƒZed d!„ ƒZed"d#„ ƒZd$d%„ ZdS )'Ú	SMBTargetz
	Né½  é   FÚipÚportÚhostnameÚtimeoutÚdc_ipÚdomainÚproxiesÚprotocolÚdnsÚpathÚcompressionr!   c                 C   s`   t j| |||||||||	d�
 |
| _t| _|| _|| _d| _d| _d| _	d| _
d | _|  ¡  d S )N)r(   r,   r+   r*   r.   é   r%   )r   Ú__init__r/   r   Úpreferred_dialectsr!   r0   ÚMaxTransactSizeÚMaxReadSizeÚMaxWriteSizeÚPendingTimeoutÚPendingMaxRenewalÚcalc_fragment)Úselfr&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r!   r   r   r   r2   <   s   zSMBTarget.__init__c                 C   sv   | j d ur9d}| j dkrd}n| j dkrd}n| j dkrd}n| j dkr'd	}n| j d
kr.d}|| _|| _|| _d S d S )Nr1   r%   i   é   i   é   i (  é   i Ð é   i  N )r!   r4   r5   r6   )r:   Úfsr   r   r   r9   X   s    






ñzSMBTarget.calc_fragmentÚdialectÚreturnc                 C   sv   t |tƒdu rtdƒ‚|tjkrt| _d| jtj< d S |tjkr%t	| _d S |tj
kr/t| _d S t| dtjdi| _d S )NFz.dialect must be a type of SMBConnectionDialectr>   )Ú
isinstancer   Ú	Exceptionr   r   r3   r   ÚWILDCARDr   r   r   r   Úsmb_negotiate_dialect_lookup)r:   r@   r   r   r   Úupdate_dialectk   s    

ö	
øýþzSMBTarget.update_dialectc                 C   s   d| j | jf S )Nz
cifs/%s@%s)r(   r+   )r:   r   r   r   Úto_target_string}   s   zSMBTarget.to_target_stringc              
   C   sT   t |||| j| j| jt | j¡| jd�}| j|_| j	|_	| j
|_
| j|_| j|_|S )N)r&   r'   r(   r)   r*   r+   r,   r-   )r#   r)   r*   r+   ÚcopyÚdeepcopyr,   r-   r4   r5   r6   r7   r8   )r:   r&   r'   r(   Útr   r   r   Úget_copy€   s    
øzSMBTarget.get_copyc                 C   s   t dddd| d�S )Nz999.999.999.999r$   Údummyr%   )r&   r'   r(   r)   r,   )r#   )r,   r   r   r   Úcreate_dummy”   s   ûzSMBTarget.create_dummyc                 C   s  t | ƒ}|j ¡  d¡}|d  d¡}t|ƒdkr&t|d ƒ}t|d  }n	t|d ƒ}tj}|j	r6|j	}n|tjkr>d}n|tj
krFd}ntdƒ‚d }|jdvrT|j}t | ||t¡\}}	|	 d	d
¡}
|	 d¡}t|j|j	|j|j|j|j|j|j|j||
|d�}| |¡ |S )Nú+r   ú-r>   r$   i»  zPort must be provided!)ú/Ú Nr"   Fr!   )r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r!   )r   ÚschemeÚupperÚsplitÚlenr   Úsmburlconnection_param2varr	   Ú
CLIENT_TCPr'   ÚCLIENT_QUICrC   r/   r   Úfrom_urlÚsmbtarget_url_paramsÚgetr#   r&   r(   r)   r*   r+   r,   r-   r.   rF   )Úconnection_urlÚurl_eÚschemesÚconnection_tagsr@   r-   r'   r/   Ú	unitargetÚextraparamsr0   r!   Útargetr   r   r   rY   ž   sJ   



ô
zSMBTarget.from_urlc                 C   sž   d}d }|   dd¡\}}| d¡dkr| d¡\}}| d¡dkr(| d¡\}}tƒ }||_||_|  dd¡\|_}ztt 	|¡ƒ|_
W |S    ||_Y |S )Nr$   ú@r>   rP   éÿÿÿÿú:)ÚrsplitÚfindrT   r#   r'   r*   r+   ÚstrÚ	ipaddressÚ
ip_addressr&   r(   )Úsr'   ÚdcÚ_rb   Ústr   r   r   Úfrom_connection_stringÏ   s"   ýz SMBTarget.from_connection_stringc                 C   s\   d}| j D ]&}t| j | tƒr | j | D ]
}|d||f 7 }qq|d|| j | f 7 }q|S )Nz==== SMBTarget ====
z    %s: %s
z%s: %s
)Ú__dict__rB   Úlist)r:   rJ   ÚkÚxr   r   r   Ú__str__ç   s   
ÿzSMBTarget.__str__)N)r   r   r   Ú__doc__r	   rW   rh   Úintr   r   Úboolr2   r9   r   rF   rG   rK   ÚstaticmethodrM   rY   ro   rt   r   r   r   r   r#   9   s`    õÿþýüûúùø	÷
ö
õ
	
0
r#   c                  C   s8   d} t  | ¡}tt|ƒƒ d} t  | ¡}tt|ƒƒ d S )Nz+TEST/victim/ntlm/nt:AAAAAAAA@10.10.10.2:445z$TEST/victim/sspi@10.10.10.2:445/aaaa)r#   ro   Úprintrh   )rk   Úcredsr   r   r   Útestó   s   

r{   Ú__main__)'ri   ÚenumrH   Úurllib.parser   r   Útypingr   Ú%asysocks.unicomm.utils.paramprocessorr   r   r   Úasysocks.unicomm.common.targetr   r	   Úasysocks.unicomm.common.proxyr
   r   Úaiosmb.protocol.commonr   r   r   r   ÚEnumr   r   r   r   r   r   rE   rW   Ú
CLIENT_UDPrX   rV   rZ   r#   r{   r   r   r   r   r   Ú<module>   s:   	øýþ ;

ÿ