
    5ifF                        d dl Z d dlZd dlZd dlZd dlZd dlm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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  e j         d          Z! e j"                    Z# e j$        d	          Z%e#&                    e%           e!'                    e#           e!(                    e j)                    G d
 d          Z*dS )    N)urlparse)SocksServerVersionSocksCommsMode)HTTPRequest)SOCKS4RequestSOCKS4ReplySOCKS4CDCode)SOCKS5CommandSOCKS5AddressTypeSOCKS5Method
SOCKS5NegoSOCKS5NegoReplySOCKS5RequestSOCKS5ReplySOCKS5ReplyTypeSOCKS5PlainAuthSOCKS5PlainAuthReplySOCKS5ServerErrorReplySOCKS5AuthFailed)BaseMonitorzasysocks.proxyserverz3%(asctime)s %(name)-12s %(levelname)-8s %(message)sc                   V    e Zd Zdddg ddfdZd ZddZd Zd	 Zd
 Zd Z	d Z
d ZdS )SOCKSServerN
   i (  )SOCKS4SOCKS5HTTPc                 v    || _         || _        || _        || _        || _        || _        || _        d| _        d S )Nr   )	listen_iplisten_portssl_ctxclient_timeoutbuffer_sizesupported_protocolsmonitor_dispatch_q
session_id)selfr   r   r    r!   r"   r#   r$   s           E/home/kali/Ninja/venv/lib/python3.11/site-packages/asysocks/server.py__init__zSOCKSServer.__init__   sC    $. $$,&$ $0$.$$///    c                 4    | j         }| xj         dz  c_         |S )N   )r%   )r&   ts     r'   get_session_idzSOCKSServer.get_session_id$   s    
o!//Q//	
(r)   c                   K   fd}	 |t          j         ||| j                                                             s|                                 d {V }|dk    s|+	 |                                                                  d S |                    |           |                                 d {V                                  n                                s	                    | j                   d {V }|dk    s|+	 |                                                                  d S |                    |           |                                 d {V                                  np# t           j
        $ r, Y |                                                                  d S t          $ r*}	t                              d|d|	           Y d }	~	nd }	~	ww xY w|                                                                  d S # |                                                                  w xY w)Nc                   K   	                                  s                    |           d {V }|dk    s|2|                    |           d {V  	                                  d S |                    |           d {V                                   n#  Y                                  d S xY w                                 d S #                                  w xY w)Nr)   )is_setreadputset)readerin_qr"   datareader_astop_evts       r'   pizSOCKSServer.__proxy.<locals>.pi*   s      
oo --,,,,,,,,Tt|HHTNN
 LLNNNNN	 88D>> oo 
