
    @OOf=                        U d Z ddlZddlZddlmZ ddlmZ ddlmZ d Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zi Zeeedf   ef   ed<   i Zeeedf   ef   ed<   d Zd Zd Zd Zd Zd Z d Z!i Z"d Z#d Z$d Z%d Z&d  Z'd! Z(d" Z)d# Z*d$ Z+d%ed&efd'Z,d%ed(ed&efd)Z-d*ed&efd+Z.i d,e	d-e
d.ed/ed0ed1ed2ed3ed4ed5ed6ed7ed8ed9ed:ed;ed<ee e!e#e$e%e&e'e(e)e*e+d=Z/d>ee0ez  ef   d&ee0ez  ef   fd?Z1y)@a.  
This module handles the import of mitmproxy flows generated by old versions.

The flow file version is decoupled from the mitmproxy release cycle (since
v3.0.0dev) and versioning. Every change or migration gets a new flow file
version number, this prevents issues with developer builds and snapshots.
    N)Any)version)strutilsc                     d| d<   | S )Nr         version datas    T/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/mitmproxy/io/compat.pyconvert_011_012r          DK    c                     d| d<   | S )Nr      r	   r
   r   s    r   convert_012_013r      r   r   c                    | d   j                  d      | d   d<   ddj                  d | d   j                  d      D              j                         z   | d   d<   ddj                  d	 | d
   j                  d      D              j                         z   | d
   d<   | d
   j                  d      | d
   d<   | d
   j                  d      | d
   d<   | d   j                  d       d | d   d<   d| d<   | S )N   requests   form_ins   first_line_formats   HTTP/.c              3   2   K   | ]  }t        |        y wNstr.0xs     r   	<genexpr>z"convert_013_014.<locals>.<genexpr>   s     Ha3q6H   s   httpversions   http_versionc              3   2   K   | ]  }t        |        y wr   r   r   s     r   r   z"convert_013_014.<locals>.<genexpr>#   s     Ia3q6Ir       responses   codes   status_code   content   body   server_conns   states   viar      r	   )popjoinencoder   s    r   convert_013_014r+      s   -1*-=-A-A*-MD)*
((H4
#3#7#7#GH
H
O
O
Q	R 	_%
 	
((I4#4#8#8#HI
I
P
P
R	S 	o& )-[(9(=(=g(FDn%!%k!2!6!6z!BDgX&#'D DKr   c                     d| d<   | S )Nr      r	   r
   r   s    r   convert_014_015r/   -   r   r   c                     dD ]$  }d| |   v s| |   j                  d      | |   d<   & d| d   v r| d   j                  d      | d   d<   | d   j                  dd        d	| d
<   | S )N)r   r"   r$   r#   s   msgr"   s   reasonr   s   form_outr      r	   r(   )r   ms     r   convert_015_016r5   2   s    & 7d1g"&q'++g"6DGJ7 k""'+K'8'<'<V'D[)$d+DKr   c                      d | d   d<   d| d<   | S )Nr%   s   peer_addressr      r	   r
   r   s    r   convert_016_017r9   =   s     ,0D)DKr   c                 f    t        |       } | d   j                  dd       | d   d<   d| d<   d| d<   | S )Nserver_connpeer_address
ip_addressFmarkedr      r   )convert_unicoder(   r   s    r   convert_017_018rB   C   sE    4 D(,](;(?(?PT(UD%DNDOKr   c                    t        |       } | d   j                  dd        | d   j                  dd        d | d   d<   d | d   d<   d | d   d<   d | d   d<   d | d	   d<   | d	   d
   rd | d	   d
   d<   d| d<   t               | d<   d| d<   | S )Nrequest
stickyauthstickycookieclient_connsnialpn_proto_negotiatedcipher_nametls_versionr;   viaregularmodemetadatar      r   )rA   r(   dictr   s    r   convert_018_019rS   M   s    4 DOd+O-!%D37D/0)-D&)-D&37D/0M5!>B]E"#:;DLvDDOKr   c                 &    t        |       } d| d<   | S )N)   r   r   r   )rA   r   s    r   convert_019_100rV   `   s    4 DDOKr   c                 X   d| d<   | d   d   d   | d   d<   | d   d   d   | d   d<   | d   d   d   | d   d<   | d   d   r| d   d   d   | d   d<   | d   d   rP| d   d   d   d   | d   d   d<   | d   d   d   d   | d   d   d<   | d   d   d   r| d   d   d   d   | d   d   d<   | S )	N)   r   r   r   rG   addressr;   source_addressr=   rL   r
   r   s    r   convert_100_200r[   h   sI   DO%)-%8%CI%ND	"%)-%8%CI%ND	",0,?@P,Q-D() M<(,0,?,Mi,X]L)M5!04]0CE0J90U1
]E"9- 8<M7J57Q8

