
    hg
                        d dl Z d dlZd dlZd dlmZ d dlmZ  G d de          Z ej	        dd          Z
 ej	        d	d
d          Z ej	        d	dd          Z ej	        d d	d
dddddd	  	        Z ej	        d d	d
d          Z ej	        d	          Z G d d          Z G d d          Z G d d          Z G d d          Z G d d          ZdS )    N)bidi)checkc                        e Zd Z fdZ xZS )
SocksErrorc                 X    t                                          |           || _        d S N)super__init__code)selfr   message	__class__s      d/var/www/fb-scrape/myenv/lib/python3.11/site-packages/seleniumwire/thirdparty/mitmproxy/net/socks.pyr
   zSocksError.__init__
   s&    !!!			    )__name__
__module____qualname__r
   __classcell__)r   s   @r   r   r   	   s8                r   r         )SOCKS4SOCKS5         )CONNECTBINDUDP_ASSOCIATE)IPV4_ADDRESS
DOMAINNAMEIPV6_ADDRESS         )		SUCCEEDEDGENERAL_SOCKS_SERVER_FAILURE!CONNECTION_NOT_ALLOWED_BY_RULESETNETWORK_UNREACHABLEHOST_UNREACHABLECONNECTION_REFUSEDTTL_EXPIREDCOMMAND_NOT_SUPPORTEDADDRESS_TYPE_NOT_SUPPORTED   )NO_AUTHENTICATION_REQUIREDGSSAPIUSERNAME_PASSWORDNO_ACCEPTABLE_METHODS)DEFAULTc                   <    e Zd ZdZd Zd Zedd            Zd ZdS )	ClientGreeting)vermethodsc                 z    || _         t          j        d          | _        | j                            |           d S )NB)r6   arrayr7   extend)r   r6   r7   s      r   r
   zClientGreeting.__init__;   s6    {3''G$$$$$r   c                     | j         t          j        k    rg| j         t          d          k    r(t	          | j                  t          d          k    rd}nd}t          t          j        |d| j         z  z             d S )NGEz9Probably not a SOCKS request but a regular HTTP request.  .Invalid SOCKS version. Expected 0x05, got 0x%x)	r6   VERSIONr   ordlenr7   r   REPr&   r   guesss     r   assert_socks5zClientGreeting.assert_socks5@   sz    8w~%%x3s88##DL(9(9SXX(E(ES0H48SS   &%r   Fc                     t          j        d|                    d                    \  }} | |g           }|r|                                 |j                            |                    |                     |S )zu
        :param fail_early: If true, a SocksError will be raised if the first byte does not indicate socks5.
        !BBr   )structunpack	safe_readrG   r7   	frombytes)clsf