LLNNNNNHLLNNNNNHLLNNNNs*   AB ./B C B7 C 7C C&r)   [z&][TCPPROXY] Connection ended. Reason: )asynciocreate_taskr"   r0   getcloser3   writedrainr1   CancelledError	Exception	srvloggerdebug)
r&   r7   writer_br8   
src_modulemonitor_in_qmonitor_out_qr9   r6   es
    ` `      r'   __proxyzSOCKSServer.__proxy)   s          8\43CDDEEEoo ##%%%%%%%%Tt|$ >><<>>>>># ^^D>> oo  oo -- 011111111Tt| >><<>>>>> ^^D>> oo  
	 
 
 
	 >><<>>>>>	 
 T T T???JJJPQPQRSSSSSSSST >><<>>>>> >><<>>>>sJ   AF B F >AF H G/H <	G/ G*%H *G//H *Ic           
      `   K   	 |j         t          j        k    rot                              dt          |j                  d|j                   	 t          j	        t          |j                  |j                   d {V \  }}t                              dt          |j                  d|j        d           t                      }t          j        |_         |j        |_        |j        |_                            |                                                                            d {V  n# t          $ r}t                              dt          |j                  d|j        d|           t                      }t          j        |_         |j        |_        |j        |_                            |                                                                            d {V  Y d }~d S d }~ww xY wt          j                    }d }	d }
d }d } j        |                    d          \  }}                    d          \  }}t)          ||||d                                           }|j        }	|j        }
|j        }|j        } j                            |           d {V  t          j                             ||d|	|
                    }t          j                             ||d||                    }|                                 d {V  t                              d	t          |j                  d|j                   |                                 |                                 d S |j         t          j        k    r fd
}	 tA          j         t@          j!        t@          j"                  }|#                    t          |j                  df           |$                    d           |%                                \  }}t                      }t          j        |_         ||_        tM          j'        |          |_                            |                                                                            d {V  t          j(        ||d           d {V  d S # t          $ r}t                      }t          j        |_         |j        |_        |j        |_                            |                                                                            d {V  Y d }~d S d }~ww xY wt          d|j         z            # t          $ r5}dd l)}|*                                 tW          d|z             Y d }~d S d }~ww xY w)Nz%[SOCKS4] Client wants to connect to: :z$[SOCKS4] Sucsessfully connected to:  Starting TCP proxyz[SOCKS4] Could not connect to: 	 Reason: peernamer   z[SOCKS4] Connection ended c                   K   	 |                     d          \  }}t                      }t          j        |_        ||_        t          j        |          |_        	                    |
                                                                            d {V  t          j                    }t          j        
                    	||d                    }t          j        
                    | |d                    }|                                 d {V  t#          d           |                                 |                                 d S # t&          $ r}t#          d|z             Y d }~d S d }~ww xY w)NrO   r   zConnection terminatedz__handle_remote %s)get_extra_infor   r	   REP_GRANTEDCDDSTPORT	ipaddressIPv4AddressDSTIPr?   to_bytesr@   r;   Eventr<   _SOCKSServer__proxywaitprintcancelrB   
dst_reader
dst_writerrem_iprem_portreplyr8   task_1task_2rI   r4   r&   writers            r'   __handle_remotez2SOCKSServer.handle_socks4.<locals>.__handle_remote   sm     &#22:>>fhmme)ehem)&11ekll5>>##$$$LLNNh"4<<
Hh#W#WXXf"4<<
FHh#W#WXXfMMOO#$$$mmooommooooo & & & 1$%%%%%%%%%&s   EE 
E>!E99E>r   r+   sockbacklogzUnknown client request! %szhandle_socks4 %s),rS   r	   REQ_CONNECTrC   rD   strrW   rT   r;   open_connectionr   rR   r?   rX   r@   rB   
REP_FAILEDrY   r$   rQ   r   r-   c2d_inc2d_outd2c_ind2c_outr2   r<   rZ   r[   r]   REQ_BINDsocketAF_INETSOCK_STREAMbindlistengetsocknamerU   rV   start_server	traceback	print_excr\   )r&   init_cmdr4   rf   r_   r`   rc   rI   r8   ro   rp   rq   rr   ra   rb   	client_ipclient_portmonitorrd   re   _SOCKSServer__handle_remoteserversocketserversocket_ipserversocket_portr{   s   ` ``                     r'   handle_socks4zSOCKSServer.handle_socks4S   s     _!k\---OOOCDWDWDWDWYaYiYijkkk$+$;C<O<OQYQa$b$bbbbbbbZ ___WZ[c[iWjWjWjWjltl|l|l|}~~~]]U(UX%U]>U[\\%..""###<<>>!    ___#hnJ]J]J]J]_g_o_o_oqrqrsttt]]U'UX%U]>U[\\%..""###<<>>VVVVV$ }HFGFG*"11*==VX$33J??Y9k68XtObObOdOdeeWnVWnVW"&&w///////// fj(HV\^e!f!fggF j&(HV\^e!f!fggF
--//OOOX^9L9L9L9LhN^N^_```
MMOOO
MMOOO
F|,,,& & & & & & &*M&.&2DEE\HN++Q/000*6*B*B*D*D'_']]U(UX&U](99U[\\%..""###<<>>laPPPPPPPPPPPP   ]]U'UX%U]>U[\\%..""###<<>>VVVVV 08;>
?
??	 ! ! !	a	         !sq   AU. 5D; 
B1U. ;
HB2G=7U. =HFU. U. *DS 
UA8U	U. UU. .
V-8*V((V-c           
      &   K   	 t                               dd                    d |j        D                       z             t          j        |j        vrat          j        t          j                  }	                    |
                                                                            d {V  d S t          j        t          j                  }	                    |
                                                                            d {V  t          j        t          j                   j                   d {V }|j        t$          j        k    rt                               dt)          |j                  d|j                   	 t          j        t)          |j                  |j                   d {V \  }}t                               dt)          |j                  d|j        d           t1          j        t2          j        |j        |j                  }	                    |
                                                                            d {V  n# t6          $ r}t                               d	t)          |j                  d|j        d
|           t1          j        t2          j        |j        |j                  }	                    |
                                                                            d {V  Y d }~d S d }~ww xY wt          j                    }	d }
