Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
windows.cpython-313.pyc167 linesDownload Raw Back to __pycache__
1�

2��j;L�
�4�SSKJr SSKrSSKrSSKrSSKrSSKrSSK	r	SSK3r4SSKrSSKrSSK
r
SSKrSSKJr SSKJr SSKJr SSKJr SSKJr SSKrSSKJr SS	KJr S5rSr\R:"\5rS;Sjr S<S
jr!"SS5r""SS\RF5r$"SS\RJ\RL5r'Sr(\RRS-r*\RRS-r+"SS\RX5r-Sr."SS\RX5r/Sr0Sr1"SS\RdRf5r4"SS \
Rj5r6"S!S"\65r7\8\9\:4r;"S#S$5r<"S%S&5r=\S':Xa�SSK>r>\>R~"5S(5r@\@R�5\>R�"S)S*S+S,9\>R�"S-S*S.S,9\>R�"S/\9S0S1S29\>R�"S3S4\:S5S6S7S89S955555rC\@R�5S:5rD\@"5 gg)=�)�annotationsN)�Callable)�BufferedIOBase)�Any)�cast)�ClassVar)�get_local_ip)�
get_local_ip6z	127.0.0.1i�c�z�UR5R5nU(dg[R"U5$�N)�readline�strip�json�loads)�rfile�xs  �`D:\code\apps\devtools\python\user_packages\Python313\site-packages\mitmproxy/platform/windows.py�readr$s+��
������ �A����:�:�a�=��c��UR[R"U5R5S-5 UR	5 g)N�6)�writer�dumps�encode�flush)�data�wfiles  rrr+s.��	�K�K��7�8�4� �'�'�)�E�1�2�	�K�K�Mrc�F�\rSrSr%S\S'S\S'SrSrSrSS	jrS9r	g)
�Resolver�0zsocket.socket | None�sockzthreading.RLock�lockc�F�SUl[R"5Ulgr)r!�	threading�RLockr"��selfs r�__init__�Resolver.__init__4s����	��O�O�%��	rc��UR [R5 UR5 SSS5 g!,(df   g=fr)r"�TransparentProxy�setup�_connectr&s rr,�Resolver.setup8s(��
�Y�Y��"�"�$��M�M�O��Y�Y�s	�%;�10A	c���UR(aURR5 [R"[R[R5UlURR[[45 URRS5Ul	URRS5Ul11[[R"5UR5 g)N�wb�rb)r!�close�socket�AF_INET�SOCK_STREAM�connect�REDIRECT_API_HOST�REDIRECT_API_PORT�makefilerrr�os�getpidr&s rr-�Resolver._connect=s����9�9��I�I�O�O���M�M�&�.�.�&�2D�2D�E��	��	�	���,�.?�@�A��Y�Y�'�'��-��12��Y�Y�'�'��-��13�
�b�i�i�k�4�:�:�&rc���UR5SSup#[R"SSU5nURSS5SnUR [X#4UR5 [UR5nUc[S5e[U5sSSS5 $![[[4a- UR5 URU5ssSSS5 $f=f!,(df   g=f)N�z^::ffff:(?=\d+.\d+.\d+.\d+$)��%�rz$Cannot resolve original destination.)�getpeername�re�sub�splitr"rrrr�RuntimeError�tuple�EOFError�OSError�AttributeErrorr-�
original_addr)r'�csock�ip�port�addrs     rrK�Resolver.original_addrGs����$�$�&�r��*���
�V�V�3�R��
<��
�X�X�c�1�
�a�
 ��
�Y�Y�
1��r�j�$�*�*�-��D�J�J�'���<�&�'M�N�N��T�{�
�Y���g�~�6�
1��
�
���)�)�%�0�0��Y�
1���Y�s+�C$�AB�6C!�C$� C!�!C$�$14C2)r"rr!rN)rLz
socket.socket)15�__name__�16__module__�__qualname__�__firstlineno__�__annotations__r(r,r-rK�__static_attributes__�rrrr0s"��17��18��&��19'�
1rrc�.�\rSrSr%SrS\S'SSjrSrg)	�APIRequestHandler�Wz|20TransparentProxy API: Returns the pickled server address, port tuple21for each received pickled client address, port tuple.22�	APIServer�serverc���URRn[UR5nUcgUR	U5 [UR5nUc23SSS5 gUR24[
[[[4[U55n[X@R5 Mm![a SnN%f=f!,(df   g=f![[4a gf=fr)r\�	proxifierrr�exempt�client_server_maprrG�str�int�KeyErrorrrrHrI)r'r^�pid�cr\s     r�handle�APIRequestHandler.handle_s���&*�k�k�&;�&;�	�	��D�J�J�'�C��{���!�!�#�&���T�Z�Z�(�A��y��	'�&�25&�!*�!<�!<� ��s�C�x��%��(�;�"��26�&�*�*�-���$�&�!%��&��'�&���'�"�	��	�sX�C�C�C�C�'3B1�C�1C�=C�?C�C�27C�
C�C�C'�&C'rWN)�return�None)rQrRrSrT�__doc__rUrfrVrWrrrYrYWs���28
��rrYc�(^�\rSrSrU4SjrSrU=r$)r[�uc�@>�[TU]"U0UD6 XlSUlg)NT)�superr(r^�daemon_threads)r'r^�args�kwargs�	__class__s    �rr(�APIServer.__init__vs"���
���$�)�&�)�"��"��r)ror^)rQrRrSrTr(rV�
__classcell__�rrs@rr[r[us
���#�#rr[�z��c	�8�\rSrSrS\4S\RR4S\RR4S\4S\RR4S\RR4S\RR4S	\RR4/rS29r	g)�MIB_TCP6ROW_OWNER_PID��ucLocalAddr�dwLocalScopeId�dwLocalPort�ucRemoteAddr�dwRemoteScopeId�dwRemotePort�dwState�dwOwningPidrWN)30rQrRrSrT�IN6_ADDR�ctypes�wintypes�DWORD�_fields_rVrWrrrzrz�s���	��!�	�6�?�?�0�0�1�	����-�-�.�	��"�	�F�O�O�1�1�2�	����.�.�/�	�F�O�O�)�)�*�	����-�-�.�	�Hrrzc�J^�"U4SjS[R5nU"5$)Nc�V>�\rSrSrS\R31R4S\Y-4/rSr	g)�9MIB_TCP6TABLE_OWNER_PID.<locals>._MIB_TCP6TABLE_OWNER_PID��dwNumEntries�tablerWN)32rQrRrSrTr�r�r�rzr�rV��sizes�r�_MIB_TCP6TABLE_OWNER_PIDr��s*���
�V�_�_�2�2�3�
�+�d�2�3�33�rr��r��	Structure)r�r�s` r�MIB_TCP6TABLE_OWNER_PIDr��s ���34�6�#3�#3�35�$�%�%rc���\rSrSrS\R36R4S\4S\R37R4S\4S\R38R4S\R39R4/rSr	g	)40�MIB_TCPROW_OWNER_PID�r�r|r~rr�r�rWN)41rQrRrSrTr�r�r��IN4_ADDRr�rVrWrrr�r��sa��	�F�O�O�)�)�*�	��!�	����-�-�.�	��"�	����.�.�/�	����-�-�.�
�Hrr�c�J^�"U4SjS[R5nU"5$)Nc�V>�\rSrSrS\R42R4S\Y-4/rSr	g)�7MIB_TCPTABLE_OWNER_PID.<locals>._MIB_TCPTABLE_OWNER_PID�r�r�rWN)43rQrRrSrTr�r�r�r�r�rVr�s�r�_MIB_TCPTABLE_OWNER_PIDr��s*���
�V�_�_�2�2�3�
�*�T�1�2�44�rr�r�)r�r�s` r�MIB_TCPTABLE_OWNER_PIDr��s ���45�&�"2�"2�46�#�$�$rc�B�\rSrSrSrSrSrSrSrSr	Sr47S	rS48rg)�TcpConnectionTable��ic�2�[UR5Ul[RRUR5Ul[UR5Ul[RRUR5Ul	0Ul49gr)r��DEFAULT_TABLE_SIZE�_tcpr�r�r��	_tcp_sizer��_tcp6�50_tcp6_size�_mapr&s rr(�TcpConnectionTable.__init__�se��*�4�+B�+B�C��	����.�.�t�/F�/F�G���,�T�-D�-D�E��51� �/�/�/�/��0G�0G�H�����	rc� �URU$r)r��r'�items  r�__getitem__�TcpConnectionTable.__getitem__�s���y�y���rc�6�URR5$r)r��__iter__r&s rr��TcpConnectionTable.__iter__�s���y�y�!�!�#�#rc�6�URR5$r)r��__len__r&s rr��TcpConnectionTable.__len__�s���y�y� � �"�"rc�R�0UlUR5 UR5 gr)r��
_refresh_ipv4�
_refresh_ipv6r&s r�refresh�TcpConnectionTable.refresh�s!����	��������rc���[RRR[R"UR525[R"UR5S[R[S5nUS:Xa�UR53RSUR54RHun[R"[R[UR55n[R"UR 5nUR"UR$X44'Mw gU[&:Xa5[)URR*5UlUR-5 g[/SU-5e)NFrz2[IPv4] Unknown GetExtendedTcpTable return code: %s)r��windll�iphlpapi�GetExtendedTcpTable�byrefr�r�r3r4�TCP_TABLE_OWNER_PID_CONNECTIONSr�r��	inet_ntop�bytesr|�htonsr~r�r��ERROR_INSUFFICIENT_BUFFERr��valuer�rF�r'�ret�row�local_ip�55local_ports     rr�� TcpConnectionTable._refresh_ipv4�s���m�m�$�$�8�8��L�L����#��L�L����(���N�N�+�
�
56���!�8��y�y���'?����)?�)?�@��!�+�+�F�N�N�E�#�/�/�<R�S��#�\�\�#�/�/�:�57�47�O�O��	�	�8�0�1�A��-�
-�.�t�~�~�/C�/C�D�D�I���� ��D�s�J��
rc���[RRR[R"UR585[R"UR5S[R[S5nUS:Xa�UR59RSUR60RHun[R"[R[UR55n[R"UR 5nUR"UR$X44'Mw gU[&:Xa5[)URR*5UlUR-5 g[/SU-5e)NFrz2[IPv6] Unknown GetExtendedTcpTable return code: %s)r�r�r�r�r�r�r�r3�AF_INET6r�r�r�r�r�r|r�r~r�r�r�r�r�r�rFr�s     rr�� TcpConnectionTable._refresh_ipv6�s���m�m�$�$�8�8��L�L����$��L�L����)���O�O�+�
�
61���!�8��z�z�'�'�(A�$�*�*�*A�*A�B��!�+�+�F�O�O�U�3�?�?�=S�T��#�\�\�#�/�/�:�62�47�O�O��	�	�8�0�1�C��-�
-�0����1F�1F�G�D�J���� ��D�s�J��
r)r�r�r�r�r�N)
rQrRrSrTr�r(r�r�r�r�r�r�rVrWrrr�r��s+������$�#��63�.rr�c�^�\rSrSr%SrS\S'\RRS4SU4Sjjjr	U4Sjr64SrS	rS
S65jr
SrU=r$)�Redirecti66Tzpydivert.WinDivert�	windivertrc�b>�Xl[R"X#US9Ul[TU]5 g)N��flags)rf�pydivert�	WinDivertr�rnr()r'rf�filter�layerr�rrs     �rr(�Redirect.__init__s)�����!�+�+�F��G���
���rc�V>�URR5 [TU]
5 gr)r��openrn�start)r'rrs �rr��Redirect.starts���������
��
�rc��URR5nURU5 M.![an[	USS5S:XaSnAgeSnAff=f)N�winerror��)r��recvrfrI�getattr)r'�packet�es   r�run�Redirect.runsX���
$����,�,�.�����F�#����
��1�j�$�/�3�6����	
�s�0�67A�A�A�Ac�8�URR5 gr)r�r2r&s r�shutdown�Redirect.shutdown)s�������rc��URR5$![anURS:XaSnAgeSnAff=f)z�68Convenience function that receives a packet from the passed handler and handles error codes.69If the process has been shut down, None is returned.70r�N)r�r�rIr�)r'r�s  rr��
Redirect.recv,s<��71	��>�>�&�&�(�(���	��z�z�S� ����		�s��72A�<�<�A)rfr�)73rf�!Callable[[pydivert.Packet], None]r�rar�zpydivert.Layerr�z
pydivert.Flagrhri)rhzpydivert.Packet | None)rQrRrSrT�daemonrUr��Layer�NETWORKr(r�r�r�r�rVrtrus@rr�r�74ss���
�F�!�!�!)��� 6� 6� �	�1�	��	��		�75�	�76�
	�	��77$���rr�c�J^�\rSrSr%S\S'SU4SjjrSrSrU=r$)�
RedirectLocali:zset[int]�trusted_pidsc�>�[5Ul[5UlXl[78TU]URU5 gr)r��tcp_connections�setr��redirect_requestrnr(rf)r'r�r�rrs   �rr(�RedirectLocal.__init__=s3��� 2�3����E��� 0��
������f�-rc�4�URUR4nX R;aURR5 URR	US5nX0R79;aUR
U5 gURRUSS9 g)NT��recalculate_checksum)	�src_addr�src_portr�r��getr�r�r��send)r'r��clientrds    rrf�RedirectLocal.handleEs���/�/�6�?�?�3���-�-�-�� � �(�(�*��"�"�&�&�v�t�4���'�'�'��!�!�&�)�
�N�N����T��Br)r�r�r�)r�r�r�rarhri)	rQrRrSrTrUr(rfrVrtrus@rr�r�:s2�����.� A�.�KN�.�	
�.�C�Crr�c�B�\rSrSr%SrSrS\S'SrSSjrSSjr	S	r80g81)
�ClientServerMapiZzA thread-safe LRU dict.iz
ClassVar[int]�connection_cache_sizec�l�[R"5Ul[R"5Ulgr)r$�Lock�_lock�collections�OrderedDictr�r&s rr(�ClientServerMap.__init___s ���^�^�%��82��+�+�-��	rc�n�UR URUsSSS5 $!,(df   g=fr�rr�r�s  rr��ClientServerMap.__getitem__cs��
�Z�Z��9�9�T�?��Z�Z�s�&�834c�h�UR X RU'URRU5 [UR5UR:�a@URRS5 [UR5UR:�aM@SSS5 g!,(df   g=f)NF)rr��move_to_end�lenr�popitem)r'�keyr�s   r�__setitem__�ClientServerMap.__setitem__gsp��
�Z�Z�"�I�I�c�N��I�I�!�!�#�&��d�i�i�.�4�#=�#=�=��	�	�!�!�%�(��d�i�i�.�4�#=�#=�=��Z�Z�s�BB#�#84B1r85N)r��TConnectionrhr)rrr�rrhri)rQrRrSrTrjrrUr(r�rrVrWrrrrZs��!�+0��=�0�.�#�)rrc���\rSrSr%SrSrS\S'SrS\S'S\S	'S\S86'S\S'S
\S'S\S'SSSjjr\	S5r87SrSrSSjr
SSjr\R SSj5rSrg)r+ioa$88Transparent Windows Proxy for mitmproxy based on WinDivert/PyDivert. This module can be used to89redirect both traffic that is forwarded by the host and traffic originating from the host itself.90 91Requires elevated (admin) privileges. Can be started separately by manually running the file.92 93How it works:94 95(1) First, we intercept all packages that match our filter.96We both consider traffic that is forwarded by the OS (WinDivert's NETWORK_FORWARD layer) as well97as traffic sent from the local machine (WinDivert's NETWORK layer). In the case of traffic from98the local machine, we need to exempt packets sent from the proxy to not create a redirect loop.99To accomplish this, we use Windows' GetExtendedTcpTable syscall and determine the source100application's PID.101 102For each intercepted package, we103    1. Store the source -> destination mapping (address and port)104    2. Remove the package from the network (by not reinjecting it).105    3. Re-inject the package into the local network stack, but with the destination address106       changed to the proxy.107 108(2) Next, the proxy receives the forwarded packet, but does not know the real destination yet109(which we overwrote with the proxy's address). On Linux, we would now call110getsockopt(SO_ORIGINAL_DST). We now access the redirect module's API (see APIRequestHandler),111submit the source information and get the actual destination back (which we stored in 1.1).112 113(3) The proxy now establishes the upstream connection as usual.114 115(4) Finally, the proxy sends the response back to the client. To make it work, we need to change116the packet's source address back to the original destination (using the mapping from 1.1),117to which the client believes it is talking to.118 119Limitations:120 121- We assume that ephemeral TCP ports are not re-used for multiple connections at the same time.122The proxy will fail if an application connects to example.com and example.org from123192.168.0.42:4242 simultaneously. This could be mitigated by introducing unique "meta-addresses"124which mitmproxy sees, but this would remove the correct client info from mitmproxy.125NzRedirectLocal | None�localzRedirect | None�forwardr��response�icmprb�126proxy_portrar�rr`c���X0lU=(d
 SUS[S3Ul[5Ul[5Ul[5Ul[U[[4[5Ul[R"URRS9UlSUR lU(a>[%UR&UR[(R*R,5UlU(a%[1UR&UR5Ul[%UR4SU35Ul[%SS[(R8R:S	9Ulg)127Nztcp.DstPort != z and tcp.DstPort != z and tcp.DstPort < 49152)�targetTzoutbound and tcp.SrcPort == c��grrW)�_s r�<lambda>�+TransparentProxy.__init__.<locals>.<lambda>�s��trrr�)rr8r�r	�ipv4_addressr128�ipv6_addressrr`r[r7rY�apir$�Thread�
serve_forever�129api_threadr�r�r�r�r��NETWORK_FORWARDrr�r�redirect_responser�Flag�DROPr)r'rrrr�s     rr(�TransparentProxy.__init__�s��%���
m� ���,@�AR�@S�Sk�l�	
��130)�N���)�O���!0�!2�����$�&7�8�:K�131���$�*�*�$�(�(�2H�2H�I���!%������#��%�%�t�{�{�H�N�N�4R�4R��D�L��&�t�'<�'<�d�k�k�J�D�J�!��"�"�*�:�,�7�132��
��^�V�8�=�=�;M�;M�N��	rc��[RS5 [R"[R[R5nUR[[45nU(a[5nUR5 gg)Nz�Transparent mode on Windows is unsupported, flaky, and deprecated. Consider using local redirect mode or WireGuard mode instead.)133�logger�warningr3r4r5�134connect_exr7r8r+r�)�cls�s�server_unavailabler^s    rr,�TransparentProxy.setup�sb��	���
L�	135�
�M�M�&�.�.�&�*<�*<�=���\�\�+<�>O�*P�Q���(�*�I��O�O��rc�N�URR5 URR5 URR5 UR(aURR5 UR136(aUR137R5 ggr)r%r�rrrrr&s rr��TransparentProxy.start�sc���������	�	�����
�
�����<�<��L�L��� ��:�:��J�J����rc�L�UR(aURR5 UR(aURR5 URR5 URR5 UR138R5 gr)rr�rrrr"r&s rr��TransparentProxy.shutdown�s`���:�:��J�J���!��<�<��L�L�!�!�#��
�
��� ��	�	���������rc��URUR4nURUR4URU'UR139[R:Xa%UR(deURUlOyUR140[R:XaPUR(d[UR5Ul141UR(deURUlO[S5eURUl[RR R"UlUR&R(R+U5 g)NzUnknown address family)r�r��dst_addr�dst_portr`�address_familyr3r4r r�r!r142rFrr��consts�	Direction�INBOUND�	directionrr�r��r'r�r�s   rr��!TransparentProxy.redirect_request�s����/�/�6�?�?�3��*0�/�/�6�?�?�)K����v�&�� � �F�N�N�2��$�$�$�$�"�/�/�F�O�
�
"�
"�f�o�o�
5��$�$�$1�&�/�/�$B��!��$�$�$�$�"�/�/�F�O��7�8�8��/�/���#�?�?�4�4�<�<���	
�
�
���$�$�V�,rc��URUR4nURUuUlUlUR5 URRRUSS9 g![a [SU35 N?f=f)za143If the proxy responds to the client, let the client believe the target server sent the144packets.145z4Warning: Previously unseen connection from proxy to Fr�N)r8r9r`r�r��recalculate_checksumsrc�printrr�r�r?s   rr'�"TransparentProxy.redirect_responses����/�/�6�?�?�3��	+�/3�/E�/E�f�/M�,�F�O�V�_�
�(�(�*��
�
���$�$�V�%�$�H���	S��H���Q�R�	S�s�A+�+B�Bc#�h# �UR(a%URRRU5 Sv� UR(a&URRRU5 gg!UR(a&URRRU5 ff=f7fr)rr��add�remove)r'rds  rr_�TransparentProxy.exemptst����:�:��J�J�#�#�'�'��,�	4���z�z��146�147�'�'�.�.�s�3���t�z�z��148�149�'�'�.�.�s�3��s�7B2�A6�8B2�69B/�/B2)r"r%r`r�rrr r!rrr)TT�z'tcp.DstPort == 80 or tcp.DstPort == 443)150r�boolrrJrrbr�z151str | Nonerhri)r�zpydivert.Packet)rdrb)rQrRrSrTrjrrUrr(�classmethodr,r�r�r�r'�152contextlib�contextmanagerr_rVrWrrr+r+os���&�P#'�E��&�#�G�_�#���153�N��O��K�&�&����F�*O��*O��*O��	*O�154�*O�155�
*O�X������-�2I� ���4��4rr+�__main__c��grrWrWrr�clirP&s��rz--local/--no-localTz Redirect the host's own traffic.)�default�helpz--forward/--no-forwardz.Redirect traffic that's forwarded by the host.z--filter�WINDIVERT_FILTERz#Custom WinDivert interception rule.)�type�metavarrRz-pz--proxy-port�8080rIz#The port mitmproxy is listening on.)rTrUrQrRc��[S0UD6nUR5 [S5 [SUR35 [R156"S5 M![a) [S5 UR5 [S5 gf=f)zRedirect flows to mitmproxy.z * Redirection active.z   Filter: rAz * Shutting down...z
 * Shut down.NrW)r+r�rCr��time�sleep�KeyboardInterruptr�)�options�proxys  r�redirectr]*sx��2!�+�7�+��
���
�
�&�(�
��E�L�L�>�*�+�	#���157�158�1�
��� �	#��'�(��N�N���/�"�	#�s�A�0B�Bc��[5nUR5 UR5Huupn[USUSU35 M g)z1List all TCP connections and the associated PIDs.�:z -> N)r�r��itemsrC)�connectionsrMrNrds    rraraOsJ��)�*������*�0�0�2�O�J�R���R�D��$��t�C�5�)�*� 3r)rrrhr)rrrhri)E�159__future__r�collections.abcrrL�ctypes.wintypesr�r�loggingr:rCr3�socketserverr$rXr�ior�typingrrr�pydivert.constsr��mitmproxy.net.local_ipr	r160r7r8�	getLoggerrQr,rrr�StreamRequestHandlerrY�ThreadingMixIn�	TCPServerr[r��c_ubyter�r�r�rzr�r�r�r��abc�Mappingr�r#r�r�rGrarbrrr+�click�grouprP�command�optionr]rarWrr�<module>rvs9��"������	�	�
����$������/�0�����161�	�	�8�	$����162$1�$1�N��9�9��<#��+�+�\�-C�-C�#�!���>�>�B����>�>�A���163�F�,�,�164�&� �6�+�+��%�#$��D����0�0�D�N-�y���-�`C�H�C�:�C��H�o��)�)�*q4�q4�h�z���165�[�[�]�
��
�	�[�[�]�166�\�\��d�1S���\�\� ��
=��167�\�\��
�"�
2�	��\�\���
���
2�
�#��
����.#�	�[�[�]�+��+��E�ir
codekingpro/portable-devtools · Team Ai