
    5i2                         d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlm	Z	m
Z
mZ d dlmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ  G d
 d          ZdS )    N)logger)SocksServerVersionSocksCommsMode)SOCKS4RequestSOCKS4ReplySOCKS4CDCode)
SOCKS5Method
SOCKS5NegoSOCKS5NegoReplySOCKS5RequestSOCKS5ReplySOCKS5ReplyTypeSOCKS5CommandSOCKS5PlainAuthSOCKS5PlainAuthReplySOCKS5ServerErrorReply)SocksTarget)SocksCredential)SocksQueueComms)SOCKSClientc                   r    e Zd Zd Zd Zej        ej        ej        gdfdZ	ddZ
ddZddZddZdd
ZdS )SocksSecurityc                 v    d | _         d | _        d | _        d | _        d | _        d | _        d | _        d | _        d S N)	server_ipserver_portserver_sslctxtimeoutverify_hostverify_portverify_sendverify_recvselfs    G/home/kali/Ninja/venv/lib/python3.11/site-packages/asysocks/security.py__init__zSocksSecurity.__init__   sF    $.$$$,$$$$    c                     d S r    r#   s    r%   socks4_noauthzSocksSecurity.socks4_noauth   s    $r'   Nc                 J  K   g }g }g }|D ]}d}d}	 t          j        d|j        z             	 t          j        t          j        | j        | j        | j                  | j	                   d{V \  }}t          j        d           nK# t          $ r>}	t          j        d           dd|	fcY d}	~	||                                 c S c S d}	~	ww xY wt          j        |g          }
t          j        d|                    d          z             |                    |
                                           t          j        |                                |           d{V  t          j        t%          j        |          |           d{V }t          j        d	|                    d          d
|j        j                   |j        |k    r|                    |           n|                    |           nd# t          $ rW}	t          j        d|j        d|	           |                    ||	f           Y d}	~	||                                 Yd}	~	ww xY w||                                 y# ||                                 w w xY w|||fS )z;
		Checks which auth methods are supported by the server
		Nz	method %ssslr   Connected to socks server!"Failed to connect to SOCKS server!6[SOCKS5] Sending negotiation command to server @ %s:%dpeername)[SOCKS5] Got negotiation reply from from ! Server choosen auth type: zFailed proto test for method z
. Reason: )r   debugnameasynciowait_foropen_connectionr   r   r   r   	Exceptioncloser
   from_methodsget_extra_infowriteto_bytesdrainr   from_streamreaderMETHODappend)r$   methodsr   	supportednotsupportederrorsmethodremote_readerremote_writerenegorep_negos               r%   socks5_authmethodsz SocksSecurity.socks5_authmethods    sn      ),& 0 0f==-
Lv{*+++*1*:~  
 + + + % % % % % %!]M \.////   \6777$M<   !  A "F8,,D
