Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/site-packages/paramiko/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/site-packages/paramiko/__pycache__/packet.cpython-38.pyc
U

P��g�^�@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�messageZdigest_class�r�</opt/cppython/lib/python3.8/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�tkr*t|j�dkr*|jd}|S�Nr)�type�args�tuple�len)�e�argrrr�	first_arg:s
r"c@s:eZdZdZedd�Zedd�Zedd�Zedd�Zdd�Z	e
dd��Zdd	�Zd
d�Z
dd
�ZdDdd�ZdEdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�ZdFd.d/�Zd0d1�Zd2d3�Z d4d5�Z!d6d7�Z"d8d9�Z#d:d;�Z$d<d=�Z%d>d?�Z&d@dA�Z'dBdC�Z(dS)G�
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|_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�_Packetizer__aead_out�_Packetizer__aead_in�_Packetizer__iv_out�_Packetizer__iv_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__QsT

zPacketizer.__init__cCs|jSr)r)�rUrrr�closed�szPacketizer.closedcCs
d|_dSr)rCrXrrr�reset_seqno_out�szPacketizer.reset_seqno_outcCs
d|_dSr)rDrXrrr�reset_seqno_in�szPacketizer.reset_seqno_incCs
||_dS)z?
        Set the Python log object to use for logging.
        N)r()rU�logrrr�set_log�szPacketizer.set_logFNc

Csj||_||_||_||_||_||_d|_d|_||_||_	|	|_
|jdO_|jdkrfd|_d|_dS)zd
        Switch outbound data cipher.
        :param etm: Set encrypt-then-mac from OpenSSH
        r��FN)
