HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberPanel/lib64/python3.10/site-packages/DNS/__pycache__/Lib.cpython-310.pyc
o

��h�c�@s�dZddlZddlZddlmZddlmZddlmZddlmZddlZddl	m
Z
zddlZWn
ey?ddl
ZYnwd	Zd
ZGdd�de
�ZGd
d�de
�ZddlmZddlmZddlmZmZmZmZdd�Zdd�Zdd�Zdd�Zdd�Zdd�Z dd�Z!d d!�Z"Gd"d#�d#�Z#Gd$d%�d%�Z$d&d'�Z%Gd(d)�d)e#�Z&d*d+�Z'Gd,d-�d-e$�Z(Gd.d/�d/e(�Z)Gd0d1�d1e)�Z*Gd2d3�d3e)�Z+Gd4d5�d5e$�Z,Gd6d7�d7e#�Z-Gd8d9�d9e$�Z.Gd:d;�d;e#�Z/Gd<d=�d=e$�Z0Gd>d?�d?e&e/e-�Z1Gd@dA�dAe(e0e.�Z2GdBdC�dCe)e0e.�Z3GdDdE�dEe*e0e.�Z4GdFdG�dGe,e0e.�Z5GdHdI�dIe+e0e.�Z6dJdK�Z7GdLdM�dM�Z8dNdO�Z9dPdQ�Z:e;dRk�rKe%�dSdS)Su>
 $Id$

 This file is part of the py3dns project.
 Homepage: https://launchpad.net/py3dns

 This code is covered by the standard Python License. See LICENSE for details.

Changes for Python3 port © 2011-13 Scott Kitterman <scott@kitterman.com>

 Library code. Largely this is packers and unpackers for various types.
�N�)�Type)�Class)�Opcode)�Status)�DNSErrorF�idnac@�eZdZdS)�UnpackErrorN��__name__�
__module__�__qualname__�rr�=/usr/local/CyberPanel/lib/python3.10/site-packages/DNS/Lib.pyr
/�r
c@r	)�	PackErrorNrrrrrr0rr)�pack)�unpack)�	inet_ntoa�	inet_aton�	inet_ntop�AF_INET6cC�
td|�S)N�!H��struct_pack��nrrr�	pack16bit8�
rcCr�N�!Lrrrrr�	pack32bit;r r#cC�td|�dS)Nrr��
struct_unpack��srrr�unpack16bit>�r)cCr$)Nr"rr%r'rrr�unpack32bitAr*r+cCstdt|��dS)aDConvert a string IPv4 address into an unsigned integer.

    Examples::
    >>> addr2bin('127.0.0.1')
    2130706433

    >>> addr2bin('127.0.0.1') == socket.INADDR_LOOPBACK
    1

    >>> addr2bin('255.255.255.254')
    4294967294L

    >>> addr2bin('192.168.0.1')
    3232235521L

    Unlike old DNS.addr2bin, the n, n.n, and n.n.n forms for IP addresses
    are handled as well::
    >>> addr2bin('10.65536')
    167837696
    >>> 10 * (2 ** 24) + 65536
    167837696

    >>> addr2bin('10.93.512')
    173867520
    >>> 10 * (2 ** 24) + 93 * (2 ** 16) + 512
    173867520
    r"r)r&r)�addrrrr�addr2binDsr-cCsttd|��Sr!)rrrrrr�bin2addrcr*r.cCs
