o
    jF%                     @   sT  d dl Z d dlmZ d dlmZmZ d dlmZmZmZm	Z	m
Z
mZ d dlmZ G dd deZG dd	 d	e
ZG d
d dZG dd de
ZG dd dZG dd de
ZG dd dZG dd de
ZG dd dZG dd de
ZG dd dZG dd de
ZG dd dZG d d! d!e
ZG d"d# d#ZG d$d% d%e
ZG d&d' d'ZdS )(    N)hexdump)KatzSystemArchitectureWindowsMinBuild)LSA_UNICODE_STRINGULONGPVOIDPWSTRPOINTER
LIST_ENTRY)PackageTemplatec                       s(   e Zd Z fddZedd Z  ZS )CredmanTemplatec                    s"   t  d d | _d | _d | _d S )NCredman)super__init__	signaturefirst_entry_offset
list_entry)self	__class__ /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pypykatz/lsadecryptor/packages/credman/templates.pyr      s   
zCredmanTemplate.__init__c                 C   s   t  }| jtjkr-| jtjjk rt|_	n<tjj| j  kr#tj
jk r)n nt|_	n't|_	n#| jtjjk r8t|_	ntjj| j  krGtj
jk rMn nt|_	nt|_	|d|j	 |S )Nr   )r   architecturer   X64buildnumberr   	WIN_VISTAvalueKIWI_CREDMAN_LIST_ENTRY_5r   WIN_7KIWI_CREDMAN_LIST_ENTRY_60KIWI_CREDMAN_LIST_ENTRYKIWI_CREDMAN_LIST_ENTRY_5_X86KIWI_CREDMAN_LIST_ENTRY_60_X86KIWI_CREDMAN_LIST_ENTRY_X86log_template)sysinfotemplater   r   r   get_template   s   ""zCredmanTemplate.get_template)__name__
__module____qualname__r   staticmethodr'   __classcell__r   r   r   r   r      s    r   c                          e Zd Z fddZ  ZS )PKIWI_CREDMAN_LIST_ENTRY_5_X86c                       t  |t d S N)r   r   r!   r   readerr   r   r   r   ,      z'PKIWI_CREDMAN_LIST_ENTRY_5_X86.__init__r(   r)   r*   r   r,   r   r   r   r   r.   +       r.   c                   @      e Zd Zdd ZdS )r!   c                 C   s   | | d  |  t|j| _|  t|| _t|j| _t|j| _	t
|| _t
|| _t|| _t|j| _|  t|| _t|| _t|| _t
|| _t
|| _t|| _t|j| _|  t|| _d S N    movetellalignr   r   cbEncPasswordr   encPasswordunk0unk1r   unk2unk3UserName
cbUserNamePKIWI_CREDMAN_LIST_ENTRY_5FlinkBlinkr   server1unk6unk7userunk8server2r1   r   r   r   r   0   s*   









z&KIWI_CREDMAN_LIST_ENTRY_5_X86.__init__Nr(   r)   r*   r   r   r   r   r   r!   /       r!   c                       r-   )PKIWI_CREDMAN_LIST_ENTRY_60_X86c                    r/   r0   )r   r   r"   r1   r   r   r   r   K   r3   z(PKIWI_CREDMAN_LIST_ENTRY_60_X86.__init__r4   r   r   r   r   rP   J   r5   rP   c                   @   r6   )r"   c                 C   s  | | d  |  t|j| _|  t|| _t|j| _t|j| _	t
|| _t
|| _t|| _t|j| _|  t|| _t|| _t|| _t
|| _t|| _t
|| _t
|| _t
|| _t
|| _t
|| _t|| _t|j| _|  t|| _d S r7   r:   r;   r<   r   r   r=   r   r>   r?   r@   r   rA   rB   rC   rD   PKIWI_CREDMAN_LIST_ENTRY_60rF   rG   r   typeunk5rH   rI   rJ   rL   unk9unk10rK   unk11rM   r1   r   r   r   r   O   s4   