r:r<r6r=r8r?r0r1rErGrIr,r+)
rU�block_engine�
block_size�
mac_engine�mac_size�mac_keyZsdctr�etm�aeadZiv_outrrr�set_outbound_cipher�s
zPacketizer.set_outbound_cipherc		Csp||_||_||_||_||_d|_d|_d|_d|_||_	||_
||_|jdO_|jdkrld|_d|_
dS)zc
        Switch inbound data cipher.
        :param etm: Set encrypt-then-mac from OpenSSH
        rr$r_FN)r;r7r>r9r@r2r3r4r5rFrHrJr,r+)	rUr`rarbrcrdrerfZiv_inrrr�set_inbound_cipher�s 
zPacketizer.set_inbound_ciphercCs
||_dSr)rA�rUZ
compressorrrr�set_outbound_compressor�sz"Packetizer.set_outbound_compressorcCs
||_dSr)rBrirrr�set_inbound_compressor�sz!Packetizer.set_inbound_compressorcCsd|_|j��dS�NT)r)r'�closerXrrrrm�szPacketizer.closecCs
||_dSr�r*)rU�hexdumprrr�set_hexdump�szPacketizer.set_hexdumpcCs|jSrrnrXrrr�get_hexdump�szPacketizer.get_hexdumpcCs|jSr)r9rXrrr�get_mac_size_in�szPacketizer.get_mac_size_incCs|jSr)r8rXrrr�get_mac_size_out�szPacketizer.get_mac_size_outcCs|jS)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+rXrrr�
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)rNrQrOrP)rU�interval�callbackrrr�
set_keepalive�szPacketizer.set_keepalivecCs
d|_dSrl)rTrXrrr�
read_timerszPacketizer.read_timercCs(|js$t�t|�|j�|_|j��dS)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)rRrK�Timer�floatry�start)rU�timeoutrrr�start_handshakeszPacketizer.start_handshakecCs|js
dS|jrdS|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)rRrSrTrXrrr�handshake_timed_outs

zPacketizer.handshake_timed_outcCs |jr|j��d|_d|_dS)zF
        Tells `Packetizer` that the handshake has completed.
        FTN)rR�cancelrTrSrXrrr�complete_handshake#s
zPacketizer.complete_handshakec
Cs8t�}t|j�dkr>|jd|�}|j|d�|_|t|�8}|dk�r4d}|��rZt��z6|j�|�}t|�dkrzt��||7}|t|�8}Wndtjk
r�d}YnLtj	k
r�}z,t
|�}|tjkr�d}n|j
r�t��n�W5d}~XYnX|r>|j
�rt��|�r*t|�dk�r*|j�r*t��|��q>|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-rr.r�EOFErrorr'�recvrVr}�errorr"�errno�EAGAINr)r+r�_check_keepalive)rU�n�check_rekey�outZgot_timeout�xr r!rrr�read_all,s>


zPacketizer.read_allc
Cst��|_d}t|�dk�rd}z|j�|�}Wn�tjk
rJd}Ynjtjk
r�}z t|�}|t	j
krtd}nd}W5d}~XYn,tk
r��Yntk
r�d}YnX|r�d}|j
r�d}n|dkr�|dkr�d}|d7}|dkr�t��|t|�k�r�q||d�}qdS)NrFT����
r^)rOrPrr'�sendrVr}r�r"r�r�r
�	Exceptionr)r�)rUr�Z#iteration_with_zero_as_return_valueZretry_writer�r r!rrr�	write_all\s<


zPacketizer.write_allcCsr|j}t|kr||�|�7}q|�t�}||dd�|_|d|�}t|�dkrj|dtkrj|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�indexrrr)rUr}�bufr�rrr�readline�s
zPacketizer.readlinecCs@|dd�}t�|d�}|d}|�dd�}|dd�|}|S)N��bigr^r&r)�int�
from_bytes�to_bytes)rUZivZiv_counter_bZ
iv_counterZinc_iv_counterZinc_iv_counter_bZnew_ivrrr�_inc_iv_counter�szPacketizer._inc_iv_countercCs6|��}t|d�}|tkr&t|}n
d�|�}t|�}|j���z�|jdk	rZ|�|�}|�	|�}|j
r�|�td�||��|�tt
�|d��|jdk	�r|jr�|dd�|j�|dd��}nR|j�r|dd�|j�|j|dd�|dd��}|�|j�|_n|j�|�}n|}|jdk	�rr|j�srt�d|j�}||j�rN|n|}|t|j||j�d|j�7}|jdt@}	|	dk�r�|j�s�td	��|	|_|� |�|j!t|�7_!|j"d7_"|j"|j#k�p�|j!|j$k}
|
�r"|j%�s"d
}|�t|�|j"|j!��d|_&d|_'|�(�W5|j��XdS)zR
        Write a block of data using the current cipher, as an SSH block.
        r�${:x}NzWrite packet <{}>, length {}zOUT: r��>Ir^�/Sequence number rolled over during initial kex!z(Rekeying (hit {} packets, {} bytes sent)))Zasbytesr
r�formatrrM�acquire�releaserA�
_build_packetr*�_logrr�
format_binaryr:rE�updaterGZencryptrIr��struct�packrCrr?r=r8rr/rr�r0r1�
REKEY_PACKETS�REKEY_BYTESr+r4r5�_trigger_rekey)rU�data�cmd�cmd_nameZorig_len�packetr��packed�payload�next_seqZ
sent_too_much�msgrrr�send_message�s~






�
�

����

��zPacketizer.send_messagecCsL|j|jdd�}|jr�t�d|dd��d}||jd}|dd�|j|dd�}|j|jdd�}t�d|j|�|}t|j	||j
�d|j�}t�||�s�t
d	��|}|j�r&t�d|dd��d}|dd�}||jd|j}|dd�|j|dd�}|j�|j||�}|�|j�|_|jdk	�rF|j�sF|j�|�}|j�rb|�tt�|d
��|j�sr|j�rx|}n�t�d|dd��d}|dd�}	|t|	�|jdk�r�t
d��|�||jt|	��}
|
d|t|	��}|
|t|	�d�}|jdk	�r|j�|�}|	|}|j�r8|�tt�|d
��|jdk�r�|j�s�|j�s�|d|j�}t�d|j|�|}t|j	||j
�d|j�}t�||��s�t
d	��t|d�}|d||�}
|j�r�|�td
�||��|jdk	�r�|�|
�}
t|
dd��}|j|_|jdt@}|dk�r4|j�s4t
d��||_||jd}|j |7_ |j!d7_!|j"�r�|j#|7_#|j$d7_$|j$|j%k�s�|j#|j&k�r�t
d��nL|j!|j'k�s�|j |j(k�r�d}|�t|�|j!|j ��d|_#d|_$|�)�t|
d�}|t*k�rt*|}n
d�|�}|j�rD|�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�r7rFr��unpackr9r�rDrr@r>rZconstant_time_bytes_eqrrHr;ZdecryptrJr�r�r*r�rr�rr
r�rBrZseqnorr/r2r3r+r4r5�REKEY_PACKETS_OVERFLOW_MAX�REKEY_BYTES_OVERFLOW_MAXr�r�r�r)rU�headerZpacket_size�	remainingr��macZmac_payloadZmy_macZaad�leftoverr�Zpost_packet�paddingr�r�r�Zraw_packet_size�errr�r�rrr�read_message�s�������������
���
��
��


�zPacketizer.read_messagecCsH|jdkrdStt|�t�r6|D]}|j�||�q n|j�||�dSr)r(�
issubclassr�listr\)rU�levelr��mrrrr�}s
zPacketizer._logcCs@|jr|jr|jrdSt��}||j|jkr<|��||_dSr)rNr:r+rOrPrQ)rU�nowrrrr��s���zPacketizer._check_keepalivecCstt��}z&|j�d�}t|�dkr(t��WqpWntjk
rDYnX|jrRt��t��}|||krt���q|S)N�r)rOr'r�rr�rVr}r))rUr}r|r�r�rrrr��s
zPacketizer._read_timeoutcCs�|j}|js|jrdnd}d|t|�||}t�dt|�|d|�}||7}|jsd|jdkrr|t|7}n|t	�
|�7}|S)Nr�r&r_z>IBr^)r6rErGrr�r�r<r:r	�os�urandom)rUr�ZbsizeZaddlenr�r�rrrr��szPacketizer._build_packetcCs
d|_dSrlrtrXrrrr��szPacketizer._trigger_rekey)FFFN)FFN)F))rrrr�powr�r�r�r�rW�propertyrYrZr[r]rgrhrjrkrmrprqrrrsrurxryr~rr�r�r�r�r�r�r�r�r�r�r�r�rrrrr#AsZ



7

�
)�
"
	
0(J	
r#)rr�r�rVr�rKrO�hmacrZparamikorZparamiko.commonrrrrrr	r
Z
paramiko.utilrZparamiko.ssh_exceptionrr
Zparamiko.messagerrr�rr"r#rrrr�<module>s $	

F1le Man4ger