tt|�S�N)rrrrrr�	bin2addr6fr r0cCstd|�\}}|d>|BS)Nz!QQ�@r%)�str�h�lrrr�	bin2long6isr5c@s`eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�PackerzE packer base class. supports basic byte/16bit/32bit/addr/string/name cCs(tjrd}ntj}td|�|_i|_dS)N�utf8�)�DNS�
LABEL_UTF8�LABEL_ENCODING�bytes�buf�index��self�encrrr�__init__rs

zPacker.__init__cCs|jSr/)r=�r@rrr�getbufysz
Packer.getbufcCs<t|�dkr
td��tjrd}ntj}|jt||�|_dS)Nrzone character expectedr7)�len�	TypeErrorr9r:r;r=r<)r@�crArrr�addbyte{s
zPacker.addbytecCs(tjrd}ntj}|jt||�|_dS�Nr7)r9r:r;r=r<)r@�abytesrArrr�addbytes�szPacker.addbytescC�|jtt|��|_dSr/)r=r<r�r@rrrr�add16bit��zPacker.add16bitcCrLr/)r=r<r#rMrrr�add32bit�rOzPacker.add32bitcCs t|�}|jtt|��|_dSr/)r-r=r<r#)r@r,rrrr�addaddr�szPacker.addaddrcCs@t|�dkrtddt|���|�tt|���|�|�dS)N�zCan't encode string of length z
%s (> 255))rE�
ValueErrorrH�chrrK)r@r(rrr�	addstring�s
�zPacker.addstringc	Cs�g}|�d�D]
}|sq|�|�qg}tt|��D] }d�||d��}|��}|�|�||jvr:|j|}nqt|�}d}t|j�}g}	tj	rNd}
ntj
}
td|
�}t|�D]\}||}z|�|
�}Wnt
y�tj	sr�|�d�s{d|}|�|
�}Ynwt|�}
|
dkr�td��|t|�dkr�|	�|||t|�f�ntd�td	�|t|
g�|}qZ|r�|t|d
B�}n|td|
�}|j||_|	D]	\}}||j|<q�dS)N�.r7r8u�?zlabel too longi�?zDNS.Lib.Packer.addname:zwarning: pointer too bigi��)�split�append�rangerE�join�upperr>r=r9r:r;r<�encode�UnicodeEncodeError�
startswithr�printr)r@�name�nlist�label�keys�i�key�pointer�offsetr>rAr=�jr�valuerrr�addname�s^


�


��zPacker.addnamecCs�t|j���}|��td�|D]
}td||j|f�qtd�d}tdt|j�dd�D]G}|j||d�dkrE|sBt�d}q0d}td|�|j||d�D]}d|krbd	krknntd
|�qVtdt|��qVt�q0td�dS)Nz(----------------------------------------z%20s %3drr�z**z%4d� �z %cz%2d)	�listr>re�sortrar[rEr=�ord)r@rerg�spacerfrGrrr�dump�s(
zPacker.dumpN)rr
r�__doc__rBrDrHrKrNrPrQrUrlrtrrrrr6ps8r6c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�UnpackercCs||_d|_dS)Nr)r=ri�r@r=rrrrB�s
zUnpacker.__init__cCs4|jt|j�krtd��|j|j}|jd|_|S)NzRan off end of datar)rirEr=r
)r@rGrrr�getbyte�s
zUnpacker.getbytecCs:|j|j|j|�}t|�|krtd��|j||_|S)Nznot enough data left)r=rirEr
)r@rr(rrr�getbytes�szUnpacker.getbytescC�t|�d��S)Nrm)r)ryrCrrr�get16bit�r*zUnpacker.get16bitcCrz)N�)r+ryrCrrr�get32bit�r*zUnpacker.get32bitcCs$tjrd}ntj}tt|���|�SrI)r9r:r;r<r.r}r?rrr�getaddr�szUnpacker.getaddrcCs
|�d�S)N�)ryrCrrr�getaddr6r zUnpacker.getaddr6cCs|�|���Sr/)ryrxrCrrr�	getstringr*zUnpacker.getstringc	Cs�|��}|r/|d@dkr/|��}|}|d>|Bd@}|j}z
||_|��}W||_|S||_w|dkr5dStjr;d}ntj}t|�|�|�}|��}|sN|S|d|S)N��i�?��rr8r7rV)rxri�getnamer9r:r;r2ry)	r@rf�drjrh�save_offset�domainrA�remainsrrrr�s,
�zUnpacker.getnameN)rr
rrBrxryr{r}r~r�r�r�rrrrrv�srvcCs�d}tt|��}ddl}|��|D]2}t�}|�d�|�d�|�d�|�d�|�d�|�d�|�d	�|�d
�|�d�q|��t	|�
�d�t	t|�
�|d
�d�t|j
�}|��|�d�|��|�d�|��|�d�|��|�d�|��|��|D](}t|j
�}|��|�d�|��|�d�|��|�d�|��|�d�|��f	}q�|��t	|�
�d�t	t|�
�|d
�d�dS)Ni�	rz192.168.0.1z********************z
f.ISI.ARPAz********zFoo.F.isi.arpaz******************�arpaz**************************r8zms total for packingr|zms per packing�r���zms total for unpackingzms per unpacking)rpr[�timing�startr6rQrKrl�finishra�milli�roundrvr=r~ryr�)�N�Rr�rf�p�u�resrrr�
testpacker$sX













�	r�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!S)"�RRpackercCst�|�d|_dSr/)r6rB�rdstartrCrrrrBYs

zRRpacker.__init__cGsh|�|�|�|�|�|�|�|�|r%|dd�r td��|d}nd}|�|�t|j�|_dS)Nrz
too many argsr)rlrNrPrFrEr=r�)r@rb�RRtype�klass�ttl�rest�rdlengthrrr�addRRheader\s





zRRpacker.addRRheadercCs�t|j|jd|j��}|t|j�|jkrdS|j|jd�}|j}d}z$|jd|jd�|_|�t|��|j||_d}W|sI||_dSdS|sP||_w)Nrmrr)r)r=r�rErN)r@r��rdata�save_buf�okrrr�
patchrdlengthhszRRpacker.patchrdlengthcCs|jdur	|��d|_dSr/)r�r�rCrrr�endRRvs

zRRpacker.endRRcCs|jdur	|��t�|�Sr/)r�r�r6rDrCrrrrDzs
zRRpacker.getbufcC�(|�|tj||�|�|�|��dSr/)r�r�CNAMErlr�)r@rbr�r��cnamerrr�addCNAME~�
zRRpacker.addCNAMEcCs2|�|tj||�|�|�|�|�|��dSr/)r�r�HINFOrUr�)r@rbr�r��cpu�osrrr�addHINFO��

zRRpacker.addHINFOcCs2|�|tj||�|�|�|�|�|��dSr/)r�r�MXrNrlr�)r@rbr�r��
preference�exchangerrr�addMX�r�zRRpacker.addMXcCr�r/)r�r�NSrlr�)r@rbr�r��nsdnamerrr�addNS�r�zRRpacker.addNScCr�r/)r�r�PTRrlr�)r@rbr�r��ptrdnamerrr�addPTR�r�zRRpacker.addPTRcCsd|�|tj||�|�|�|�|�|�|�|�|�|�|�|�|	�|�|
�|��dSr/)r�r�SOArlrPr�)r@rbr�r��mname�rname�serial�refresh�retry�expire�minimumrrr�addSOA�s






zRRpacker.addSOAcC�P|�|tj||�t|�tust|�tur|g}|D]}|�|�q|��dSr/�r�r�TXT�typer<r2rUr��r@rbr�r��tlist�txtdatarrr�addTXT��zRRpacker.addTXTcCr�r/r�r�rrr�addSPF�r�zRRpacker.addSPFcCr�r/)r�r�ArQr�)r@rbr�r��addressrrr�addA�r�z
RRpacker.addAcCsB|�|tjtj|�|�|�|�t|��|�|�|�	�dSr/)
r�r�WKSr�INrQrHrTrKr�)r@rbr�r��protocol�bitmaprrr�addWKS�s


zRRpacker.addWKScCst�r/)�NotImplementedErrorrCrrr�addSRV�szRRpacker.addSRVN)rr
rrBr�r�r�rDr�r�r�r�r�r�r�r�r�r�r�rrrrr�Xs"r�cCsl|dkr
|d|fS|dkr|d|dfS|dkr"|d|dfS|dkr.|d|dfS|d	|dfS)
N�<z
%d secondsiz
%d minutesi�Qz%d hoursi�:	z%d daysz%d weeksr)�secondsrrr�
prettyTime�sr�c@sxeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZeZ
dd�Zdd�Zdd�ZdS)�
RRunpackercC�t�||�d|_dSr/�rvrB�rdendrwrrrrB��
zRRunpacker.__init__cCsB|��}|��}|��}|��}|��}|j||_|||||fSr/)r�r{r}rir��r@rb�rrtyper�r�r�rrr�getRRheader�szRRunpacker.getRRheadercC�|j|jkr
td��dS�Nzend of RR not reached�rir�r
rCrrrr����zRRunpacker.endRRcC�|��Sr/�r�rCrrr�getCNAMEdata��zRRunpacker.getCNAMEdatacCs.tjrd}ntj}t|��|�t|��|�fSrI)r9r:r;r2r�r?rrr�getHINFOdata�szRRunpacker.getHINFOdatacCs|��|��fSr/�r{r�rCrrr�	getMXdata��zRRunpacker.getMXdatacCr�r/r�rCrrr�	getNSdata�r�zRRunpacker.getNSdatacCr�r/r�rCrrr�
getPTRdata�r�zRRunpacker.getPTRdatac
CsT|��|��d|��fdt|���dt|���dt|���dt|���fS)N)r�)zrefresh )r�)r�)r�)r�r}r�rCrrr�
getSOAdata�s�zRRunpacker.getSOAdatacCs2g}|j|jkr|�t|����|j|jks|Sr/)rir�rZr<r��r@r�rrr�
getTXTdata��
�zRRunpacker.getTXTdatacC� tjrd}ntj}|���|�SrI�r9r:r;r~�decoder?rrr�getAdata��zRRunpacker.getAdatacCs0|��}t|���}|�|j|j�}|||fSr/)r~rrrxryr�ri)r@r�r�r�rrr�
getWKSdata�s
zRRunpacker.getWKSdatacCs,|��}|��}|��}|��}||||fS)zP
        _Service._Proto.Name TTL Class SRV Priority Weight Port Target
        r�)r@�priority�weight�port�targetrrr�
getSRVdata�s
zRRunpacker.getSRVdataN)rr
rrBr�r�r�r�r�r�r�r�r��
getSPFdatar�r�r�rrrrr��sr�c@�$eZdZdd�Zdd�Zdd�ZdS)�RRunpackerDefaultcCr�r/)r�rBr�rwrrrrB
r�zRRunpackerDefault.__init__cCs:tjrd}ntj}t�|���|��}t�t	d|�d�S�Nr7z!Ir)
r9r:r;�socketrr~r��	ipaddress�IPv4Addressr&�r@rA�xrrrr�
s
zRRunpackerDefault.getAdatacCst�t|����Sr/)r�IPv6Addressr0r�rCrrr�getAAAAdataszRRunpackerDefault.getAAAAdataN�rr
rrBr�rrrrrrsrc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�RRunpackerTextcC�t�||�dSr/�rrBrwrrrrBr�zRRunpackerText.__init__cCr�rIr�r?rrrr�r�zRRunpackerText.getAdatacC�t|���Sr/)r0r�rCrrrr �zRRunpackerText.getAAAAdatacCsFtjrd}ntj}g}|j|jkr!|�t|��|��|j|jks|SrI)r9r:r;rir�rZr2r�)r@rAr�rrrr�"s�zRRunpackerText.getTXTdataN)rr
rrBr�rr�rrrrr
s
r
c@r�)�RRunpackerIntegercCrr/rrwrrrrB-r�zRRunpackerInteger.__init__cCs4tjrd}ntj}t�|���|��}td|�dSr)r9r:r;rrr~r�r&rrrrr�/s
zRRunpackerInteger.getAdatacCr
r/)r5r�rCrrrr6rzRRunpackerInteger.getAAAAdataNr	rrrrr,src@s0eZdZdd�Zdd�Zdd�Zdd�ZeZd	S)
�RRunpackerBinarycCr�r/r�rwrrrrB:r�zRRunpackerBinary.__init__cCsH|��}|��}|��}|��}|��}||_|j||_|||||fSr/)r�r{r}r�rir�r�rrrr�=szRRunpackerBinary.getRRheadercCr�r�r�rCrrrr�Fr�zRRunpackerBinary.endRRcCs2g}|j|jkr|�|�|j��|j|jks|Sr/)rir�rZryr�r�rrrr�Ir�zRRunpackerBinary.getTXTdataN)rr
rrBr�r�r�r�rrrrr9s	rc@�eZdZdd�ZdS)�HpackercCs�|�|�|�|d@d>|d@d>B|d@d>B|d@d>B|d@d>B|d@d>B|d@d>B|	d@B�|�|
�|�|�|�|�|�|
�dS)	Nr���
�	r��r|)rN)r@�id�qr�opcode�aa�tc�rd�ra�z�rcode�qdcount�ancount�nscount�arcountrrr�	addHeaderSs 
&
�
�
�
��


zHpacker.addHeaderN)rr
rr%rrrrrR�rc@r)�	Hunpackerc
Cs�|��}|��}|d?d@|d?d@|d?d@|d?d@|d?d@|d?d@|d?d@|d	?d@f\}}}}}}}	}
|��}|��}|��}
|��}||||||||	|
|||
|f
S)
Nrrrrrr�rr|r)r{)r@r�flagsrrrrrrrr r!r"r#r$rrr�	getHeader_s$







�	�zHunpacker.getHeaderN)rr
rr)rrrrr'^r&r'c@r)�QpackercCs"|�|�|�|�|�|�dSr/)rlrN)r@�qname�qtype�qclassrrr�addQuestionvs

zQpacker.addQuestionN)rr
rr.rrrrr*ur&r*c@r)�	QunpackercCs|��|��|��fSr/)r�r{rCrrr�getQuestion|szQunpacker.getQuestionN)rr
rr0rrrrr/{r&r/c@r	)�MpackerNrrrrrr1��r1c@r	)�	MunpackerNrrrrrr3��r3c@r	)�MunpackerDefaultNrrrrrr5�r4r5c@r	)�
MunpackerTextNrrrrrr6�r2r6c@r	)�MunpackerBinaryNrrrrrr7�r2r7c@r	)�MunpackerIntegerNrrrrrr8�r2r8c
Cstd�|��\
}}}}}}}}}	}
}}}
td|�td||||||||	f�|r/td�|	r7td|	�td|
|||
f�t|
�D]}td|�t|�qEt|�D]}td|�t|�qVt|�D]}td	|�t|�qgt|
�D]}td
|�t|�qxdS)NzHEADER:zid=%d,z=qr=%d, opcode=%d, aa=%d, tc=%d, rd=%d, ra=%d, z=%d, rcode=%d,z*** response truncated! ***z *** nonzero error code! (%d) ***z0  qdcount=%d, ancount=%d, nscount=%d, arcount=%dzQUESTION %d:z
ANSWER %d:zAUTHORITY RECORD %d:zADDITIONAL RECORD %d:)rar)r[�dumpQ�dumpRR)r�rrrrrrrrr r!r"r#r$rfrrr�dumpM�s4��
�



�r;c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�	DnsResultcCs2i|_g|_g|_g|_g|_||_|�|�dSr/)�header�	questions�answers�	authority�
additional�args�storeM)r@r�rBrrrrB�szDnsResult.__init__cCs�ddl}td|jd|jdf�d}|jdr|d}|j}td|�td	�td
|d|d|d
f�tt|fdd�d��}tdd�|�|d|d|d|df�td�|jD]}td|d|d|df�qat�td�|jD]}td|dt	|d�|d|d f�q}t�td!�|j
D]}td|dt	|d�|d|d f�q�t�td"�|jD]}td|dt	|d�|d|d f�q�t�d#|jvr�td$|jd#�td%|jd&�td'|�|����dS)(Nrz; <<>> PDG.py 1.0 <<>> %s %srbr,r8rzrecurs z;; options: z;; got answer:z+;; ->>HEADER<<- opcode %s, status %s, id %dr�statusrcSs||Sr/r)rr3rrr�<lambda>�sz DnsResult.show.<locals>.<lambda>)rrrrrz4;; flags: %s; Ques: %d, Ans: %d, Auth: %d, Addit: %drnr!r"r#r$z
;; QUESTIONS:z!;;      %s, type = %s, class = %sr+�qtypestr�	qclassstrz;; ANSWERS:z%-20s    %-6s  %-6s  %sr��typename�dataz;; AUTHORITY RECORDS:z;; ADDITIONAL RECORDS:�elapsedz;; Total query time: %d msecz;; To SERVER: %s�serverz;; WHEN: %s)
�timerarBr=rp�filterr\r>r?�reprr@rA�ctime)r@rL�optr3r(�q�arrr�show�s\�
��

�

�

�

�
zDnsResult.showcCs8|��\
|jd<|jd<|jd<|jd<|jd<|jd<|jd<|jd<|jd	<|jd
<|jd<|jd<|jd
<t�|jd�|jd<t�|jd	�|jd<t|jd
�D]}|j�|�	|��qUt|jd�D]}|j
�|�|��qht|jd�D]}|j�|�|��q{t|jd
�D]}|j
�|�|��q�dS)Nrrrrrrrrr r!r"r#r$�	opcodestrrD)r)r=rrTr�	statusstrr[r>rZ�storeQr?�storeRRr@rA)r@r�rfrrrrC�s"��zDnsResult.storeMcCsFi}|��\|d<|d<|d<t�|d�|d<t�|d�|d<|S)Nr+r,r-rFrG)r0r�typestrr�classstr)r@r�rQrrrrV�s
zDnsResult.storeQcCs�i}|��\|d<|d<|d<|d<|d<t�|d�|d<t�|d�|d<d|d}t||�r<t||��|d	<|S|�|d�|d	<|S)
Nrbr��classr�r�rHrY�	get%sdatarI)r�rrXrrY�hasattr�getattrry)r@r��rr�rrrrWs&
�zDnsResult.storeRRN)rr
rrBrSrCrVrWrrrrr<�s	)r<c	Cs4|��\}}}td||t�|�|t�|�f�dS)Nz%qname=%s, qtype=%d(%s), qclass=%d(%s))r0rarrXrrY)r�r+r,r-rrrr9s

�
�r9c	Csv|��\}}}}}t�|�}td||||t�|�|f�d|}t||�r1tdt||���dStd|�|��dS)Nz*name=%s, type=%d(%s), class=%d(%s), ttl=%dr[z  formatted rdata:z  binary rdata:)	r�rrXrarrYr\r]ry)r�rbr�r�r�r�rHr�rrrr:s

��
r:�__main__)<ru�typesrr8rrrrr9�Baserr�ImportError�ipaddrr:r;r
r�structrrrr&rrrrrr#r)r+r-r.r0r5r6rvr�r�r�r�rr
rrrr'r*r/r1r3r5r6r7r8r;r<r9r:rrrrr�<module>sp�x<4cA
a

