o
    Žõ±jÝ  ã                   @   s(   d dl Z G dd„ dƒZG dd„ dƒZdS )é    Nc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚFileSectionc                 C   s   || _ |t|ƒ | _|| _d S ©N)ÚstartposÚlenÚendposÚdata)Úselfr   r   © r	   ú’/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pypykatz/alsadecryptor/asbmfile.pyÚ__init__   s   
zFileSection.__init__c                 C   s    || j kr|| | jkrdS dS )NTF)r   r   ©r   ÚstartÚsizer	   r	   r
   Úinrange
   s   zFileSection.inrangec                 C   s   | j || j || j | … S r   )r   r   r   r	   r	   r
   Úread   s   zFileSection.readN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r	   r	   r	   r
   r      s    r   c                   @   sJ   e Zd Zdd„ Zddd„Zddd„Zd	d
„ Zdd„ Zdd„ Zddd„Z	dS )ÚSMBFileReaderc                 C   s   || _ g | _d| _d S )Nr   )ÚsmbfileÚcacheÚcurpos)r   r   r	   r	   r
   r      s   
zSMBFileReader.__init__Úrc                 Ã   s   �| j j||d�I d H S )N)Úmode)r   Úopen)r   Ú
connectionr   r	   r	   r
   r      s   €zSMBFileReader.openéÿÿÿÿc                 Ã   sú   �|dkrdS |dkr.| j D ]}| | j|¡du r-| | j|¡}|  |d¡I d H  |  S qt| jj| jjƒ}d}t	t
t || ¡ƒƒD ]}| j |¡I d H \}}|d urW|‚||7 }qDt| j|ƒ}| j  |¡ | | j|¡}|  | j| d¡I d H  |S )Nr   ó    r   Té   )r   r   r   r   ÚseekÚminr   Úmaxreadsizer   ÚrangeÚintÚmathÚceilr   Úappend)r   ÚnÚsectionr   ÚreadsizeÚbufferÚ_Úerrr	   r	   r
   r      s,   €
û
zSMBFileReader.readc                 Ã   ó   �| j  ¡ I d H S r   )r   Úclose©r   r	   r	   r
   r.   ?   ó   €zSMBFileReader.closec                 Ã   r-   r   )r   Údeleter/   r	   r	   r
   r1   B   r0   zSMBFileReader.deletec                 C   s   | j S r   )r   r/   r	   r	   r
   ÚtellE   s   zSMBFileReader.tellr   c                 Ã   s6   �| j  ||¡I d H \}}|d ur|‚| j  ¡ | _d S r   )r   r   r2   r   )r   r'   Úwhencer+   r,   r	   r	   r
   r   H   s
   €zSMBFileReader.seekN)r   )r   )r   )
r   r   r   r   r   r   r.   r1   r2   r   r	   r	   r	   r
   r      s    

#r   )r$   r   r   r	   r	   r	   r
   Ú<module>   s   