fail_earlyr6   nmethodsclient_greetings         r   	from_filezClientGreeting.from_fileL   su    
 eQ[[^^<<X#c2,, 	,))+++))!++h*?*?@@@r   c           	          |                     t          j        d| j        t	          | j                                       |                     | j                                                   d S NrI   )writerJ   packr6   rC   r7   tobytesr   rO   s     r   to_filezClientGreeting.to_fileX   sT    	E48S->->??@@@	$$&&'''''r   N)F	r   r   r   	__slots__r
   rG   classmethodrS   rZ    r   r   r5   r5   8   sf        "I% % %

 
 
 	 	 	 [	( ( ( ( (r   r5   c                   :    e Zd ZdZd Zd Zed             Zd ZdS )ServerGreetingr6   methodc                 "    || _         || _        d S r   ra   )r   r6   rb   s      r   r
   zServerGreeting.__init__`       r   c                     | j         t          j        k    rZ| j         t          d          k    r| j        t          d          k    rd}nd}t          t          j        |d| j         z  z             d S )NHTz:Probably not a SOCKS request but a regular HTTP response. r?   r@   )r6   rA   r   rB   rb   r   rD   r&   rE   s     r   rG   zServerGreeting.assert_socks5d   sr    8w~%%x3s88##s3xx(?(?T0H48SS   &%r   c                 p    t          j        d|                    d                    \  }} | ||          S NrI   r   rJ   rK   rL   )rN   rO   r6   rb   s       r   rS   zServerGreeting.from_filep   3    mE1;;q>>::Vs3r   c                 l    |                     t          j        d| j        | j                             d S rU   )rV   rJ   rW   r6   rb   rY   s     r   rZ   zServerGreeting.to_fileu   ,    	E48T[99:::::r   Nr[   r^   r   r   r`   r`   ]   sa        !I  
 
 
     [ ; ; ; ; ;r   r`   c                   :    e Zd ZdZd Zd Zed             Zd ZdS )UsernamePasswordAuthr6   usernamepasswordc                 0    || _         || _        || _        d S r   rp   )r   r6   rq   rr   s       r   r
   zUsernamePasswordAuth.__init__|   s      r   c                 `    | j         t          j        k    rt          dd| j         z            d S Nr   z-Invalid auth version. Expected 0x01, got 0x%xr6   USERNAME_PASSWORD_VERSIONr3   r   r   s    r   assert_authver1z$UsernamePasswordAuth.assert_authver1   :    80888?$(J   98r   c                 b   t          j        d|                    d                    \  }}|                    |          }t          j        d|                    d                    \  }|                    |          } | ||                                |                                          S )NrI   r   !Br   )rJ   rK   rL   decode)rN   rO   r6   ulenrq   plenrr   s          r   rS   zUsernamePasswordAuth.from_file   s    M%Q88	T;;t$$dAKKNN33;;t$$s3))8??+<+<===r   c           	         |                     t          j        d| j        t	          | j                                       |                     | j                                                   |                     t          j        dt	          | j                                       |                     | j                                                   d S )NrI   r|   )rV   rJ   rW   r6   rC   rq   encoderr   rY   s     r   rZ   zUsernamePasswordAuth.to_file   s    	E48S-?-?@@AAA	$$&&'''	D#dm"4"455666	$$&&'''''r   N	r   r   r   r\   r
   ry   r]   rS   rZ   r^   r   r   ro   ro   y   sa        /I! ! !
   > > [>( ( ( ( (r   ro   c                   :    e Zd ZdZd Zd Zed             Zd ZdS )UsernamePasswordAuthResponser6   statusc                 "    || _         || _        d S r   r   )r   r6   r   s      r   r
   z%UsernamePasswordAuthResponse.__init__   rd   r   c                 `    | j         t          j        k    rt          dd| j         z            d S ru   rv   rx   s    r   ry   z,UsernamePasswordAuthResponse.assert_authver1   rz   r   c                 p    t          j        d|                    d                    \  }} | ||          S ri   rj   )rN   rO   r6   r   s       r   rS   z&UsernamePasswordAuthResponse.from_file   rk   r   c                 l    |                     t          j        d| j        | j                             d S rU   )rV   rJ   rW   r6   r   rY   s     r   rZ   z$UsernamePasswordAuthResponse.to_file   rm   r   Nr   r^   r   r   r   r      sa        !I         [ ; ; ; ; ;r   r   c                   :    e Zd ZdZd Zd Zed             Zd ZdS )Messager6   msgatypaddrc                 >    || _         || _        || _        || _        d S r   r   )r   r6   r   r   r   s        r   r
   zMessage.__init__   s"    				r   c                 t    | j         t          j        k    r"t          t          j        d| j         z            d S )Nr@   )r6   rA   r   r   rD   r&   rx   s    r   rG   zMessage.assert_socks5   s;    8w~%%0@48K   &%r   c                 t   t          j        d|                    d                    \  }}}}|dk    rt          t          j        d|z            |t          j        k    r-t          j	        |                    d                    j
        }n|t          j        k    r-t          j        |                    d                    j
        }n|t          j        k    rt          j        d|                    d                    \  }|                    |          }t          j        |          st          t          j        d|z            |                    d	          }nt          t          j        d
|z            t          j        d|                    d                    \  }||f}	 | ||||	          S )N!BBBBr   r   z(Socks Request: Invalid reserved byte: %s   r|   r   zInvalid hostname: %sidnazSocks Request: Unknown ATYP: %s!Hr   )rJ   rK   rL   r   rD   r&   ATYPr   	ipaddressIPv4Address
compressedr!   IPv6Addressr    r   is_valid_hostr}   r-   )
rN   rO   r6   r   rsvr   hostlengthportr   s
             r   rS   zMessage.from_file   s   $mGQ[[^^DDS#t$;;0:S@   4$$$(Q88CDDT&&&(R99DDDT_$$mD!++a..99GF;;v&&D&t,, b !ACY\`C`aaa;;v&&DDS;>EG G G dAKKNN33d|s3T4(((r   c           	      j   |                     t          j        d| j        | j        d| j                             | j        t          j        k    r8|                     t          j	        | j
        d                   j                   n| j        t          j        k    r8|                     t          j        | j
        d                   j                   n| j        t          j        k    rt|                     t          j        dt          | j
        d                                        |                     | j
        d                             d                     n"t#          t$          j        d| j        z            |                     t          j        d| j
        d                              d S )Nr   r   r|   r   zUnknown ATYP: %sr   r   )rV   rJ   rW   r6   r   r   r   r   r   r   r   packedr!   r   r    rC   r   r   rD   r-   rY   s     r   rZ   zMessage.to_file   sP   	GTXtxtyIIJJJ9)))GGI)$)A,77>????Y$+++GGI)$)A,77>????Y$/))GGFKc$)A,&7&788999GGDIaL''//0000."TY.   	
D$)A,//00000r   Nr[   r^   r   r   r   r      sa        .I     ) ) [)41 1 1 1 1r   r   )r:   r   rJ   +seleniumwire.thirdparty.mitmproxy.coretypesr   %seleniumwire.thirdparty.mitmproxy.netr   	Exceptionr   BiDirA   CMDr   rD   METHODrw   r5   r`   ro   r   r   r^   r   r   <module>r      s#         < < < < < < 7 7 7 7 7 7        $)  
 di	   ty   di!%&*#
 
 
 
#	
 
 
 &DI   
"( "( "( "( "( "( "( "(J; ; ; ; ; ; ; ;8( ( ( ( ( ( ( (<; ; ; ; ; ; ; ;.91 91 91 91 91 91 91 91 91 91r   