d }d }d } j        |                    d          \  }}                    d          \  }}tA          ||||d !                                          }|j"        tF          j$        k    r'|%                    t)          |j                              j        &                    |           d {V  |j'        }
|j(        }|j)        }|j*        }t          j+         ,                    ||	d|
|                    }t          j+         ,                    ||	d||                    }|	-                                 d {V  t                               dt)          |j                  d|j                   |.                                 |.                                 d S |j        t$          j/        k    r t                               dt)          |j                  d|j                    fd}	 |j"        tF          j0        k    rXtc          j1        tb          j2        tb          j3                  }|4                    t)          |j                  |j        f           n|j"        tF          j5        k    rXtc          j1        tb          j6        tb          j3                  }|4                    t)          |j                  |j        f           nl|j"        tF          j$        k    rWtc          j1        tb          j2        tb          j3                  }|4                    t)          |j                  |j        f           |7                    d           |8                                \  }}t1          j        t2          j        ts          j:        |          |          }	                    |
                                                                            d {V  t          j;        ||d           d {V  d S # t6          $ r}t                               dt)          |j                  d|j        d
|           t1          j        t2          j        |j        |j                  }	                    |
                                                                            d {V  Y d }~d S d }~ww xY w|j        t$          j<        k    r)t                               d           t7          d          t7          d|j        z            # t6          $ r(}t           =                    d|z             Y d }~d S d }~ww xY w)Nz2[SOCKS5] Authentication supported by the client %s,c                     g | ]	}|j         
S  )name).0xs     r'   
<listcomp>z-SOCKSServer.handle_socks5.<locals>.<listcomp>   s    TvTvTv`aUVU[TvTvTvr)   timeoutz%[SOCKS5] Client wants to connect to: rL   z$[SOCKS5] Sucsessfully connected to: rM   z[SOCKS5] Could not connect to: rN   rO   r   z[SOCKS5] Connection ended z"[SOCKS5] Client wants to BIND to: c                   K   	 |                     d          \  }}t                              dt          |          d|d           t	          j        t          j        t          j	        |          |          }
                    |                                                                            d {V  t                              dt          |          d|           t          j                    }t          j        
                    	||d                    }t          j        
                    | |d                    }|                                 d {V  t                              dt          |          d|           |                                 |                                 d S # t&          $ r%}t                              d           Y d }~d S d }~ww xY w)	NrO   z3[SOCKS5] Client BIND server get a connection from: rL   z Notifying client...z([SOCKS5] Client BIND starting TCP proxy r   z&[SOCKS5] Client BIND connection ended z[SOCKS5] Client BIND error)rQ   rC   rD   rl   r   	constructr   	SUCCEEDEDrU   
ip_addressr?   rX   r@   r;   rY   r<   rZ   r[   r]   rB   	exceptionr^   s            r'   rg   z2SOCKSServer.handle_socks5.<locals>.__handle_remote   s     8#22:>>fhooohklrhshshshsu}u}u}~#O$=	@TU[@\@\^fggell5>>##$$$LLNNoooVV^V^_```h"4<<
Hh#W#WXXf"4<<
FHh#W#WXXfMMOOooos6{{{{T\T\]^^^mmooommooooo 8 8 867777777778s   F<G 
G2G--G2r+   rh   z#[SOCKS5] Error! Could not bind to: zJ[SOCKS5] Error! Client requested UDP Associate, but it is not implemented!z,UDP assoc requested, but is not implemented!z6Client requested something that was not understood. %sz[SOCKS5] Generic error: %s)>rC   rD   joinMETHODSr   NOAUTHr   r   NOTACCEPTABLEr?   rX   r@   r;   wait_forr   from_streamreaderr!   CMDr
   CONNECTrl   DST_ADDRDST_PORTrm   r   r   r   rB   FAILURErY   r$   rQ   r   r-   ATYPr   