8]E"#34 u%l37;M7J57Q88D&|4 Kr   c                 V    d| d<   d | d   d<   d | d   d<   | d   d   rd | d   d   d<   | S )N)   r   r   r   rG   mitmcertr;   rK   rL   r
   r   s    r   convert_200_300r_      sO    DO&*D
#)-D&M5!48]E"=1Kr   c                     d| d<   | S )N   r   r
   r   s    r   convert_300_4rb      s    DOKr   .client_connectionsserver_connectionsc                    d| d<   | d   d   g| d   d   }| d   d   g| d   d   }t         j                  |t        t        j                                     | d   d<   t
        j                  |t        t        j                                     | d   d<   | d   d	   rR| d   d	   d   g| d   d	   d   }t
        j                  |t        t        j                                     | d   d	   d<   | S )
N   r   rG   timestamp_startrY   r;   rZ   idrL   )rc   
setdefaultr   uuiduuid4rd   )r   client_conn_keyserver_conn_keys      r   convert_4_5rn      s-   DO]-.	m	Y	'O
 	]-.	m	-	.O !3 = =TZZ\*!D !3 = =TZZ\*!D M5!&'89
- '(89
 ,>+H+HS.,
]E"4( Kr   c                 p   d| d<   | d   j                  d      | d   d<   | d   j                  d      | d   d<   | d   j                  d      | d   d<   | d   j                  d      | d   d<   | d   d	   r@| d   d	   j                  d      | d   d	   d<   | d   d	   j                  d      | d   d	   d<   | S )
N   r   rG   ssl_establishedtls_establishedtimestamp_ssl_setuptimestamp_tls_setupr;   rL   r3   r   s    r   convert_5_6ru      s   DO-1--@-D-DEV-WD)*15m1D1H1H2D-. .2--@-D-DEV-WD)*15m1D1H1H2D-. M5!8<]8KE8R8V8V9
]E"#45 =A<O=

##
$ 	]E"#89 Kr   c                      d| d<   d | d   d<   | S )N   r   rG   tls_extensionsr
   r   s    r   convert_6_7ry      s     DO,0D()Kr   c                 T    d| d<   d| v r| d   d | d   d<   d| v r| d   d | d   d<   | S )N   r   rD   trailersresponser
   r   s    r   convert_7_8r~      sP    DODT)_8&*Y
#Td:.:'+Z$Kr   c                     d| d<   d}d| v r1| d   j                  d       d| d   d<   | d   j                  dd      }d}d	| v r| d	   | d	   j                  dd      }|rd| d<   | S |rd	| d<   | S d | d<   | S )
N	   r   FrD   first_line_formatr   	authority	is_replayr}   r3   )r   is_request_replayis_response_replays      r   convert_8_9r      s    DODY/0'*Y$ O//UCTd:.:!*-11+uE%[
 K	 
&[ K ![Kr   c                     d| d<   d fd}fd} || d           || d          | d   d   r || d   d          | S )	N
   r   c                 l    d| d<   d | d<   | d   | d<   | d   }|r|gnd | d<   | d   }|r|g| d	<   y d | d	<   y )
