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re%  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:   	 ;