z'KIWI_CREDMAN_LIST_ENTRY_60_X86.__init__NrN   r   r   r   r   r"   N   rO   r"   c                       r-   )PKIWI_CREDMAN_LIST_ENTRY_X86c                    r/   r0   )r   r   r#   r1   r   r   r   r   s   r3   z%PKIWI_CREDMAN_LIST_ENTRY_X86.__init__r4   r   r   r   r   rX   r   r5   rX   c                   @   r6   )r#   c                 C     | | d  |  t|j| _|  t|| _t|j| _t|j| _	t
|| _t
|| _t|| _t|j| _|  t|| _t|| _t|| _t|| _t
|| _t|| _t
|| _t
|| _t
|| _t
|| _t
|| _t|| _t|j| _|  t|| _d S r7    r:   r;   r<   r   r   r=   r   r>   r?   r@   r   rA   rB   rC   rD   PKIWI_CREDMAN_LIST_ENTRYrF   rG   r
   unk4r   rS   rT   rH   rI   rJ   rL   rU   rV   rK   rW   rM   r1   r   r   r   r   w   s6   















z$KIWI_CREDMAN_LIST_ENTRY_X86.__init__NrN   r   r   r   r   r#   v   rO   r#   c                       r-   )rE   c                    r/   r0   )r   r   r   r1   r   r   r   r      r3   z#PKIWI_CREDMAN_LIST_ENTRY_5.__init__r4   r   r   r   r   rE      r5   rE   c                   @   r6   )r   c                 C   s   | | d  |  t|j| _|  t| _t|j| _t|j| _	t
|| _t
|| _t|| _t|j| _|  t| _t| _t| _t
|| _t
|| _t|| _t|j| _|  t| _d S N8   r9   r1   r   r   r   r      s*   






z"KIWI_CREDMAN_LIST_ENTRY_5.__init__NrN   r   r   r   r   r      rO   r   c                       r-   )rR   c                    r/   r0   )r   r   r   r1   r   r   r   r      r3   z$PKIWI_CREDMAN_LIST_ENTRY_60.__init__r4   r   r   r   r   rR      r5   rR   c                   @   r6   )r   c                 C   s
  | | d  |  t|j| _|  t|| _t|j| _t|j| _	t
|| _t
|| _t|| _t|j| _|  t| _t| _t|| _t
|| _t|| _t
|| _t
|| _t
|| _t
|| _t
|| _t|| _t|j| _|  t|| _d S r]   rQ   r1   r   r   r   r      s4   












z#KIWI_CREDMAN_LIST_ENTRY_60.__init__NrN   r   r   r   r   r      rO   r   c                       r-   )r[   c                    r/   r0   )r   r   r    r1   r   r   r   r      r3   z!PKIWI_CREDMAN_LIST_ENTRY.__init__r4   r   r   r   r   r[      r5   r[   c                   @   r6   )r    c                 C   rY   r]   rZ   r1   r   r   r   r      s6   















z KIWI_CREDMAN_LIST_ENTRY.__init__NrN   r   r   r   r   r       rO   r    c                       r-   )PKIWI_CREDMAN_LIST_STARTERc                    r/   r0   )r   r   KIWI_CREDMAN_LIST_STARTERr1   r   r   r   r     r3   z#PKIWI_CREDMAN_LIST_STARTER.__init__r4   r   r   r   r   r_     r5   r_   c                   @   r6   )r`   c                 C   s    t || _|  t|| _d S r0   )r   r?   r<   r[   startr1   r   r   r   r     s   
z"KIWI_CREDMAN_LIST_STARTER.__init__NrN   r   r   r   r   r`   
  rO   r`   c                       r-   )PKIWI_CREDMAN_SET_LIST_ENTRYc                    r/   r0   )r   r   KIWI_CREDMAN_SET_LIST_ENTRYr1   r   r   r   r     r3   z%PKIWI_CREDMAN_SET_LIST_ENTRY.__init__r4   r   r   r   r   rb     r5   rb   c                   @   r6   )rc   c                 C   s@   t || _t || _t|j| _|  t|| _t|| _	d S r0   )
rb   rF   rG   r   r   r?   r<   r_   list1list2r1   r   r   r   r     s   


z$KIWI_CREDMAN_SET_LIST_ENTRY.__init__NrN   r   r   r   r   rc     rO   rc   )iopypykatz.commons.commonr   r   r   pypykatz.commons.win_datatypesr   r   r   r   r	   r
   %pypykatz.lsadecryptor.package_commonsr   r   r.   r!   rP   r"   rX   r#   rE   r   rR   r   r[   r    r_   r`   rb   rc   r   r   r   r   <module>   s,    $#"$