Nr   stateerrorrr   tlsrI   alpn_offersrJ   cipher_listr
   )connalpnciphers      r   	conv_connzconvert_9_10.<locals>.conv_conn   s_    WW,-U+,(,tf$]m$*0vh]d]r   c                 X    d| d<   | j                  dd       }|r|gng | d<    |        y )N) r   sockname
clientcertcertificate_listr3   )r   ccr   s     r   
conv_cconnz convert_9_10.<locals>.conv_cconn   s5    "ZXXlD)+-B42 $r   c                 b    | j                  dd       }|r|gng | d<   d | d<   d | d<    |        y )Ncertr   rJ   via2r3   )r   crtr   s     r   
conv_sconnz convert_9_10.<locals>.conv_sconn   s>    hhvt$,/C5R "]V$r   rG   r;   rL   r
   )r   r   r   r   s      @r   convert_9_10r      s[    DO; tM"#tM"#M5!4&u-.Kr   c                 n    d| d<   d } || d           || d          | d   d   r || d   d          | S )N   r   c                     t        j                  | d   dd      | d<   | j                  d      | d<   | d   xs g | d<   | d   xs g | d<   y )NrH   asciibackslashreplacerI   r   r   r   )r   
always_strr(   )r   s    r   r   z convert_10_11.<locals>.conv_conn  sZ    ))$u+w@RSUxx 78V"=17R]"=17R]r   rG   r;   rL   r
   )r   r   s     r   convert_10_11r     sP    DO8 d=!"d=!"M5!$}%e,-Kr   c                    d| d<   d| d   v rt        j                  |       t        | d   <   d| d   v rb| }	 t        j                  | d   d         } d| d   d<   |d   |d   dk(  |d   |d   | j                  di       j                  d d       d!| d<   | S d | d<   | S # t        $ r5 | d   | d   | d   | d	   | d
   | d   i ddd g ddddddddd dd | d   ddd} Y w xY w)"Nr   r   	websocketrO   rh   websocket_handshakerG   r   interceptedr   r>   transparentr   s   unknowns   HTTP/1.1s   GET   /P   s   httpr   )r   contentheadershosthttp_versionmethodpathportschemetimestamp_endrg   r|   r;   http)rG   r   rh   r   r   r>   rO   rN   rD   r}   r;   typer   z`This WebSocket flow has been migrated from an old file format version and may appear duplicated.
duplicatedmessagesclose_senderclient
close_codeclose_reasonr   )r   closed_by_clientr   r   r   )copydeepcopy_websocket_handshakesr(   KeyErrorget)r   ws_flows     r   convert_11_12r     sg   DOd:&&,0MM$,?d4j)Z 00	(,,T*-=>S-TUD@) 	Z&
  
+ ' 78 C!,/#N3!XXmR8<<_dS
[ K ![K[  	  $M2g4j#M2!+.x.%!$#!&$/$ %%&'( $ !#M25D	s   B ;CCc                 2    d| d<   | d   rd| d<   | S d| d<   | S )Nr   r   r>   z	:default:r   r
   r   s    r   convert_12_13r   V  s2    DOH~$X K XKr   c                     d| d<   d| d<   | j                  dd       r'| d   d   | d   d   | d   d<   | d   d   d	z   | d   d<   | S )
Nr'   r   r   commentr}   rg   rD   r   rU   r   r   s    r   convert_13_14r   _  sm    DODOxx
D!d:&67H&I&Q.29oo.NZ*+,0OO,Lq,PZ)Kr   c                 ~    d| d<   | j                  dd       r | d   d   D cg c]  }|dgz   
 c}| d   d<   | S c c}w )Nr.   r   r   r   Fr   )r   msgs     r   convert_14_15r   i  sV    DOxxT" &*+%6z%B)
