o
    Žõ±j…  ã                   @   s¢   d dl mZ d dlmZmZ d dlmZ G dd„ deƒZG dd„ dƒZG dd	„ d	ƒZ	G d
d„ deƒZ
G dd„ deƒZG dd„ deƒZddeƒ ideƒ idœiZdS )é    )ÚPOINTER)ÚKatzSystemArchitectureÚWindowsMinBuild)ÚPackageTemplatec                   @   s,   e Zd Zdd„ Zedd„ ƒZedd„ ƒZdS )ÚLsaTemplate_NT5c                 C   s"   d | _ d | _d | _d | _d | _d S ©N)Ú	signatureÚfeedbackÚrandomkey_ptrÚDESXKey_ptrÚ
key_struct©Úself© r   ú™/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pypykatz/lsadecryptor/lsa_template_nt5.pyÚ__init__   s
   
zLsaTemplate_NT5.__init__c                 C   s   t dƒ‚)Nz+Template guessing is not applicable for NT5)Ú	Exception©Úsysinfor   r   r   Úget_template_brute   s   z"LsaTemplate_NT5.get_template_brutec                 C   sh   | j tjkr| jtjjkrtd d d S tdƒ‚| j tj	kr2| jtjjkr.td d d S tdƒ‚d S )NÚnt5Úx86Ú1zNT 6 is in another castle!Úx64)
Úarchitecturer   ÚX86Úbuildnumberr   Ú	WIN_VISTAÚvalueÚ	templatesr   ÚX64r   r   r   r   Úget_template   s   üzLsaTemplate_NT5.get_templateN)Ú__name__Ú
__module__Ú__qualname__r   Ústaticmethodr   r!   r   r   r   r   r      s    
r   c                   @   ó   e Zd Zdd„ Zdd„ ZdS )ÚSYMCRYPT_NT5_DES_EXPANDED_KEYc                 C   sT   g | _ tdƒD ] }tj| d¡ddd�}tj| d¡ddd�}| j  ||g¡ qd S )Né   é   ÚlittleF)Úsigned)ÚroundKeyÚrangeÚintÚ
from_bytesÚreadÚappend)r   ÚreaderÚ_ÚrÚlr   r   r   r   (   s   ýz&SYMCRYPT_NT5_DES_EXPANDED_KEY.__init__c                 C   s>   d}t | jƒD ]\}}|d|t|d ƒt|d ƒf 7 }q|S )NzSYMCRYPT_NT5_DES_EXPANDED_KEY
z%s L: %s R: %s
r   é   )Ú	enumerater,   Úhex)r   ÚtÚiÚxr   r   r   Ú__str__/   s   $z%SYMCRYPT_NT5_DES_EXPANDED_KEY.__str__N©r"   r#   r$   r   r<   r   r   r   r   r'   '   s    r'   c                   @   r&   )ÚSYMCRYPT_NT5_DESX_EXPANDED_KEYc                 C   s&   |  d¡| _|  d¡| _t|ƒ| _d S )Né   )r0   ÚinputWhiteningÚoutputWhiteningr'   ÚdesKey©r   r2   r   r   r   r   6   s   z'SYMCRYPT_NT5_DESX_EXPANDED_KEY.__init__c                 C   s>   d}|d| j  ¡  7 }|d| j ¡  7 }|dt| jƒ 7 }|S )Nz SYMCRYPT_NT5_DESX_EXPANDED_KEY
zinputWhitening : %s
zoutputWhitening : %s
zdesKey : %s
)r@   r8   rA   ÚstrrB   )r   r9   r   r   r   r<   ;   s
   z&SYMCRYPT_NT5_DESX_EXPANDED_KEY.__str__Nr=   r   r   r   r   r>   5   s    r>   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚPSYMCRYPT_NT5_DESX_EXPANDED_KEYc                    s   t ƒ  |t¡ d S r   )Úsuperr   r>   rC   ©Ú	__class__r   r   r   C   s   z(PSYMCRYPT_NT5_DESX_EXPANDED_KEY.__init__)r"   r#   r$   r   Ú__classcell__r   r   rG   r   rE   B   s    rE   c                   @   ó   e Zd Zdd„ ZdS )ÚLSA_x64_nt5_1c                 C   ó>   t  | ¡ d| _d| _d| _d| _d| _d| _d| _t	| _
d S )Nr   s
   3Û‹ÃHƒÄ [ÃÚ5i½ÿÿÿiïÿÿÿiÝÿÿÿé   )r   r   Úarchr   Únt_majorÚfeedback_ptr_offsetÚrandomkey_ptr_offsetÚdesx_key_ptr_offsetÚold_feedback_offsetrE   Úkey_struct_ptrr   r   r   r   r   G   ó   

zLSA_x64_nt5_1.__init__N©r"   r#   r$   r   r   r   r   r   rK   F   ó    rK   c                   @   rJ   )ÚLSA_x86_nt5_1c                 C   rL   )Nr   rM   s	   �   jP£é   é	   éüÿÿÿrN   )r   r   rO   rP   r   rQ   rR   rS   rT   rE   rU   r   r   r   r   r   S   rV   zLSA_x86_nt5_1.__init__NrW   r   r   r   r   rY   R   rX   rY   r   r   )r   r   N)Úminidump.win_datatypesr   Úpypykatz.commons.commonr   r   Ú%pypykatz.lsadecryptor.package_commonsr   r   r'   r>   rE   rK   rY   r   r   r   r   r   Ú<module>   s    ÿÿüÿ