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/lib/python3.10/site-packages/paramiko/__pycache__/packet.cpython-310.pyc
o

�h�V�@s�dZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
ddlmZm
Z
mZmZmZmZmZddlmZddlmZmZddlmZd	d
�ZGdd�de�Zd
d�ZGdd�d�ZdS)z
Packet handling
�N)�HMAC)�util)�
linefeed_byte�
cr_byte_value�	MSG_NAMES�DEBUG�	xffffffff�	zero_byte�byte_ord)�u)�SSHException�ProxyCommandFailure)�MessagecCst|||���S�N)r�digest)�key�message�digest_class�r�E/usr/local/CyberPanel/lib/python3.10/site-packages/paramiko/packet.py�compute_hmac.src@seZdZdZdS)�NeedRekeyExceptionz1
    Exception indicating a rekey is needed.
    N)�__name__�
__module__�__qualname__�__doc__rrrrr2srcCs.d}t|j�turt|j�dkr|jd}|S�Nr)�type�args�tuple�len)�e�argrrr�	first_arg:s
r#c@s8eZdZdZedd�Zedd�Zedd�Zedd�Zdd�Z	e
dd��Zdd	�Zd
d�Z
dd
�Z		dBdd�Z	dCdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�ZdCd-d.�Zd/d0�Zd1d2�Z d3d4�Z!d5d6�Z"d7d8�Z#d9d:�Z$d;d<�Z%d=d>�Z&d?d@�Z'dAS)D�
Packetizerz9
    Implementation of the base SSH packet protocol.
    ��cCs�||_d|_d|_d|_d|_d|_t�|_d|_d|_	d|_
d|_d|_d|_
d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_t�|_t�|_d|_d|_d|_d|_d|_d|_t �!�|_"d|_#t$�$�|_%d|_&d|_'d|_(d|_)dS)NFr�)*�_Packetizer__socket�_Packetizer__logger�_Packetizer__closed�_Packetizer__dump_packets�_Packetizer__need_rekey�_Packetizer__init_count�bytes�_Packetizer__remainder�_initial_kex_done�_Packetizer__sent_bytes�_Packetizer__sent_packets�_Packetizer__received_bytes�_Packetizer__received_packets�$_Packetizer__received_bytes_overflow�&_Packetizer__received_packets_overflow�_Packetizer__block_size_out�_Packetizer__block_size_in�_Packetizer__mac_size_out�_Packetizer__mac_size_in�_Packetizer__block_engine_out�_Packetizer__block_engine_in�_Packetizer__sdctr_out�_Packetizer__mac_engine_out�_Packetizer__mac_engine_in�_Packetizer__mac_key_out�_Packetizer__mac_key_in� _Packetizer__compress_engine_out�_Packetizer__compress_engine_in� _Packetizer__sequence_number_out�_Packetizer__sequence_number_in�_Packetizer__etm_out�_Packetizer__etm_in�	threading�RLock�_Packetizer__write_lock�_Packetizer__keepalive_interval�time�_Packetizer__keepalive_last�_Packetizer__keepalive_callback�_Packetizer__timer�_Packetizer__handshake_complete�_Packetizer__timer_expired)�self�socketrrr�__init__QsL


zPacketizer.__init__cC�|jSr)r*�rRrrr�closed�szPacketizer.closedcC�
d|_dSr)rDrVrrr�reset_seqno_out��
zPacketizer.reset_seqno_outcCrXr)rErVrrr�reset_seqno_in�rZzPacketizer.reset_seqno_incCs
||_dS)z?
        Set the Python log object to use for logging.
        N)r))rR�logrrr�set_log�s
zPacketizer.set_logFcCsb||_||_||_||_||_||_d|_d|_||_|j	dO_	|j	dkr/d|_	d|_
dSdS)zd
        Switch outbound data cipher.
        :param etm: Set encrypt-then-mac from OpenSSH
        r��FN)r;r=r7r>r9r@r1r2rFr-r,)rR�block_engine�
block_size�
mac_engine�mac_size�mac_key�sdctr�etmrrr�set_outbound_cipher�s

