
    @OOf                        d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d d	lm
Z
 d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ 	 d+dej(                  fdZ	 d+de	j,                  fdZ	 d,dej0                  fdZddddddddej4                  dz  dej6                  dz  dej8                  dz  deej8                  z  deej<                  z  dedej>                  fdZ dddddddddej4                  dz  dej6                  dz  dejB                  dz  deejD                  z  deej<                  z  dee
jF                  z  dedej0                  fd Z$ G d! d"ejJ                        Z&d-de&fd#Z'dej4                  fd$Z(dej6                  fd%Z)d.d&e*dej<                  fd'Z+d/d(ede
jF                  fd)Z,de-ejJ                     fd*Z.y)0    N)Opcode)
connection)dns)flow)http)tcp)udp)	websocket)ConnectionState)	ProxyMode)tdnsreq)tdnsresp)treq)trespTreturnc                 6   | du r
t               } |du r
t               }|du r.t        j                  ddd      t        j                  ddd      g}|du r
t	               }t        j
                  | |      }| j                  |_        ||_        ||_	        d|_
        |S NTs   hellog6AF   it's meg  @6A)tclient_conntserver_connr   
TCPMessageterrTCPFlowtimestamp_starttimestamp_createdmessageserrorliveclient_connserver_connr   errfs        U/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/mitmproxy/test/tflow.pyttcpflowr%           d"nd"n4NN4;7NN5*k:
 d{fK-A%55AAJAGAFH    c                 6   | du r
t               } |du r
t               }|du r.t        j                  ddd      t        j                  ddd      g}|du r
t	               }t        j
                  | |      }| j                  |_        ||_        ||_	        d|_
        |S r   )r   r   r	   
UDPMessager   UDPFlowr   r   r   r   r   r   s        r$   tudpflowr+   +   r&   r'   c                     t        j                  t               t                     }t        j                  dddddddt        j
                  dd	d
d      dd dd      |_        t        j                  dddt        j
                  dd	d      dd dd      |_        t               |_
        ||j                  _        |||j                  _        n'|du rd|j                  _        nd|j                  _        d|_        |S )Nzexample.comP   s   GETs   https   example.coms   /wss   HTTP/1.1upgrader
   131234)r   r.   sec_websocket_versionsec_websocket_keyr'   p5m8q5m8)headerscontenttrailersr   timestamp_ende   s   Switching Protocols)r   r.   sec_websocket_acceptr5m8s5m8)reasonr5   r6   r7   r   r8   Ti    )r   HTTPFlowr   r   RequestHeadersrequestResponseresponse
twebsocketr
   close_reason
close_coder   )r   r"   rG   rF   r   s        r$   twebsocketflowrH   B   s     ==8D<<
 "&$	
 !#DL& MM% !$

 !DM  \DN".DNN$.!$;(,DNN% )-DNN%DIKr'   F)r    r!   reqrespr"   r   r    r!   rI   rJ   r"   r   c                    | +t               } t        j                  d      | _        d| _        |t               }d|_        |