LIMLhLhisLtLttuuu(((

         
 %&}55        H LL"":....0D0DF  
 &  f   
   
LL&+++qqQRRR
MM61+HHH       ! 
L&	((s`   HABH
CC/C0HCD2HJ
I)6I$J$I))JJc           	        K   	 d}d}	 t          j        t          j        | j        | j        | j                  | j                   d{V \  }}t          j        d           nF# t          $ r9}t          j        d           d|fcY d}~||
                                 S S d}~ww xY wt          j        d           t          j        g}t          j        |          }t          j        d|                    d          z             |                    |                                           t          j        |                                |           d{V  t          j        t'          j        |          |           d{V }	t          j        d	|                    d          d
|	j        j                   |	j        t          j        k    r	 ||
                                 dS dS t/          j        ||          }
|                    |
                                           t          j        |                                |           d{V  t          j        |                    d          |           d{V }|dk    r	 ||
                                 dS dS t5          j        |          }	|	j        t:          j        k    r	 ||
                                 dS dS | j        	 ||
                                 dS dS t          j        d| j        d| j                    t          j        d|                    d          z             	 tC          j"        | j                  }n#  | j        }Y nxY w|                    tG          j        tH          j%        |tM          | j                                                                        t          j        |                                |           d{V  t          j        tO          j        |          |           d{V }|j(        t:          j        k    r%d|j(        j        f||
                                 S S t          j        d|                    d          z             | j)        	 ||
                                 dS dS |                    | j)                   t          j        |                                |           d{V  |                    d           d{V }|*                    | j+                  dk    r	 ||
                                 dS dS 	 ||
                                 dS dS # t          $ r%}d|fcY d}~||
                                 S S d}~ww xY w# ||
                                 w w xY w)z
		Tries to open connection to a remote endpoint using the socks proxy server using plaintext auth method with username and password
		Nr,   r.   r/   r0   [SOCKS5] invokedr1   r2   r3   r4   FN   r'   TN[SOCKS5] Opening channel to :8[SOCKS5] Sending connect request to SOCKS server @ %s:%dFL[SOCKS5] Server @ %s:%d successfully set up the connection to the endpoint!    ),r7   r8   r9   r   r   r   r   r   r5   r:   r;   r	   PLAINr
   r<   r=   r>   r?   r@   r   rA   rB   r6   r   	constructreadr   
from_bytesSTATUSr   	SUCCEEDEDr   r    	ipaddress
ip_addressr   r   CONNECTintr   REPr!   findr"   )r$   usernamepasswordr   rI   rJ   rK   rD   rL   rM   authrep_datatargetrepdatas                  r%   socks5_loginzSocksSecurity.socks5_login]   s     t==)0)9
n
  
 |* * * $ $ $ $ $ $ M= L-....
   
L56667NNNNNH   M
 
<"### !7

!'
*
*4	<H=KgKghrKsKsstttt}}'''		
 
 
       
 $%m44        8 
<<!!*----x/C/CE  
 o+++X   U 
#Hh
7
74t}}'''		
 
 
       
 $q        8
 #oox   u #-h778o222n   i f   c 
<<t7G7G7GIYIYZ[[[	<J]MiMijtMuMuuvvv!$"233FFFFF	  hjj   
	
 
 
       
 !-00   
 
 
 
 
 
3 
g***#',,   ) 
<^ana}a}  I  bJ  bJ  J  K  K  K
$   ! t'(((		
 
 
       
 ""4((
(
(
(
(
(
(4
ii !!R''       	 
   
'>>>>>   	   s   U< AA& %U< &
B)0B$B)U< $B))D1U< 5BU< /)U< 3U< AU< $M> =U< >	N	CU< 91U< BU< <
V+V&	V+
V. &V++V. .Wc           	      	  K   	 d}d}	 t          j        t          j        | j        | j        | j                  | j                   d{V \  }}t          j        d           nF# t          $ r9}t          j        d           d|fcY d}~||
                                 S S d}~ww xY wt          j        d           t          j        g}t          j        |          }t          j        d|                    d          z             |                    |                                           t          j        |                                |           d{V  t          j        t'          j        |          |           d{V }t          j        d	|                    d          d
|j        j                   |j        t          j        k    r	 ||
                                 dS dS | j        	 ||
                                 dS dS t          j        d| j        d| j                   t          j        d|                    d          z             	 t3          j        | j                  }n#  | j        }Y nxY w|                    t7          j        t:          j        |t?          | j                                                                       t          j        |                                |           d{V  t          j        tA          j        |          |           d{V }	|	j!        tD          j#        k    r%d|	j!        j        f||
                                 S S t          j        d|                    d          z             | j$        	 ||
                                 dS dS |                    | j$                   t          j        |                                |           d{V  |%                    d           d{V }
|
&                    | j'                  dk    r	 ||
                                 dS dS 	 ||
                                 dS dS # t          $ r%}d|fcY d}~||
                                 S S d}~ww xY w# ||
                                 w w xY w)zg
		Tries to open connection to a remote endpoint using the socks proxy server without authentication
		Nr,   r.   r/   r0   rP   r1   r2   r3   r4   rQ   rS   rT   rU   rV   FrW   rX   rY   )(r7   r8   r9   r   r   r   r   r   r5   r:   r;   r	   NOAUTHr
   r<   r=   r>   r?   r@   r   rA   rB   r6   r   r    r`   ra   r   r[   r   rb   rc   r   rd   r   r_   r!   r\   re   r"   )r$   r   rI   rJ   rK   rD   rL   rM   rj   rk   rl   s              r%   socks5_noauthzSocksSecurity.socks5_noauth   s8     `==)0)9
n
  
 |* * * $ $ $ $ $ $ M= L-....
   
L56667NNNNN`   e
 
<"###!"7

!'
*
*4	<H=KgKghrKsKsstttt}}'''		
 
 
       
 $%m44        8 
<<!!*----x/C/CE  
 o,,,p   k h   e 
<<t7G7G7GIYIYZ[[[	<J]MiMijtMuMuuvvv!$"233FFFFF	  hjj   
	
 
 
       
 !-00   
 
 
 
 
 
3 
g***#',.   + 
<^ana}a}  I  bJ  bJ  J  K  K  K
&   # t'(((		
 
 
       
 ""4((
(
(
(
(
(
(4
ii !!R''       	 
   
'>>>>>   	   s   Q> AA& %Q> &
B)0B$B)Q> $B))D1Q> 5Q> AQ> &J  ?Q>  	J	CQ> ;1Q> BQ> >
R-R(R-R0 (R--R0 0S	c                   K   	 t                      }t          j        |_        | j        |_        | j        |_        d|_        d|_        d|_        | j	        |_
        d|_        t          j        dd          |_        d|_        d|_        t#                      }||_        ||_        t)          j                    }t)          j                    }t-          ||          }t/          ||          }	|	                                 d{V \  }
}|dS t3          |t4                    r|j        t8          j        k    rd	S |
|fS # t<          $ r}d|fcY d}~S d}~ww xY w)
<
		Tests if port binding is supported by the socks server
		T
   rX   z0.0.0.0i  iP  NrS   rQ   )r   r   SOCKS5versionr   r   is_bindr   buffer_sizer   ssl_ctxendpoint_iprandomrandintendpoint_portendpoint_timeout	only_bindr   rf   rg   r7   Queuer   r   handle_queue
isinstancer   replyr   COMMAND_NOT_SUPPORTEDr:   r$   rf   rg   r   rj   
credentialin_qout_qcommsclientreserrrK   s                r%   socks5_bindzSocksSecurity.socks5_bind>  sb     "MM6&-6>n6(66>6>6&6>!6 .666!66!!:!:!:
-//4=??54''5v&&6''))))))))83	k:,-- 
yO999K
s(?	   
'>>>>>>s*   DD> *D> :D> >
EEEEc                   K   	 t                      }t          j        |_        | j        |_        | j        |_        d|_        d|_        d|_        | j	        |_
        | j        |_        | j        | j        nd|_        d|_        d|_        t!                      }||_        ||_        ||_        t)          j                    }t)          j                    }t-          ||          }t/          ||          }	|	                                 d{V \  }
}|dS t3          |t4                    r!|j        t8          j        t8          j        fv rdS |
|fS # t>          $ r}d|fcY d}~S d}~ww xY w)	rr   Frs   rX   N   TrS   rQ   ) r   r   rt   ru   r   r   rv   r   rw   r   rx   ry   r    r|   r}   	only_openr   rf   rg   r   r7   r   r   r   r   r   r   r   r   FAILURECONN_NOT_ALLOWEDr:   r   s                r%   socks5_localzSocksSecurity.socks5_localf  sy     #MM6&-6>n6(66>6>6&6>6.2.>.J$**PR6!66!!:!:!:!6
-//4=??54''5v&&6''))))))))83	k:,-- 
y_,o.NOOOK
s(?	   
'>>>>>>s*   DE 4E E 
E'E"E'"E'rY   c                   K   	 |dk    r|dz  }t                      }t          j        |_        | j        |_        | j        |_        d|_        d|_        d|_        | j	        |_
        | j        |_        | j        |_        d|_        d|_        t#                      }||_        ||_        ||_        t+          j                    }t+          j                    }t/          ||          }	t+          j                    }
t3          |	||
          }|                                 d{V \  }}|ht7          |t8                    rQ|j        t<          j        t<          j         t<          j!        t<          j"        fv rd|fS |j        t<          j#        fv rd|fS d	S dtI          d
          fS # tH          $ r}d|fcY d}~S d}~ww xY w)rr   r      Frs   rX   NT)bind_evtrS   zMax retries reached!)%r   r   rt   ru   r   r   rv   r   rw   r   rx   r   ry   r    r|   r}   r   r   rf   rg   r   r7   r   r   Eventr   r   r   r   r   r   TTL_EXPIREDCONN_REFUSEDHOST_UNREACHABLEr   ADDRESS_TYPE_NOT_SUPPORTEDr:   )r$   rf   rg   r   retriesrj   r   r   r   r   channel_open_evtr   r   r   rK   s                  r%   socks5_test_portzSocksSecurity.socks5_test_port  s     ,	AqLG]]F'.FN~F)FFNFNF'FN)F+F"FF ""J"J"J"F=??DMOOED%((E}3CDDDF ((********HC
3.// 	2O4PRaRr  uD  uU  V  
V  
VSj9CDDDCi:
	011
11	   
'>>>>>>s0   E4F& 9F& F& F& &
F>0F93F>9F>r   )NNN)NNNrY   )__name__
__module____qualname__r&   r*   r	   ro   rZ   GSSAPIrN   rm   rp   r   r   r   r)   r'   r%   r   r      s        	 	 	   0</BLDVXdXk.lx| ;) ;) ;) ;)zx x x xtd d d dN& & & &P' ' ' 'R0 0 0 0 0 0r'   r   ) r7   r`   rz   asysocksr   asysocks.common.constantsr   r   asysocks.protocol.socks4r   r   r   asysocks.protocol.socks5r	   r
   r   r   r   r   r   r   r   r   asysocks.common.targetr   asysocks.common.credentialsr   asysocks.common.commsr   asysocks.clientr   r   r)   r'   r%   <module>r      s               H H H H H H H H M M M M M M M M M M J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J . . . . . . 7 7 7 7 7 7 1 1 1 1 1 1 ' ' ' ' ' 'n n n n n n n n n nr'   