Team Ai
Datasetpublic

codekingpro/portable-devtools

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

2��j�Q����SSKJr SSKrSSKrSSKrSSKrSSKrSSKJr SSK	J3r4 SSKJr SSKJ
r
 SSKJr SSKJr SS	KJr SS5KJr SSKJr SSKJr SS
KJr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJ r  SSKJ!r! \6"SS\RD55r#\7"SS\RD55r$\8"SS\RD55r%"SS\RL5r'g)�)�annotationsN)�Iterable)�	dataclass)�IPv4Address)�IPv6Address)�Any)�cast)�ClassVar)�Self)�flow)�serializable)�classes)�domain_names)�
https_records)�op_codes)�response_codes)�types)�HTTPSRecord)�HTTPSRecordJSON)�SVCParamKeysc��\rSrSr%\R9"S5rS\S'S\S'S\S'S\S	'SS10jrSSjr	\11SSj5rS
rg)�Question� z!HH�ClassVar[struct.Struct]�HEADER�str�name�int�type�class_c��UR$�N)r��selfs �SD:\code\apps\devtools\python\user_packages\Python313\site-packages\mitmproxy/dns.py�__str__�Question.__str__(s���y�y��c��UR[R"UR5[R"UR125S.$)zI13Converts the question into json for mitmweb.14Sync with web/src/flow.ts.15)rr�class)rr�to_strrrr r#s r%�to_json�Question.to_json+s5���I�I��L�L����+��^�^�D�K�K�0�16�	17r(c�t�U"US[R"US5[R"US5S9$)Nrrr*�rrr )r�from_strr)�cls�datas  r%�	from_json�Question.from_json6s8����f������V��-��#�#�D��M�2�18�	19r(�N��returnr�r7�dict)r2zdict[str, str]r7r)
�__name__�20__module__�__qualname__�__firstlineno__�struct�Structr�__annotations__r&r,�classmethodr3�__static_attributes__r5r(r%rr sC��&,�m�m�E�&:�F�#�:�21
�I�22
�I��K��	23��24��25r(rc���\rSrSr%SrS\S'\R"S5rS\S'S\S	'S26\S'S27\S'S28\S
'S\S'S)Sjr	\29S)Sj5r\RS*Sj5r\30S+Sj5r
\
RS,Sj5r
\31S-Sj5r\RS.Sj5r\32S)Sj5r\RS/Sj5r\33S0Sj5r\RS1Sj5r\34S2Sj5r\RS3Sj5rS4SjrS5Sjr\S6Sj5r\\S .S7S!jj5r\\S .S8S"jj5r\\S .S9S#jj5r\\S .S:S$jj5r\\S .S;S%jj5r\\4S<S&jj5rS'rg()=�ResourceRecord�?�<z
ClassVar[int]�DEFAULT_TTLz!HHIHrrrrrrr �ttl�bytesr2c�4�[UR55$r")r�35_data_jsonr#s r%r&�ResourceRecord.__str__Js���4�?�?�$�%�%r(c�8�URRS5$�N�utf-8)r2�decoder#s r%�text�ResourceRecord.textMs���y�y����(�(r(c�0�URS5UlgrN)�encoder2)r$�values  r%rQrRQs���L�L��)��	r(c�,�[UR5$r")rr2r#s r%�ipv4_address�ResourceRecord.ipv4_addressU����4�9�9�%�%r(c�&�URUlgr"��packedr2�r$�ips  r%rWrXY�
���I�I��	r(c�,�[UR5$r")rr2r#s r%�ipv6_address�ResourceRecord.ipv6_address]rYr(c�&�URUlgr"r[r]s  r%rarbar_r(c�B�[R"UR5$r")r�unpackr2r#s r%�domain_name�ResourceRecord.domain_namees���"�"�4�9�9�-�-r(c�:�[R"U5Ulgr")r�packr2)r$rs  r%rfrgis�� �%�%�d�+��	r(c�^�[R"UR5nURR	[36RRS5nUbVSn/nU[U5:a8X#nURX#S-US-U-5 X5S--
nU[U5:aM8[U5$g)Nr�)rrer2�params�getr�ALPNrU�len�append�tuple)r$�record�37alpn_bytes�i�ret�	token_lens      r%�38https_alpn�ResourceRecord.https_alpnms����%�%�d�i�i�0���]�]�&�&�|�'8�'8�'>�'>��E�39��!��A��C��c�*�o�%�&�M�	��40�41�:�!�e�a�!�e�i�.?�@�A���]�"���c�*�o�%���:��r(c�f�[R"UR5nUc5URR	[42RRS5 O>SRSU55nX2R[43RR'[R"U5Ulg)Nr(c3�R# �UHn[[U5/5U-v� M g7fr")rIro)�.0�as  r%�	<genexpr>�,ResourceRecord.https_alpn.<locals>.<genexpr>�s���!D�t�!�%��Q���/�A�"5�t�s�%')44rrer2rl�poprrnrU�joinri)r$�alpnrrrss    r%rwrx|sy���%�%�d�i�i�0���<��M�M���l�/�/�5�5�t�<����!D�t�!D�D�J�5?�M�M�,�+�+�1�1�2�!�&�&�v�.��	r(c���[R"UR5nURR	[45RRS5nUb%[R"U5RS5$grN)rrer2rlrmr�ECHrU�base64�	b64encoderP)r$rr�	ech_bytess   r%�	https_ech�ResourceRecord.https_ech�s]���%�%�d�i�i�0���M�M�%�%�l�&6�&6�&<�&<�d�C�	�� ��#�#�I�.�5�5�g�>�>�r(c��[R"UR5nUc5URR	[46RRS5 OK[R"URS55nX2R[47RR'[R"U5UlgrN)rrer2rlrrr�rUr��	b64decoderTri)r$�echrrr�s    r%r�r��s~���%�%�d�i�i�0���;��M�M���l�.�.�4�4�d�;��(�(����G�)<�=�I�4=�M�M�,�*�*�0�0�1�!�&�&�v�.��	r(c��UR=[R:Xa [UR5$=[R48:Xa [UR5$==[R:XaO,=[R:XaO=[R:XaO O  UR$=[R:Xa
 UR$[R:Xa.[R"UR 5R#5$SUR R%53$![&aB SUR R%5S[R("UR5S3s$f=f)N�0xz49 (invalid z data))rr�ArrW�AAAAra�NS�CNAME�PTRrf�TXTrQ�HTTPSrrer2r,�hex�	Exceptionr+r#s r%rK�ResourceRecord._data_json�s���	S��)�)��U�W�W��t�0�0�1�1��U�Z�Z��t�0�0�1�1�7�X�U�X�X�����i�e�i�i�7��+�+�+��U�Y�Y��9�9�$��[�[�(�/�/��	�	�:�B�B�D�D����	�	�
�
��0�1�1���	S���	�	�
�
��(�50�5�<�<��	�	�3J�2K�6�R�R�	S�s1�4D1�)D1�!AD1�1 D1�AD1�D1�1A	E=�<E=c���UR[R"UR5[R"UR515URUR5S.$)zP52Converts the resource record into json for mitmweb.53Sync with web/src/flow.ts.54)rrr*rHr2)rrr+rrr rHrKr#s r%r,�ResourceRecord.to_json�sF���I�I��L�L����+��^�^�D�K�K�0��8�8��O�O�%�55�	56r(c�\�U"US[R"US5[R"US5USSS9nUSnUR=[R:Xa [U5UlU$=[R:Xa [U5Ul	U$==[R:XaO,=[R:XaO=[R:XaO O57  X2l
U$=[R:Xa	 X2lU$[R :XaA["R$"['[(U55n[*R,"U5UlU$[0e![2a? [4R7UR9S5R;S	5S585UlU$f=f)Nrrr*rHr()rrr rHr2r2r�z (r)rr0rrr�rrWr�rrar�r�r�rfr�rQr�rr3r	rrrir2�59ValueErrorr�rI�fromhex�removeprefix�	partition)r1r2�inst�drrs     r%r3�ResourceRecord.from_json�sX����f������V��-��#�#�D��M�2��U���60���f���	O��)�)��U�W�W�(3�A��D�%��� �U�Z�Z�(3�A��D�%���8�X�U�X�X�����i�e�i�i�7�'(�$����U�Y�Y� !�I����[�[�(�2�2�4���3K�L�F� -� 2� 2�6� :�D�I����$�$���	O��
�
�a�n�n�T�&:�&D�&D�T�&J�1�&M�N�D�I���	O�s3�0E"�7%E"�A61E"�*E"�AE"�E"�"AF+�*F+)rHc�d�U"U[R[RX2R5$)zCreate an IPv4 resource record.)rr�r�INr\�r1rr^rHs    r%r��ResourceRecord.A�s!���4����'�*�*�c�9�9�=�=r(c�d�U"U[R[RX2R5$)zCreate an IPv6 resource record.)rr�rr�r\r�s    r%r��ResourceRecord.AAAA�s!��62�4����W�Z�Z��i�i�@�@r(c	�z�U"U[R[RU[R63"U55$�z1Create a canonical internet name resource record.)rr�rr�rri)r1�alias�	canonicalrHs    r%r��ResourceRecord.CNAME�s*��64�5�%�+�+�w�z�z�3��8I�8I�)�8T�U�Ur(c	�z�U"U[R[RU[R65"U55$r�)rr�rr�rri)r1�inaddr�ptrrHs    r%r��ResourceRecord.PTR�s*���6�5�9�9�g�j�j�#�|�7H�7H��7M�N�Nr(c	�n�U"U[R[RX2R	S55$)z!Create a textual resource record.rO)rr�rr�rT)r1rrQrHs    r%r��ResourceRecord.TXT�s&���4����G�J�J��[�[��5I�J�Jr(c	�z�U"U[R[RU[R66"U55$)zCreate a HTTPS resource record)rr�rr�rri)r1rrrrHs    r%r��ResourceRecord.HTTPS�s*��67�4����g�j�j�#�}�7I�7I�&�7Q�R�Rr()r2Nr6)rUrr7�None)r7r)r^rr7r�)r7r)r^rr7r�)rrr7r�)r7ztuple[bytes, ...] | None)r�zIterable[bytes] | Noner7r�)r7�68str | None)r�r�r7r�)r7zstr | HTTPSRecordJSON)r7z&dict[str, str | int | HTTPSRecordJSON])r2zdict[str, Any]r7r)rrr^rrHrr7rD)rrr^rrHrr7rD)r�rr�rrHrr7rD)r�rr�rrHrr7rD)rrrQrrHrr7rD)rrrrrrHrr7rD)r:r;r<r=rGr@r>r?rr&�propertyrQ�setterrWrarfrwr�rKr,rAr3r�r�r�r�r�r�rBr5r(r%rDrD?so��!#�K��#�&,�m�m�G�&<�F�#�<�69
�I�70
�I��K�	�H�71�K�&��)��)�72�[�[�*��*��&��&��������&��&��������.��.����,��,��������/��/��������/��/�S�$73�����<�9D�>��>��7B�A��A�'�A�14�A�	�A��A��7B�V��V�$'�V�14�V�	�V��V��6A�O��O��5@�K��K��8C�S��S� +�S�25�S�	�S��Sr(rDc���\rSrSr%\R74"S5rS\S'S\S'S\S'S\S	'S\S75'S\S'S\S'S\S
'S\S'S\S'S\S'S\S'S\S'S\S'SrS\S'S&Sjr	\76S'Sj5r\77S(Sj5r\78S)Sj5r
S*SjrS+Sjr\S,S-Sjj5r\S,S.S jj5r\79S'S!j5rS/S"jr\S0S#j5rS1S$jrS%rg)2�80DNSMessage��z!HHHHHHrrr�id�bool�query�op_code�authoritative_answer�81truncation�recursion_desired�recursion_available�reserved�
response_codezlist[Question]�	questions�list[ResourceRecord]�answers�authorities�additionalsN�float | None�	timestampc��SR[[[R"UR82URURUR555$)Nz
83)	r��mapr�	itertools�chainr�r�r�r�r#s r%r&�DNSMessage.__str__+sG���{�{�������N�N�D�L�L�$�2B�2B�D�DT�DT��
�84�	85r(c��UR$r")r\r#s r%�content�DNSMessage.content5s���{�{�r(c�T�[UR5S:XaURS$g)zbDNS practically only supports a single question at the86same time, so this is a shorthand for this.rkrN)ror�r#s r%�question�DNSMessage.question9s'���t�~�~��!�#��>�>�!�$�$�r(c��[S[RRURUR87UR/555$)zAReturns the cumulative data size of all resource record sections.c3�L# �UHn[UR5v� M g7fr")ror2)r{�xs  r%r}�"DNSMessage.size.<locals>.<genexpr>Ds%���88���
����K�K��s�"$)�sumr�r��
from_iterabler�r�r�r#s r%�size�DNSMessage.sizeAsG���89��_�_�2�2����t�/�/��1A�1A�B��90�91�	92r(c���U[R:Xa[S5e[[R"5UR93SURSSURSSUUR///S9$)Nz$response_code must be an error code.Fr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�)	r�NOERRORr�r��timer�r�r�r�)r$r�s  r%�fail�DNSMessage.failKsk���N�2�2�2��C�D�D���i�i�k��w�w���L�L�!&��"�4�4� %��'��n�n����94�	95r(c���[[R"5URSURSSURSS[96RURU//S9$)NFTrr�)r�r�r�r�r�rr�r�)r$r�s  r%�succeed�DNSMessage.succeed_sW����i�i�k��w�w���L�L�!&��"�4�4� $��(�0�0��n�n����97�	98r(c��URUSU5up4U[U5:wa[R"SUS35eU$)z4Converts the entire given buffer into a DNS message.rzunpack requires a buffer of � bytes)�unpack_fromror>�error)r1�bufferr��length�msgs     r%re�DNSMessage.unpackqsB���o�o�f�a��;����S��[� ��,�,�!=�f�X�V�L�M�M��99r(c�f^^^^�[RRTT5unnnnnn	[UUUS-S:HUS-	S-US-S:gUS-S:gUS-S:gUS-S:gUS	-	S100-US-////S9n101T[RR-
m[R102"5mSUUU4Sjjm[
SU5HmnT"5n[RRTT5up�T[RR-
mU103RR[X�US
95 Mo SUUUU4SjjnU"U104RSU5 U"U105RSU5 U"U106RSU	5 TU1074$![Ra!n[R"SUSU35eSnAff=f)zWConverts the buffer from a given offset into a DNS message and also returns its length.��r��������r�c�F>�[R"TTT5upTU-
mU$r")r�unpack_from_with_compression)rr�r��cached_names�offsets  ���r%�unpack_domain_name�2DNSMessage.unpack_from.<locals>.unpack_domain_name�s-���'�D�D�����L�D�
�f��F��Kr(r/z108question #�: Nc109�@>�[SU5H�nT"5n[RRTT5upVpxT[RR-
mTU-n	[T5U	:a[R"SUS35eTTU	n110[R"U5(a[R"TTU	T
5n111UR[XEXgU11255 TU-
mM� g![Ra#n[R"USUSU35eSnAff=f)Nrz!unpack requires a data buffer of r�z #r)�rangerDrr�r�ror>r�r� record_data_can_have_compression�decompress_from_record_datarp)�section�section_name�countrtrrr rH�len_data�end_datar2�er�r�r�r�s            ����r%�113unpack_rrs�*DNSMessage.unpack_from.<locals>.unpack_rrs�s����1�e�_��D�-�/�D�2@�2G�2G�2S�2S���3�/�D�#��n�3�3�8�8�8�F�%��0�H��6�{�X�-�$�l�l�?��z��P���"�&��2�D�#�D�D�T�J�J�+�G�G�"�F�H�l� ���N�N�>�$�f�4�#P�Q��h�&�F�)%��*�|�|�D� �,�,�,��r�!��B�q�c�'B�C�C��D�s�CC&�&D�:D�D�answer�	authority�114additionalr6)rr�rrrrr7r�)r�rr�r�r�cacherrr�rpr>r�r�r�r�)r1r�r�r�r��flags�
len_questions�len_answers�len_authorities�len_additionalsr�rtrrr rrr�r�s ``              @@r%r��DNSMessage.unpack_fromys����
���)�)�&�&�9�	115�����������G�$��*��b�[�F�*�"'�7�"3��!9���(�Q�.�$��/�A�5�!&�&�!1�a� 7��q�j�E�)��&�.�����116�� 	�*�#�#�(�(�(��#�)�)�+��	�	��q�-�(�A�
:�)�+��'���:�:�6�6�J����(�/�/�.�.�.���
�
�$�$�X�4�6�%R�S�)�	D�)�	D�9<�	D�EH�	D�
�	D�	D�8	�3�;�;��+�6��3�?�?�K��A��3�?�?�L�/�B���}���E�<�<�
:��l�l�Z��s�"�Q�C�#8�9�9��
:�s�;A)E;�;F0�F+�+F0c��URS:dURS:�a[SURS35eSnUR(dUS-nURS:dURS:�a[SURS35eXRS--nUR(aUS	-nUR117(aUS118-nUR(aUS-nUR(aUS-nURS:dURS
:�a[SURS35eXRS--nURS:dURS:�a[SURS35eXR-n[5nUR[RRURU[UR 5[UR"5[UR$5[UR&555 UR HunUR[(R"UR*55 UR[,RRUR.UR055 Mw /UR"QUR$QUR&Q7H�nUR[(R"UR*55 UR[2RRUR.UR0UR4[UR6555 URUR65 M� [9U5$)z(Converts the message into network bytes.r���zDNS message's id z is out of bounds.r�r�zDNS message's op_code r�r�r�r�r�r�z DNS message's reserved value of r�zDNS message's response_code )r�r�r�r�r�r�r�r�r�r��	bytearray�extendr�rriror�r�r�r�rrrrr rDrHr2rI)r$rr2r��rrs     r%r\�DNSMessage.packed�s����7�7�Q�;�$�'�'�E�/��0����	�9K�L�M�M����z�z��W��E��<�<�!��t�|�|�f�4��5�d�l�l�^�CU�V�W�W�
����#�#���$�$��W��E��?�?��V�O�E��!�!��V�O�E��#�#��V�O�E��=�=�1���
�
�� 5��2�4�=�=�/�AS�T��
�	���!�#�#������!�T�%7�%7�&�%@��.�t�/A�/A�.B�BT�U��
�	�#�#�#���{��������"�"������D�N�N�#��D�L�L�!��D�$�$�%��D�$�$�%�

�		119����H��K�K��)�)�(�-�-�8�9��K�K����,�,�X�]�]�H�O�O�L�M�'�H�D�L�L�G�4�#3�#3�G�d�6F�6F�G�B��K�K��)�)�"�'�'�2�3��K�K��%�%�*�*�2�7�7�B�I�I�r�v�v�s�2�7�7�|�T�
�
�K�K���� �H��T�{�r(c��URUR[R"UR5UR120URURUR[R"UR5[R"UR5URVs/sHoR5PM snURVs/sHo"R5PM snURVs/sHo"R5PM snUR Vs/sHo"R5PM snUR"S.nUR$(aUR$US'U$s snfs snfs snfs snf)zH121Converts the message into json for mitmweb.122Sync with web/src/flow.ts.123)r�r�r�r�r�r�r�r��status_coder�r�r�r�r�r�)r�r�rr+r�r�r�r�r�rr��http_equiv_status_coder�r,r�r�r�r�r�)r$r�rrus    r%r,�DNSMessage.to_json�s���'�'��Z�Z����t�|�|�4�$(�$=�$=��/�/�!%�!7�!7�#'�#;�#;�+�2�2�4�3E�3E�F�)�@�@��AS�AS�T�=A�^�^�L�^��*�*�,�^�L�/3�|�|�<�|��124�125��|�<�37�3C�3C�D�3C�R�J�J�L�3C�D�37�3C�3C�D�3C�R�J�J�L�3C�D��I�I�126�� �>�>�#�~�~�C����127��M��<��D��Ds�.E4�E9�E>�)Fc�F�U"USUS[R"US5USUSUSUSS[R"US	5US128Vs/sHn[R	U5PM snUSVs/sHn[129R	U5PM snUSVs/sHn[130R	U5PM snUS
Vs/sHn[131R	U5PM snS9
nUR
S5=n(aXClU$s snfs snfs snfs snf)z$Reconstruct a DNS message from JSON.r�r�r�r�r�r�r�rr�r�r�r�r�)
r�r�r�r�r�r�r�r�r�r�r�r�r�r�)rr0rrr3rDrmr�)r1r2r�r��tss     r%r3�DNSMessage.from_jsons#����D�z��w�-��%�%�d�9�o�6�!%�&<�!=��L�)�"�#6�7� $�%:� ;��(�1�1�$��2G�H�6:�;�6G�H�6G��x�)�)�!�,�6G�H�:>�y�/�J�/�Q�^�-�-�a�0�/�J�>B�=�>Q�R�>Q���1�1�!�4�>Q�R�>B�=�>Q�R�>Q���1�1�!�4�>Q�R�132�����+�&�&�2�&��N����I��J��R��Rs�D�;D�#D�D c��UR5n[R"SS5US'[R	U5$)Nrrr�)�	get_state�random�randintr��133from_state)r$�states  r%�copy�DNSMessage.copy.s3����� ���n�n�Q��.��d���$�$�U�+�+r(r5r6)r7rI)r7zQuestion | None)r7r)r�rr7r�)r�r�r7r�r")r�rIr�r�r7r�)r�zbytes | bytearrayr�rr�r�r7ztuple[int, DNSMessage]r8)r2rr7r�)r7r�)r:r;r<r=r>r?rr@r�r&r�r�r�r�r�r�rArer�r\r,r3r+rBr5r(r%r�r��sw��&,�m�m�I�&>�F�#�>��G�Q��K�A�
�L�������z������C��M�N���1����"�!�(�%�%�)�%�%�(�"�I�|�"�=�134����������135��136�137�(138�$�����OS�O�&�O�03�O�@L�O�	�O��O�b�1��1�f�2����*,r(r�c�h^�\rSrSr%SrS\S'SrS\S'SU4SjjrS
U4S	jjrSS139jr	Sr140U=r$)�DNSFlowi5zJA DNSFlow is a collection of DNS messages representing a single DNS query.r��requestNzDNSMessage | None�responsec�>�0[TU]5EURR5UR(aURR5S.E$SS.E$)N�r/r0)�superr&r/r0)r$�	__class__s �r%r&�DNSFlow.get_state=sY���141��g��!�142��|�|�-�-�/�59�]�]��
�
�/�/�1�143�	144�IM�145�	146r(c��>�[RURS55UlURS5=n(a[RU5OSUl[147TU]U5 g)Nr/r0)r�r)rr/r0r3�	set_state)r$r*�rr4s   �r%r7�DNSFlow.set_stateDsW���!�,�,�U�Y�Y�y�-A�B���.3�i�i�148�.C�)C��)C�J�!�!�!�$�$�	
�
�	���%� r(c�@�SUR<SUR<S3$)Nz<DNSFlow
149  request=z

150  response=z
151>r2r#s r%�__repr__�DNSFlow.__repr__Ks"��'����'7��t�}�}�FW�W\�]�]r(r2)r7�serializable.State)r*r=r7r�r6)r:r;r<r=�__doc__r@r0r&r7r;rB�
__classcell__)r4s@r%r.r.5s3���T�
���"&�H��&��152�!�^�^r(r.)(�153__future__rr�r�r'r>r��collections.abcr�dataclassesr�	ipaddressrr�typingrr	r154r�	mitmproxyr�mitmproxy.coretypesr
�mitmproxy.net.dnsrrrrrr�mitmproxy.net.dns.https_recordsrrr�SerializableDataclassrrDr��Flowr.r5r(r%�<module>rKs���"�
��
�
��$�!�!�!������,�%�*�+�&�,�#�7�;�8�155�156�|�1�1�157��158�<�yS�\�7�7�yS��yS�z�t,��3�3�t,��t,�n	^�d�i�i�^r(
codekingpro/portable-devtools · Team Ai