HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/samba/tests/__pycache__/dns_packet.cpython-310.pyc
o

�/a��@s�dZddlZddlZddlZddlZddlmZmZddlm	Z	dd�Z
ejdZejd�d	ejd
��Z
dZdd
�ZGdd�de	�ZGdd�de�ZGdd�de�ZdS)ztSanity tests for DNS and NBT server parsing.

We don't use a proper client library so we can make improper packets.
�N)�dns�nbt)�TestCaseccs�	tdd�D]}|Vqq)NT�i��)�range)�i�r�8/usr/lib/python3/dist-packages/samba/tests/dns_packet.py�_msg_id!s
��r
�	SERVER_IP�SERVER�.�REALMg�?cCsJg}|ddd�}|D]}|�|d?d�|�|d@d�qt|�S)zEEven RFC 1002 uses distancing quotes when calling this "compression".s                   N���A�)�append�bytes)�chars�out�crrr	�encode_netbios_bytes,src@sDeZdZe�Zdd�Zdd�Zdd�Zdd	d
�Zdd�Z	d
d�Z
dS)�TestDnsPacketBasecCs8td�D]}|��}|rdSqtddt�d��dS)N�(z'the server is STILL unresponsive after z seconds)r�_known_good_query�print�TIMEOUT)�selfr�okrrr	�tearDown9s�zTestDnsPacketBase.tearDownc	Cs0|dd�}t�d|�\}}}}}}d|d@iS)N��!6H�rcoder)�struct�unpack)	r�data�header�id�flags�n_q�n_a�n_rec�n_extarrr	�decode_replyBs��zTestDnsPacketBase.decode_replyc	Cs�t�dt|j�dt|�ddd�}t�dd|jd�}g}|D]'}t|t�r-|�d��	d�}n|}|D]
}|�
dt|�|f�q1|�
|�q|d	�|�S)
a�Create a query packet containing one query record.

        *names* is either a single string name in the usual dotted
        form, or a list of names. In the latter case, each name can
        be a dotted string or a list of byte components, which allows
        dots in components. Where I say list, I mean non-string
        iterable.

        Examples:

        # these 3 are all the same
        "example.com"
        ["example.com"]
        [[b"example", b"com"]]

        # this is three names in the same request
        ["example.com",
         [b"example", b"com", b"..!"],
         (b"first component", b" 2nd component")]
        r"�rz!BHHr�utf8�.s%c%s�)r$�pack�next�msg_id�len�qtype�
isinstance�str�encode�splitr�join)r�namesr'�tail�encoded_bits�name�bits�brrr	�construct_queryJs,��
z!TestDnsPacketBase.construct_queryrNcCs~t|t�r|g}|�|�}t�tjtj�}|�||j�t�|gggt	�\}}}|�
�||gkr=|��}|�|d�dSdS)N�the server is unresponsive)
r8r9rC�socket�AF_INET�
SOCK_DGRAM�sendto�server�selectr�closer�
assertTrue)rr=�expected_rcode�packet�s�r�_rrrr	�_test_queryys


�zTestDnsPacketBase._test_queryc
Cs�|jddkr
t}tj}n	td�dg}tj}|�|g�}t�tj	tj
�}|�||j�t�|gggt
�\}}}||gkrB|��dS|�d�\}}|��|�|�d}	||	kS)Nr�5snxdomainFir#)rI�SERVER_NAMEr�DNS_RCODE_OKrr�
NBT_RCODE_NAMrCrErFrGrHrJrrK�recvfromr.)
rr@rMrNrOrPrQr&�addrr#rrr	r�s 
z#TestDnsPacketBase._known_good_querycCsBd}t�tjtj�}|�||j�|��|��}|�|d�dS)Nr2rD)rErFrGrHrIrKrrL)rrNrOrrrr	�_test_empty_packet�sz$TestDnsPacketBase._test_empty_packet)rN)�__name__�
__module__�__qualname__r
r5r r.rCrRrrYrrrr	r6s	
/rc@s:eZdZedfZdZddd�Zdd�Zdd	�Zd
d�Z	dS)
�TestDnsPacketsrSrNcCs|g|}|j|g|d�dS)N�rM)rR�r�label�nrMr@rrr	�_test_many_repeated_components�s

�z-TestDnsPackets._test_many_repeated_componentscC�d}|�|d�dS�Ns?...............................................................��rb�rr`rrr	�test_127_very_dotty_components��z-TestDnsPackets.test_127_very_dotty_componentscCrc�Ns?x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.xrerfrgrrr	�test_127_half_dotty_components�riz-TestDnsPackets.test_127_half_dotty_componentscC�|��dS�N�rY�rrrr	�test_empty_packet��z TestDnsPackets.test_empty_packetrm)
rZr[r\rrIr7rbrhrkrprrrr	r]�s
r]c@sBeZdZedfZdZdd�Zddd�Zdd	�Zd
d�Z	dd
�Z
dS)�TestNbtPackets�� cOs�t|t�r|g}g}|D]'}t|t�r|�d��d�}n|}t|d�g}|�|dd��|�|�q|j|g|�Ri|��dS)Nr0r1rr)r8r9r:r;r�extendrrR)rr=�args�kwargs�	nbt_namesr@rA�encodedrrr	�_test_nbt_encode_query�s

z%TestNbtPackets._test_nbt_encode_queryNcCs*|g|}t|�|d<|j|g|d�dS)Nrr^)rrRr_rrr	rb�s


�z-TestNbtPackets._test_many_repeated_componentscCrcrdrfrgrrr	rh�riz-TestNbtPackets.test_127_very_dotty_componentscCrcrjrfrgrrr	rk�riz-TestNbtPackets.test_127_half_dotty_componentscCrlrmrnrorrr	rp�rqz TestNbtPackets.test_empty_packetrm)rZr[r\rrIr7rzrbrhrkrprrrr	rr�s
rr)�__doc__�osr$rErJ�samba.dcerpcrr�samba.testsrr
�environrrTrrrr]rrrrrr	�<module>s

w