o
    Žõ±j   ã                   @   sX   d dl Z d dlZd dlmZ G dd„ dƒZG dd„ dƒZG dd„ dƒZG d	d
„ d
ƒZdS )é    N)Úfiletime_to_dtc                   @   ó4   e Zd Zdd„ Zedd„ ƒZedd„ ƒZdd„ Zd	S )
ÚLSA_SECRET_BLOBc                 C   ó   d | _ d | _d | _d S ©N)ÚlegnthÚunkÚsecret©Úself© r   ú˜/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pypykatz/registry/security/structures.pyÚ__init__   ó   
zLSA_SECRET_BLOB.__init__c                 C   ó   t  t | ¡¡S r   )r   Úfrom_bufferÚioÚBytesIO©Údatar   r   r   Ú
from_bytes   ó   zLSA_SECRET_BLOB.from_bytesc                 C   s<   t ƒ }tj|  d¡ddd�|_|  d¡|_|  |j¡|_|S )Né   ÚlittleF©Úsignedé   )r   Úintr   Úreadr   r   r	   ©ÚbuffÚskr   r   r   r      s
   zLSA_SECRET_BLOB.from_bufferc                 C   ón   d}| j D ]/}t| j | tƒr't| j | ƒD ]\}}|d||t|ƒf 7 }qq|d|t| j | ƒf 7 }q|S )Nz== LSA_SECRET_BLOB ==
ú   %s: %s: %sú	%s: %s 
©Ú__dict__Ú
isinstanceÚlistÚ	enumerateÚstr©r   ÚtÚkÚiÚitemr   r   r   Ú__str__   ó   
ÿzLSA_SECRET_BLOB.__str__N©Ú__name__Ú
__module__Ú__qualname__r   Ústaticmethodr   r   r0   r   r   r   r   r   
   s    

r   c                   @   r   )
Ú
LSA_SECRETc                 C   s"   d | _ d | _d | _d | _d | _d S r   )ÚversionÚ
enc_key_idÚenc_algoÚflagsr   r
   r   r   r   r   )   s
   
zLSA_SECRET.__init__c                 C   r   r   )r7   r   r   r   r   r   r   r   r   0   r   zLSA_SECRET.from_bytesc                 C   sh   t ƒ }tj|  d¡ddd�|_|  d¡|_tj|  d¡ddd�|_tj|  d¡ddd�|_|  ¡ |_|S )Nr   r   Fr   é   )	r7   r   r   r   r8   r9   r:   r;   r   r   r   r   r   r   4   s   
zLSA_SECRET.from_bufferc                 C   r"   )Nz== LSA_SECRET ==
r#   r$   r%   r+   r   r   r   r0   ?   r1   zLSA_SECRET.__str__Nr2   r   r   r   r   r7   (   s    


r7   c                   @   r   )
ÚLSA_SECRET_XPc                 C   r   r   )r   r8   r	   r
   r   r   r   r   J   r   zLSA_SECRET_XP.__init__c                 C   r   r   )r=   r   r   r   r   r   r   r   r   O   r   zLSA_SECRET_XP.from_bytesc                 C   sH   t ƒ }tj|  d¡ddd�|_tj|  d¡ddd�|_|  |j¡|_|S )Nr   r   Fr   )r=   r   r   r   r   r8   r	   r   r   r   r   r   S   s
   zLSA_SECRET_XP.from_bufferc                 C   r"   )Nz== LSA_SECRET_XP ==
r#   r$   r%   r+   r   r   r   r0   \   r1   zLSA_SECRET_XP.__str__Nr2   r   r   r   r   r=   I   s    

r=   c                   @   r   )
Ú	NL_RECORDc                 C   s”   d | _ d | _d | _d | _d | _d | _d | _d | _d | _d | _	d | _
d | _d | _d | _d | _d | _d | _d | _d | _d | _d | _d | _d | _d | _d S r   )Ú
UserLengthÚDomainNameLengthÚEffectiveNameLengthÚFullNameLengthÚLogonScriptNameÚProfilePathLengthÚHomeDirectoryLengthÚHomeDirectoryDriveLengthÚUserIdÚPrimaryGroupIdÚ
GroupCountÚlogonDomainNameLengthÚunk0Ú	LastWriteÚRevisionÚSidCountÚFlagsÚunk1ÚLogonPackageLengthÚDnsDomainNameLengthÚUPNÚIVÚCHÚEncryptedDatar
   r   r   r   r   h   s0   
zNL_RECORD.__init__c                 C   r   r   )r>   r   r   r   r   r   r   r   r   ‚   r   zNL_RECORD.from_bytesc              
   C   sb  t ƒ }tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_	tj|  d¡ddd�|_
tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_|  d¡|_|  d¡|_|  ¡ |_z	t|jƒ|_W |S  t�y0 } z
d |_W Y d }~|S d }~ww )Né   r   Fr   r   é   r<   )r>   r   r   r   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   r   Ú	Exception)r    ÚnlÚer   r   r   r   †   sB   
ý€ýzNL_RECORD.from_bufferc                 C   r"   )Nz== NL_RECORD ==
r#   r$   r%   r+   r   r   r   r0   ©   r1   zNL_RECORD.__str__Nr2   r   r   r   r   r>   g   s    

"r>   )Úenumr   Úpypykatz.commons.filetimer   r   r7   r=   r>   r   r   r   r   Ú<module>   s   !