o
    Žõ±jú  ã                   @   sØ   d dl mZmZmZ d dlmZmZmZ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dS )é    )ÚKatzSystemArchitectureÚWindowsMinBuildÚWindowsBuild)	ÚULONGÚLUIDÚKIWI_GENERIC_PRIMARY_CREDENTIALÚPOINTERÚDWORDÚPVOIDÚPSIDÚGUIDÚDWORD64)ÚPackageTemplatec                       s(   e Zd Z‡ fdd„Zedd„ ƒZ‡  ZS )ÚCloudapTemplatec                    s"   t ƒ  d¡ d | _d | _d | _d S )NÚCloudap)Ú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/cloudap/templates.pyr      s   
zCloudapTemplate.__init__c                 C   s’   t ƒ }| jtjjkrd S | jtjkr&d|_d|_	t
|_| jtjjkr%t|_n| jtjkr6d|_d|_	t
|_n
td| j| jf ƒ‚| d|j¡ |S )Ns   D‹D9Bi÷ÿÿÿs   ‹19ruiøÿÿÿzECould not identify template! Architecture: %s sysinfo.buildnumber: %sr   )r   Úbuildnumberr   ÚWIN_10_1903ÚvalueÚarchitecturer   ÚX64r   r   ÚPKIWI_CLOUDAP_LOGON_LIST_ENTRYr   Ú#PKIWI_CLOUDAP_LOGON_LIST_ENTRY_21H2ÚX86Ú	ExceptionÚlog_template)ÚsysinfoÚtemplater   r   r   Úget_template   s"   €zCloudapTemplate.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_CLOUDAP_CACHE_UNKc                    ó   t ƒ  |t¡ d S ©N)r   r   ÚKIWI_CLOUDAP_CACHE_UNK©r   Úreaderr   r   r   r   &   ó   z PKIWI_CLOUDAP_CACHE_UNK.__init__©r(   r)   r*   r   r,   r   r   r   r   r.   %   ó    r.   c                   @   ó   e Zd Zdd„ ZdS )r1   c                 C   sD   t |ƒ| _t |ƒ| _t |ƒ| _t |ƒj| _t|ƒ| _| d¡| _	d S )Né@   )
r	   Úunk0Úunk1Úunk2r   ÚunkSizer   ÚguidÚreadÚunkr2   r   r   r   r   *   s   



zKIWI_CLOUDAP_CACHE_UNK.__init__N©r(   r)   r*   r   r   r   r   r   r1   )   ó    r1   c                       r-   )ÚPKIWI_CLOUDAP_CACHE_LIST_ENTRYc                    r/   r0   )r   r   ÚKIWI_CLOUDAP_CACHE_LIST_ENTRYr2   r   r   r   r   4   r4   z'PKIWI_CLOUDAP_CACHE_LIST_ENTRY.__init__r5   r   r   r   r   rB   3   r6   rB   c                   @   r7   )rC   c                 C   s  t |ƒ| _t |ƒ| _t|ƒ| _| ¡  t|ƒ| _t|ƒ| _t|ƒ| _	t|ƒ| _
t|ƒ| _t|ƒ| _t|ƒ| _t|ƒ| _t|ƒ| _t|ƒ| _t|ƒ| _t|ƒ| _| d¡| _| ¡  t|ƒj| _t|ƒ| _t|ƒ| _t|ƒ| _t|ƒ| _t|ƒ| _t|ƒ| _t|ƒj| _| ¡  t|ƒ| _ d S )Né‚   )!rB   ÚFlinkÚBlinkr	   r9   Úalignr
   ÚLockListr:   r;   Úunk3Úunk4Úunk5Úunk6Úunk7Úunk8Úunk9Ú	unkLogin0Ú	unkLogin1r>   Útonamer   r   ÚSidÚunk10Úunk11Úunk12Úunk13r.   ÚtoDetermineÚunk14ÚcbPRTÚPRTr2   r   r   r   r   8   s8   




















z&KIWI_CLOUDAP_CACHE_LIST_ENTRY.__init__Nr@   r   r   r   r   rC   7   rA   rC   c                       r-   )r    c                    r/   r0   )r   r   ÚKIWI_CLOUDAP_LOGON_LIST_ENTRYr2   r   r   r   r   W   r4   z'PKIWI_CLOUDAP_LOGON_LIST_ENTRY.__init__r5   r   r   r   r   r    V   r6   r    c                   @   r7   )r\   c                 C   sV   t |ƒ| _t |ƒ| _t|ƒ| _t|ƒ| _t|ƒj| _t	|ƒ| _
t	|ƒ| _t|ƒ| _d S r0   )r    rE   rF   r	   r9   r:   r   r   ÚLocallyUniqueIdentifierr   r;   rI   rB   Ú
cacheEntryr2   r   r   r   r   [   s   





z&KIWI_CLOUDAP_LOGON_LIST_ENTRY.__init__Nr@   r   r   r   r   r\   Z   rA   r\   c                       r-   )r!   c                    r/   r0   )r   r   Ú"KIWI_CLOUDAP_LOGON_LIST_ENTRY_21H2r2   r   r   r   r   f   r4   z,PKIWI_CLOUDAP_LOGON_LIST_ENTRY_21H2.__init__r5   r   r   r   r   r!   e   r6   r!   c                   @   r7   )r_   c                 C   sr   t |ƒ| _t |ƒ| _t|ƒ| _t|ƒ| _t|ƒ| _t|ƒj| _	t|ƒ| _
| ¡  t|ƒ| _t|ƒ| _t|ƒ| _d S r0   )r!   rE   rF   r	   r9   r:   r;   r   r   r]   rI   rG   r   rJ   rK   rB   r^   r2   r   r   r   r   j   s   







z+KIWI_CLOUDAP_LOGON_LIST_ENTRY_21H2.__init__Nr@   r   r   r   r   r_   i   rA   r_   N)Úpypykatz.commons.commonr   r   r   Úpypykatz.commons.win_datatypesr   r   r   r   r	   r
   r   r   r   Ú%pypykatz.lsadecryptor.package_commonsr   r   r.   r1   rB   rC   r    r\   r!   r_   r   r   r   r   Ú<module>   s    , 