DOMAINNAMEset_hostnamer2   ro   rp   rq   rr   r<   rZ   r[   r]   BINDIP_V4rt   ru   rv   rw   IP_V6AF_INET6rx   ry   rU   r   rz   UDP_ASSOCIATEr   )r&   r}   r4   rf   rc   reqr_   r`   rI   r8   ro   rp   rq   rr   ra   rb   r~   r   r   rd   re   r   r   r   r   s   ` ``                     r'   handle_socks5zSOCKSServer.handle_socks5   s     s;??G388TvTvemeuTvTvTvKwKwxyyy!111%l&@AAE
LL!!"""
,,..
F$\%8995	<<  !!!	  ? G GSWSfggg	g	g	g	g	g	g3	g&&&OOOCDUDUDUDUWZWcWcdeee$+$;C<M<Ms|$\$\\\\\\\Z ___WZ[^[gWhWhWhWhjmjvjvjvwxxx"?#<clCLYYU\\%..""###<<>>    ___#clJ[J[J[J[]`]i]i]iklklmnnn"?#:3<VVU\\%..""###<<>>VVVVV }HFGFG*"11*==VX$33J??Y9k68XtObObOdOdeeW%0003s|,,---"&&w/////////nVWnVW fj(HV\^e!f!fggF j&(HV\^e!f!fggF
--//OOOS\9J9J9J9JCLLYZZZ
MMOOO
MMOOO
F=%%%OOOS\ARARARARTWT`T`abbb8 8 8 8 8 8 8*%+++]6>63EFFlS\**CL9::::
('-
-
-]6?F4FGGlS\**CL9::::
('2
2
2]6>63EFFlS\**CL9:::*6*B*B*D*D'_'"?#<y?STc?d?dfwxxU\\%..""###<<>>laPPPPPPPPPPPP   ___cRUR^N_N_N_N_adamamamopopqrrr"?#:S\3<XXU\\%..""###<<>>VVVVV 	=...OO`aaa
B
C
CC
LswV
W
WW 
 ; ; ;3q9:::::::::;sz   B1a :Ca 5I3 B$a 3
L-=B%L("a (L--Ga 3Aa H] 
`B%`;a `Aa 
b(bbc           
      :  K   	 |j                                         dk    rt          d|j         z            |j                            d          \  }}t          |          }t                              d|d|           	 t          j	        ||           d {V \  }}t                              d|d|d           d}|
                    |           |                                 d {V  nl# t          $ r_}	t                              d|d|d	|	           d
}
|
                    |
           |                                 d {V  Y d }	~	d S d }	~	ww xY wt          j                    }d }d }d }d }| j        |                    d          \  }}|                    d          \  }}t          ||||d|                                           }|                    |           | j                            |           d {V  |j        }|j        }|j        }|j        }t          j        |                     |||d||                    }t          j        |                     |||d||                    }|                                 d {V  t                              d|d|d           |                                 |                                 d S # t          $ r(}	t                              d|	z             Y d }	~	d S d }	~	ww xY w)Nr   zUnknown request type! %srL   z*[HTTPCONNECT] Client wants to connect to: z([HTTPCONNECT] Sucsessfully connected to z. Starting tcp proxy.s   HTTP/1.1 200 OK

z#[HTTPCONNECT] Could not connect to 
. Reason:    HTTP/1.1 500 Error

rO   HTTPCONNECTz![HTTPCONNECT] Connection ended @ .[HTTP] Generic error: %s)methodupperrB   urisplitintrC   rD   r;   rm   r?   r@   rY   r$   rQ   r   r-   r   r2   ro   rp   rq   rr   r<   rZ   r[   r]   r   )r&   r}   r4   rf   hostportr_   r`   okrI   failr8   ro   rp   rq   rr   ra   rb   r~   r   r   rd   re   s                          r'   handle_http_connectzSOCKSServer.handle_http_connect,  su     39 o**
.@
A
AA ""3'':4
d))4???ddSTTT#*#:4#F#FFFFFFFJ
 OOO\`\`\`bfbfbfghhh	#B
LL
,,..    OOOdddTXTXTXZ[Z[\]]](D
LL
,,..
FFFFF moo86767
)!00<<FH#22:>>I{)[&(MSWSfSfShShiiG

!
%
%g
.
........^FoG^FoGVZ=Z`bi j jkk6Z=Z`bi j jkk6	???dddKLLL	==???	==???	6 
 9 9 91Q78888888889sE   B K( C6 #AK( 6
E AEK( EFK( (
L2LLc           	      L  K   	 t          |j                  }|j        }|j        }||dk    r!|j                                        dk    rdnd}	 t          j        ||           d {V \  }}nl# t          $ r_}	t          
                    d|d|d|	           d}
|                    |
           |                                 d {V  Y d }	~	d S d }	~	ww xY wt          j        |          }|j        |j        z   |_        d }d }| j        |                    d	          \  }}|                    d	          \  }}t'          ||||d
|                                           }|                    |           | j                            |           d {V  |j                            |                                           d {V  |j                                         d {V }n|                                }|                    |           |                                 d {V  d }t7          j        || j                   d {V \  }}|||R|j                            |                                           d {V  |j                                         d {V }n|                                }|                    |           |                                 d {V  d S # t          $ r(}	t                               d|	z             Y d }	~	d S d }	~	ww xY w)N httpP   i  z[HTTP] Could not connect to rL   r   r   rO   r   r   r   )!r   r   hostnamer   schemelowerr;   rm   rB   rC   rD   r?   r@   copydeepcopypathqueryr$   rQ   r   r-   r   r2   ro   rX   rp   r=   r   r   r!   rq   rr   r   )r&   r}   r4   rf   or   r   r_   r`   rI   r   c_cmdr6   r   ra   rb   r~   r   rc   errs                       r'   handle_http_genericzSOCKSServer.handle_http_genericb  s     491
*4
&4
ldbjj!!V++22D#*#:4#F#FFFFFFFJ


   OOOtttTTTSTSTUVVV(D
LL
,,..
FFFFF =""5v59
47
)!00<<FH#22:>>I{)[&(MSWSfSfShShiiG

!
%
%g
.
........
.

U^^--
.
........$$&&&&&&&&DD >>DD					
4!3J$J]^^^^^^^^^:5#	o
I
.

U^^--
.
........$$&&&&&&&&DD>>D	<<	 
 9 9 91Q78888888889sD   AK1 A/ .K1 /
C9ACK1 CHK1 1
L#;LL#c                 :  K   	 	 t          j        |                    d          | j                   d {V }n<# t           j        j        $ r%}t                              d           Y d }~d S d }~ww xY w|dk    rd| j        vrt          d          t          j        |                    d          | j                   d {V }t          j        |
                    d          | j                   d {V }t          j        ||z   |z             }|                     |||           d {V  d S |d	k    rd
| j        vrt          d          t          j        |                    d          | j                   d {V }t                              |dd          }	t          j        |                    |	          | j                   d {V }
t          j        ||z   |
z             }|                     |||           d {V  d S |dv r`d| j        vrt          d          t#          j        || j        |           d {V \  }}|||                     |||           d {V  d S |dv r`d| j        vrt          d          t#          j        || j        |           d {V \  }}|||                     |||           d {V  d S t          d|z            # t          $ r%}t                              d           Y d }~d S d }~ww xY w)Nr+   r   z>Client terminated the socket before socks/http proxy handshake   r   z<Client tried to use SOCKS4, but it is disabled on the server          r   z<Client tried to use SOCKS5, but it is disabled on the serverbigF)	byteordersigned)   C   cr   z@Client tried to use HTTP proxy, but it is disabled on the server)r   pre_data)   g   G   p   P   o   Oz'Unknwon protocol used by the client! %shandle_client)r;   r   readexactlyr!   
exceptionsIncompleteReadErrorrC   rD   r#   rB   	readuntilr   
from_bytesr   r   r   r   r   r   r   r   r   )r&   r4   rf   tempr   temp2restr}   nmethods
t_nmethodsmethodsrI   s               r'   r   zSOCKSServer.handle_client  s     3(!&"4"4Q"7"74CVWWWWWWWWWDD


0   OOTUUU
FFFFF goot///STTT"6#5#5a#8#8DDWXXXXXXXXXE!&"2"27";";tGZ[[[[[[[[[D'ud(:;;H


Xvv
6
66666666
Ft///STTT%f&8&8&;&;tGZ[[[[[[[[[HeeLLJ$V%7%7
%C%CtObcccccccccG$TH_w%>??H


Xvv
6
66666666
F"""T---WXXX%7$J]jnoooooooooMHc
Y

