o
    jT                     @   sN   d dl mZmZ d dlmZ d dlmZ dd Zdd Z	dd	 Z
dddZdS )    )DESexpand_DES_key)pbkdf2)md4c                 C   s   | d u s| dkrt dS d}|  }|d}|dd}|dd }|dd  }tt|}tt|}||}	||}
|	|
 }|S )	N  aad3b435b51404eeaad3b435b51404ees   KGS!@#$%ascii       r      )bytesfromhexupperencodeljustr   r   encrypt)password	LM_SECRETpassword_uppercasepassword_uppercase_bytespassword_uppercase_bytes_paddedpassword_chunk_1password_chunk_2des_chunk_1des_chunk_2des_first_halfdes_second_halflm_hash r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pypykatz/utils/crypto/winhash.pyLM   s   



r    c                 C   s4   | d u s| dkrt dS | d}t|}| S )Nr    31d6cfe0d16ae931b73c59d7e0c089c0	utf-16-le)r   r   r   MD4digest)r   password_bytesr   r   r   r   NT   s
   

r&   c                 C   s2   t |}|  }|d}t|| }| }|S )Nr"   )r&   lowerr   r#   r$   )usernamer   nt_hash_of_passwordusername_lowerusername_bytesr   dccr   r   r   MSDCC#   s   
r-    (  c                 C   s@   t | |}|  }|d}t|||d}d|| | f }|S )Nr"      z$DCC2$%s#%s#%s)r-   r'   r   r   hex)r(   r   
iterations
msdcc_hashr*   r+   msdcc_v2hashcat_formatr   r   r   MSDCCv2-   s   

r5   N)r.   )unicrypto.symmetricr   r   unicrypto.pbkdf2r   unicrypto.hashlibr   r#   r    r&   r-   r5   r   r   r   r   <module>   s   