t               }|du r
t               }|du r
t               }|du st        |t        j                        sJ |du st        |t        j                        sJ t        j                  | |      }|j                  |_        ||_        |xs d|_        |xs d|_        ||_        |S )zCreate a DNS flow for testing.Nr   r	   TF)r   r   parse
proxy_modetransport_protocolr   r   r   r   
isinstancer   Messager   ErrorDNSFlow	timestampr   rB   rD   r   r   )r    r!   rI   rJ   r"   r   r#   s          r$   tdnsflowrT   z   s     "n!*!7).&"n).&
{it|z
d{f5=JtS[[999%<:c4::666K-A--AAIAJkTAGAFHr'   )r    r!   rI   rJ   r"   wsr   rU   c                    | 
t               } |
t               }|
t               }|du r
t               }|du r
t	               }|du r
t               }|du st        |t        j                        sJ |du st        |t        j                        sJ |du st        |t        j                        sJ t        j                  | |      }|j                  |_        ||_        |xs d|_        |xs d|_        |xs d|_        ||_        |S )zCreate a flow for testing.NTF)r   r   r   r   r   rE   rO   r   rC   r   rQ   r
   WebSocketDatar?   r   r   rB   rD   r   r   )r    r!   rI   rJ   r"   rU   r   r#   s           r$   tflowrX      s     "n"n
{ft|w
d{f	Tz\5=JtT]];;;%<:c4::666;*R)@)@AAAk;/A--AAIAJkTAG*AKAFHr'   c                       e Zd ZdZy)	DummyFlowz$A flow that is neither HTTP nor TCP.N)__name__
__module____qualname____doc__ r'   r$   rZ   rZ      s    .r'   rZ   c                     | du r
t               } |du r
t               }|du r
t               }t        | |      }||_        d|_        |S )NT)r   r   r   rZ   r   r   )r    r!   r"   r#   s       r$   
tdummyflowra      sM    d"nd"n
d{f+{+AAGAFHr'   c            	         t        j                  di dt        t        j                               dddddd ddd	d
dddddddddddt
        j                  dd dddg dg dg dt        j                  d      } | S )Nidpeername)z	127.0.0.1   sockname) r   mitmcertr   r3   timestamp_tls_setupr4   r8   iv5m8sniaddresscipheralpns   http/1.1tls_versionTLSv1.2stater   tlsFcertificate_listalpn_offerscipher_listrM   regularr_   )	r   Clientstruuiduuid4r   OPENr   rL   cs    r$   r   r      s     	tzz|	"	 	 		
 "	 &	  	 	 	 	 	 ""	 	 	 	  !	" #	$ ??9-%	A( Hr'   c            	          t        j                  di dt        t        j                               ddddddddd	d
dddddddd dddd dt
        j                  dd dddg dg dd dg } | S )Nrc   rk   )rk   re   rd   )z192.168.0.1re   rf   r   r;   timestamp_tcp_setupr<   ri   t5m8r8   u5m8rj   rm   rn   ro   viarp   r   rq   Frr   rs   rl   rt   r_   )r   Serverrw   rx   ry   r   CLOSEDr{   s    r$   r   r      s     	tzz|		 %	 !		
 "	 &	 &	  	 	 	 	 	 $$	 	 	  !	" #	$ %	& '	A* Hr'   r6   c                 2    t        j                  | d      }|S )Niw5m8)r   rQ   )r6   r"   s     r$   r   r   	  s    
**Wi
(CJr'   r   c                 V   t        j                         }| rvt        j                  t        j                  ddd      t        j                  t        j
                  ddd      t        j                  t        j
                  ddd      g|_        d	|_        d
|_        d|_	        d|_
        |S )NTs   hello binaryr<   s
   hello textr   Fr   r   zClose Reasonr>   )r
   rW   WebSocketMessager   BINARYTEXTr   rF   rG   closed_by_clientr8   )r   rU   s     r$   rE   rE     s    		 	 	"B&&v}}dOYW&&v{{D-S&&v{{E:yQ

 %BOBMB BIr'   c                      t        d      t        d      t        d      t               t        d      t               t        d      t        d      t        d      g	S )NT)rJ   )r"   )rU   )rX   r%   r+   rT   r_   r'   r$   tflowsr     sL    4$
T
TdT
 
r'   )TTTN)TNNrg   )TTN)r   )T)/rx   wsproto.frame_protocolr   	mitmproxyr   r   r   r   r   r	   r
   mitmproxy.connectionr   mitmproxy.proxy.mode_specsr   mitmproxy.test.tutilsr   r   r   r   r   r%   r*   r+   r?   rH   rv   r   rP   boolrQ   rR   rT   r@   rC   rW   rX   FlowrZ   ra   r   r   rw   r   rE   listr   r_   r'   r$   <module>r      s9    )         0 0 ) * & ' <@[[0 <@[[0 <>5	]]5t -1,0"$""""T)" ""T)" 
t		"
 
" 


	" " 	[["N -1,0#!&").$""T)$ ""T)$ 
		$
 
$ 


	$ 	y&&&$ $ 
]]$N/		 /	 j'' 0j'' 2# DJJ 
 )@)@ "TYY r'   