"
"8VV
<
<<<<<<<<
F444T---WXXX%7$J]jnoooooooooMHc
Y

"
"8VV
<
<<<<<<<<<<
=D
E
EE 
 ( ( ('''''''''(sT   4: K+ A3A.(K+ .A33C K+ 5CK+ A"K+ 5A"K+ K+ +
L5LLc                    K   t          j        | j        | j        | j        | j                   d {V }|                                 d {V  d S )N)ssl)r;   rz   r   r   r   r    wait_closed)r&   servers     r'   runzSOCKSServer.run  sg      %d&8$.$JZ`d`lmmmmmmmmm&r)   )NN)__name__
__module____qualname__r(   r-   rZ   r   r   r   r   r   r   r   r)   r'   r   r      s        6:R_d  }Y  }Y  }Y  pt      
( ( ( (T`! `! `!Dt; t; t;n49 49 49l59 59 59n5( 5( 5(r    r)   r   )+loggingr;   rt   r   rU   urllib.parser   r   asysocks.common.constantsr   r   asysocks.protocol.httpr   asysocks.protocol.socks4r   r   r	   asysocks.protocol.socks5r
   r   r   r   r   r   r   r   r   r   r   r   #asysocks.intercepting.monitors.baser   	getLoggerrC   StreamHandlerhandler	Formatter	formattersetFormatter
addHandlersetLevelINFOr   r   r)   r'   <module>r      s	           ! ! ! ! ! ! 



 I H H H H H H H . . . . . . M M M M M M M M M M o  o  o  o  o  o  o  o  o  o  o  o  o  o  o  o  o  o  o  o  o  o  o  o  o  o  o  o ; ; ; ; ; ;G455	
'

!
!G=? ?	   Y    	  W    	  7<      { { { { { { { { { {r)   