!C5'M)
[*% K)
s   :c                 F    d| d<   | j                  d| d         d   | d<   | S )Nr2   r   rD   rG   rg   timestamp_createdr   r   s    r   convert_15_16r   s  s5    DO $D4G H!D	 Kr   c                 4    d| d<   | j                  dd        | S )Nr8   r   rN   r3   r   s    r   convert_16_17r   {  s    DOHHVTKr   c                      d| d<   d| d   d<   | S )Nr@   r   rM   rG   
proxy_moder
   r   s    r   convert_17_18r     s    DO(1D%Kr   c                    d| d<   | d   j                  dd       | d   d<   | d   j                  d      d| d   d<   | d   j                  d       | d	   j                  d
d       | d	   d<   | d	   j                  dd       | d	   d<   | d	   j                  dd       | d	   d<   dD ]  }| |   j                  d       | |   j                  dd       | |   d<   | |   j                  dd       dD ]U  }| |   j                  |      st        | |   |   d   t              s2| |   |   d   j                  d      | |   |   d<   W  | d	   d   du r| d	   d   d   | d	   d<   | S )NrQ   r   rG   rY   peernamerg   g        rx   r;   r=   rZ   r   r   rL   )rG   r;   rr   rJ   r   transport_protocoltcp)r   r   rY   r   r   )errorsrH   T)r(   r   ri   
isinstancebytesdecode)r   r   names      r   convert_18_19r     s   DO&*=&9&=&=i&ND
#M01914]-.,-&*=&9&=&=lD&QD
#&*=&9&=&=>NPT&UD
#!%m!4!8!8!FD. 
T
()#Dz~~mTBT
8T
2E:7 	DDz~~d#
4:d3CA3F(N&*4j&6q&9&@&@- 'A 'T
4 #	
 M5!T)%)-%8%CA%F]E"Kr   c                 d    d| d<   | d   j                  dd        | d   j                  dd        | S )N   r   rG   r   r;   r3   r   s    r   convert_19_20r     s:    DOGT*GT*Kr   oreturnc                     t        | t              r@| j                         D ci c]$  \  }}t        j                  |      t        |      & c}}S | S c c}}w r   )r   rR   itemsr   r   _convert_dict_keys)r   kvs      r   r   r     sH    !TJK'')T$!Q##A&(:1(==TT Us   )Avalues_to_convertc                     |j                         D ];  \  }}| r|| vr|du rt        j                  | |         | |<   -t        | |   |       = | S )NT)r   r   r   _convert_dict_vals)r   r   r   r   s       r   r   r     s^    !'') (1AQJ9&&qt,AaDqtQ'( Hr   r   c                 F    t        |       } t        | ddddiddid      } | S )zG
    This method converts between Python 3 and Python 2 dumpfiles.
    Tr   r   )r   rh   rD   r   )r   r   r   s    r   rA   rA     s<     d#D+T2T]		
D Kr   )r   r   r   r   r&   r-   r1   r7   r?   rP   )rU   r   )rX   r   )r]   r   ra   rf   rp   rw   r{   )r   r   r   r   r   r'   r.   r2   r8   r@   rQ   	flow_datac                    	 | j                  d| j                  d            }t        |t              st        |      d d }|t        j
                  k(  r	 | S |t        v rt        |   |       } n[t        |t              xr |t        j
                  kD  }t        dj                  t        j                  ||r
d            d            )Nr	   r   rX   z3{} cannot read files with flow format version {}{}.z, please update mitmproxyr   )
r   r   inttupler   FLOW_FORMAT_VERSION
converters
ValueErrorformat	MITMPROXY)r   flow_versionshould_upgrades      r   migrate_flowr     s    
 }}Zy1IJ ,, .r2L7666  Z'"<0;I <- ? 7#>#>>  ELL%% 3A/  HJ ! r   )2__doc__r   rj   typingr   	mitmproxyr   mitmproxy.utilsr   r   r   r+   r/   r5   r9   rB   rS   rV   r[   r_   rb   rc   rR   r   r   __annotations__rd   rn   ru   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rA   r   r   r   r
   r   r   <module>r     sT       $

$
&2 24 DsCx#-. 313 DsCx#-. 3:(&B"  7t:# # $ 4 D $ 4 "__ _ _	
 _ _ _ _ _ O O M { { {  {!" {#$ 9
@Dc!12 tECK<L7M r   