�zPacketizer.set_outbound_ciphercCsh||_||_||_||_||_d|_d|_d|_d|_||_	|j
dO_
|j
dkr2d|_
d|_dSdS)zc
        Switch inbound data cipher.
        :param etm: Set encrypt-then-mac from OpenSSH
        rr%r_FN)r<r8r?r:rAr3r4r5r6rGr-r,)rRr`rarbrcrdrfrrr�set_inbound_cipher�s


�zPacketizer.set_inbound_ciphercC�
||_dSr)rB�rR�
compressorrrr�set_outbound_compressor�rZz"Packetizer.set_outbound_compressorcCrir)rCrjrrr�set_inbound_compressor�rZz!Packetizer.set_inbound_compressorcCsd|_|j��dS�NT)r*r(�closerVrrrro�szPacketizer.closecCrir�r+)rR�hexdumprrr�set_hexdump�rZzPacketizer.set_hexdumpcCrUrrprVrrr�get_hexdump��zPacketizer.get_hexdumpcCrUr)r:rVrrr�get_mac_size_in�rtzPacketizer.get_mac_size_incCrUr)r9rVrrr�get_mac_size_out�rtzPacketizer.get_mac_size_outcCrU)z�
        Returns ``True`` if a new set of keys needs to be negotiated.  This
        will be triggered during a packet read or write, so it should be
        checked after every read or write, or at least after every few.
        �r,rVrrr�
need_rekey�szPacketizer.need_rekeycCs||_||_t��|_dS)z�
        Turn on/off the callback keepalive.  If ``interval`` seconds pass with
        no data read from or written to the socket, the callback will be
        executed and the timer will be reset.
        N)rKrNrLrM)rR�interval�callbackrrr�
set_keepalive�szPacketizer.set_keepalivecCrXrn)rQrVrrr�
read_timer�rZzPacketizer.read_timercCs,|jst�t|�|j�|_|j��dSdS)z�
        Tells `Packetizer` that the handshake process started.
        Starts a book keeping timer that can signal a timeout in the
        handshake process.

        :param float timeout: amount of seconds to wait before timing out
        N)rOrH�Timer�floatr|�start)rR�timeoutrrr�start_handshake�s�zPacketizer.start_handshakecCs|jsdS|jr
dS|jS)aR
        Checks if the handshake has timed out.

        If `start_handshake` wasn't called before the call to this function,
        the return value will always be `False`. If the handshake completed
        before a timeout was reached, the return value will be `False`

        :return: handshake time out status, as a `bool`
        F)rOrPrQrVrrr�handshake_timed_outs

zPacketizer.handshake_timed_outcCs$|jr|j��d|_d|_dSdS)zF
        Tells `Packetizer` that the handshake has completed.
        FTN)rO�cancelrQrPrVrrr�complete_handshakes


�zPacketizer.complete_handshakec
Cs2t�}t|j�dkr|jd|�}|j|d�|_|t|�8}|dkr�d}|��r,t��z|j�|�}t|�dkr<t��||7}|t|�8}Wn1tjySd}Yn&tj	yx}zt
|�}|tjkrgd}n|j
rmt���WYd}~nd}~ww|r�|j
r�t��|r�t|�dkr�|jr�t��|��|dks#|S)a&
        Read as close to N bytes as possible, blocking as long as necessary.

        :param int n: number of bytes to read
        :return: the data read, as a `str`

        :raises:
            ``EOFError`` -- if the socket was closed before all the bytes could
            be read
        rNFT)r.r r/r��EOFErrorr(�recvrSr��errorr#�errno�EAGAINr*r,r�_check_keepalive)rR�n�check_rekey�out�got_timeout�xr!r"rrr�read_allsF
����zPacketizer.read_allc
Cst��|_d}t|�dkr�d}z|j�|�}Wn=tjy#d}Yn2tjyC}zt|�}|t	j
kr7d}nd}WYd}~nd}~wtyJ�tyTd}Ynw|r_d}|j
r^d}n|dkri|dkrid}|d7}|dkrtt��|t|�kr}	dS||d�}t|�dks
dS)NrFT����
r^)rLrMr r(�sendrSr�r�r#r�r�r
�	Exceptionr*r�)rRr��#iteration_with_zero_as_return_value�retry_writer�r!r"rrr�	write_allNsF

�����#zPacketizer.write_allcCsx|j}t|vr||�|�7}t|vs|�t�}||dd�|_|d|�}t|�dkr8|dtkr8|dd�}t|�S)z�
        Read a line from the socket.  We assume no data is pending after the
        line, so it's okay to attempt large reads.
        r^Nrr�)r/r�
_read_timeout�indexr rr)rRr��bufr�rrr�readlinevs�
zPacketizer.readlinecCs�|��}t|d�}|tvrt|}nd�|�}t|�}|j��z�|jdur,|�|�}|�|�}|j	rH|�
td�||��|�
tt�
|d��|jdurh|jra|dd�|j�|dd��}n	|j�|�}n|}|jdur�t�d|j�}||jr||n|}|t|j||j�d|j�7}|jdt@}	|	dkr�|js�td	��|	|_|�|�|jt|�7_|jd7_|j|jkp�|j|jk}
|
r�|j s�d
}|�
t|�|j|j��d|_!d|_"|�#�W|j�$�dSW|j�$�dSW|j�$�dS|j�$�w)zR
        Write a block of data using the current cipher, as an SSH block.
        r�${:x}NzWrite packet <{}>, length {}zOUT: ��>Ir^�/Sequence number rolled over during initial kex!z(Rekeying (hit {} packets, {} bytes sent))%�asbytesr
r�formatr rJ�acquirerB�
_build_packetr+�_logrr�
format_binaryr;rF�update�struct�packrDrr@r>r9rr0rr�r1r2�
REKEY_PACKETS�REKEY_BYTESr,r5r6�_trigger_rekey�release)rR�data�cmd�cmd_name�orig_len�packetr��packed�payload�next_seq�
sent_too_much�msgrrr�send_message�sr






�

�

���

�
�
�
�
zPacketizer.send_messagecCs�|j|jdd�}|jrVt�d|dd��d}||jd}|dd�|j|dd�}|j|jdd�}t�d|j|�|}t|j	||j
�d|j�}t�||�sTt
d	��|}|jdura|j�|�}|jrn|�tt�|d
��|jrt|}nPt�d|dd��d}|dd�}|t|�|jdkr�t
d��|�||jt|��}	|	d|t|��}|	|t|�d�}
|jdur�|j�|�}||}|jr�|�tt�|d
��|jdk�r|j�s|
d|j�}t�d|j|�|}t|j	||j
�d|j�}t�||��st
d	��t|d�}|d||�}|j�r |�td
�||��|jdu�r+|�|�}t|dd��}
|j|
_|jdt@}|dk�rK|j�sKt
d��||_||jd}|j|7_|jd7_|j�r�|j|7_|j d7_ |j |j!k�s�|j|j"k�r�t
d��n&|j|j#k�s�|j|j$k�r�d}|�t|�|j|j��d|_d|_ |�%�t|d�}|t&v�r�t&|}nd�|�}|j�r�|�td�|t|���||
fS)z�
        Only one thread should ever be in this function (no other locking is
        done).

        :raises: `.SSHException` -- if the packet is mangled
        :raises: `.NeedRekeyException` -- if the transport should rekey
        T)r�r�Nr�rFz>IIzMismatched MACzIN: zInvalid packet blockingr^z"Got payload ({} bytes, {} padding)r�z+Remote transport is ignoring rekey requestsz,Rekeying (hit {} packets, {} bytes received)r�zRead packet <{}>, length {})'r�r8rGr��unpackr:r�rErrAr?r�constant_time_bytes_eqrr<r�r+r�rr�r r
r�rCr�seqnorr0r3r4r,r5r6�REKEY_PACKETS_OVERFLOW_MAX�REKEY_BYTES_OVERFLOW_MAXr�r�r�r)rR�header�packet_size�	remainingr��mac�mac_payload�my_mac�leftoverr��post_packet�paddingr�r�r��raw_packet_size�errr�r�rrr�read_message�s���
��
�
��
����
�����


�zPacketizer.read_messagecCsJ|jdurdStt|�t�r|D]	}|j�||�qdS|j�||�dSr)r)�
issubclassr�listr\)rR�levelr��mrrrr�Ns
�zPacketizer._logcCsD|jr	|jr	|jrdSt��}||j|jkr |��||_dSdSr)rKr;r,rLrMrN)rR�nowrrrr�Ws���
�zPacketizer._check_keepalivecCsnt��}	z|j�d�}t|�dkrt��W|Stjy!Ynw|jr(t��t��}|||kr6t���q)NT�r)rLr(r�r r�rSr�r*)rRr�rr�r�rrrr�ds"���zPacketizer._read_timeoutcCs�|j}|jrdnd}d|t|�||}t�dt|�|d|�}||7}|js/|jdur7|t|7}|S|t�	|�7}|S)Nr�r'r_z>IBr^)
r7rFr r�r�r=r;r	�os�urandom)rRr��bsize�addlenr�r�rrrr�us�zPacketizer._build_packetcCrXrnrwrVrrrr��s
zPacketizer._trigger_rekeyN)FF)F)(rrrr�powr�r�r�r�rT�propertyrWrYr[r]rgrhrlrmrorrrsrurvrxr{r|r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr$AsR



1


�%
�

	0(B	
r$)rr�r�rSr�rHrL�hmacr�paramikor�paramiko.commonrrrrrr	r
�
paramiko.utilr�paramiko.ssh_exceptionrr
�paramiko.messagerrr�rr#r$rrrr�<module>s"$