o
    XzjÓ  ã                   @   sN   d dl Z ddlmZ ddlmZ ddlmZ G dd„ dƒZG d	d
„ d
eƒZdS )é    Né   )ÚAbridgedPacketCodec)ÚObfuscatedConnectioné   )Ú
AESModeCTRc                   @   s4   e Zd ZdZdd„ Zedd„ ƒZdd„ Zdd	„ ZdS )
ÚObfuscatedIONc                 C   s,   |j | _ |j| _|  |j¡\| _| _| _d S ©N)Ú_readerÚ_writerÚinit_headerÚpacket_codecÚheaderÚ_encryptÚ_decrypt)ÚselfÚ
connection© r   úd/var/www/kodo/tsheker/venv/lib/python3.10/site-packages/telethon/network/connection/tcpobfuscated.pyÚ__init__   s   
þzObfuscatedIO.__init__c           
      C   sà   d}	 t  d¡}|d dkr|d d… |vr|dd… dkrnqt|ƒ}|d	d
d… }t|dd… ƒ}t|dd… ƒ}t|d d… ƒ}t|dd… ƒ}t||ƒ}t||ƒ}	| j|dd…< | t|ƒ¡dd… |dd…< |||	fS )N)s   PVrGs   GET s   POSTs   îîîîTé@   r   éï   é   é   s       é7   é   éÿÿÿÿé(   é8   é    é0   é<   )ÚosÚurandomÚ	bytearrayÚbytesr   Úobfuscate_tagÚencrypt)
r   ÚkeywordsÚrandomÚrandom_reversedÚencrypt_keyÚ
encrypt_ivÚdecrypt_keyÚ
decrypt_ivÚ	encryptorÚ	decryptorr   r   r   r      s&   
û


zObfuscatedIO.init_headerc                 Ã   s   �| j  | j |¡I d H ¡S r   )r   r&   r	   Úreadexactly)r   Únr   r   r   r0   /   s   €zObfuscatedIO.readexactlyc                 C   s   | j  | j |¡¡ d S r   )r
   Úwriter   r&   )r   Údatar   r   r   r2   2   s   zObfuscatedIO.write)	Ú__name__Ú
__module__Ú__qualname__r   r   Ústaticmethodr   r0   r2   r   r   r   r   r   	   s    
r   c                   @   s   e Zd ZdZeZeZdS )ÚConnectionTcpObfuscatedzî
    Mode that Telegram defines as "obfuscated2". Encodes the packet
    just like `ConnectionTcpAbridged`, but encrypts every message with
    a randomly generated key using the AES-CTR mode so the packets are
    harder to discern.
    N)r4   r5   r6   Ú__doc__r   Úobfuscated_ior   r   r   r   r   r   r8   6   s    r8   )	r!   Útcpabridgedr   r   r   Úcryptor   r   r8   r   r   r   r   Ú<module>   s    -