o
    Žõ±jy  ã                   @   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                       ó(   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/alsadecryptor/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                       r   )ÚPKIWI_CLOUDAP_CACHE_UNKc                    ó   t ƒ  ¡  d S ©N©r   r   r   r   r   r   r   %   ó   z PKIWI_CLOUDAP_CACHE_UNK.__init__c                 Ã   ó,   �t ƒ }|  ¡ |_|  ¡ I d H |_t|_|S r1   )r/   ÚtellÚlocationÚ	read_uintr   ÚKIWI_CLOUDAP_CACHE_UNKÚ	finaltype©ÚreaderÚpr   r   r   Úload(   ó   €
zPKIWI_CLOUDAP_CACHE_UNK.load©r*   r+   r,   r   r-   r=   r.   r   r   r   r   r/   $   ó    r/   c                   @   ó    e Zd Zdd„ Zedd„ ƒZdS )r8   c                 C   s(   d | _ d | _d | _d | _d | _d | _d S r1   )Úunk0Úunk1Úunk2ÚunkSizeÚguidÚunkr   r   r   r   r   1   s   
zKIWI_CLOUDAP_CACHE_UNK.__init__c                 Ã   sx   �t ƒ }t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_	|  
d¡I d H |_|S )Né@   )r8   r	   r=   rB   rC   rD   Ú	loadvaluerE   r   rF   ÚreadrG   ©r;   Úresr   r   r   r=   9   s   €zKIWI_CLOUDAP_CACHE_UNK.loadN©r*   r+   r,   r   r-   r=   r   r   r   r   r8   0   s    r8   c                       r   )ÚPKIWI_CLOUDAP_CACHE_LIST_ENTRYc                    r0   r1   r2   r   r   r   r   r   F   r3   z'PKIWI_CLOUDAP_CACHE_LIST_ENTRY.__init__c                 Ã   r4   r1   )rN   r5   r6   r7   r   ÚKIWI_CLOUDAP_CACHE_LIST_ENTRYr9   r:   r   r   r   r=   I   r>   z#PKIWI_CLOUDAP_CACHE_LIST_ENTRY.loadr?   r   r   r   r   rN   E   r@   rN   c                   @   rA   )rO   c                 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 | _d S r1   )ÚFlinkÚBlinkrB   ÚLockListrC   rD   Úunk3Úunk4Úunk5Úunk6Úunk7Úunk8Úunk9Ú	unkLogin0Ú	unkLogin1ÚtonameÚSidÚunk10Úunk11Úunk12Úunk13ÚtoDetermineÚunk14ÚcbPRTÚPRTr   r   r   r   r   R   s2   
z&KIWI_CLOUDAP_CACHE_LIST_ENTRY.__init__c                 Ã   sø  �t ƒ }t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_|  ¡ I d H  t | ¡I d H |_	t | ¡I d H |_
t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_|  d¡I d H |_|  ¡ I d H  t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_ t | ¡I d H |_!|  ¡ I d H  t | ¡I d H |_"|S )Né‚   )#rO   rN   r=   rP   rQ   r	   rB   Úalignr
   rR   rC   rD   rS   rT   rU   rV   rW   rX   rY   rZ   r[   rJ   r\   r   rI   r]   r^   r_   r`   ra   r/   rb   rc   rd   re   rK   r   r   r   r=   m   s>   €z"KIWI_CLOUDAP_CACHE_LIST_ENTRY.loadNrM   r   r   r   r   rO   Q   s    rO   c                       r   )r"   c                    r0   r1   r2   r   r   r   r   r   �   r3   z'PKIWI_CLOUDAP_LOGON_LIST_ENTRY.__init__c                 Ã   r4   r1   )r"   r5   r6   r7   r   ÚKIWI_CLOUDAP_LOGON_LIST_ENTRYr9   r:   r   r   r   r=   ’   r>   z#PKIWI_CLOUDAP_LOGON_LIST_ENTRY.loadr?   r   r   r   r   r"   Ž   r@   r"   c                   @   rA   )rh   c                 C   s4   d | _ d | _d | _d | _d | _d | _d | _d | _d S r1   )rP   rQ   rB   rC   ÚLocallyUniqueIdentifierrD   rS   Ú
cacheEntryr   r   r   r   r   ›   s   
z&KIWI_CLOUDAP_LOGON_LIST_ENTRY.__init__c                 Ã   sœ   �t ƒ }t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t 	| ¡I d H |_
t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_|S r1   )rh   r"   r=   rP   rQ   r	   rB   rC   r   rI   ri   r   rD   rS   rN   rj   rK   r   r   r   r=   ¥   s   €z"KIWI_CLOUDAP_LOGON_LIST_ENTRY.loadNrM   r   r   r   r   rh   š   s    
rh   c                       r   )r#   c                    r0   r1   r2   r   r   r   r   r   ³   r3   z,PKIWI_CLOUDAP_LOGON_LIST_ENTRY_21H2.__init__c                 Ã   r4   r1   )r#   r5   r6   r7   r   Ú"KIWI_CLOUDAP_LOGON_LIST_ENTRY_21H2r9   r:   r   r   r   r=   ¶   r>   z(PKIWI_CLOUDAP_LOGON_LIST_ENTRY_21H2.loadr?   r   r   r   r   r#   ²   r@   r#   c                   @   rA   )rk   c                 C   s@   d | _ d | _d | _d | _d | _d | _d | _d | _d | _d | _	d S r1   )
rP   rQ   rB   rC   rD   ri   rS   rT   rU   rj   r   r   r   r   r   ¿   s   
z+KIWI_CLOUDAP_LOGON_LIST_ENTRY_21H2.__init__c                 Ã   sÎ   �t ƒ }t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t	 
| ¡I d H |_t | ¡I d H |_|  ¡ I d H  t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_|S r1   )rk   r#   r=   rP   rQ   r	   rB   rC   rD   r   rI   ri   rS   rg   r   rT   rU   rN   rj   rK   r   r   r   r=   Ë   s   €z'KIWI_CLOUDAP_LOGON_LIST_ENTRY_21H2.loadNrM   r   r   r   r   rk   ¾   s    rk   N)Úpypykatz.commons.commonr   r   r   Ú$pypykatz.alsadecryptor.win_datatypesr   r   r   r   r	   r
   r   r   r   Ú&pypykatz.alsadecryptor.package_commonsr   r   r/   r8   rN   rO   r"   rh   r#   rk   r   r   r   r   Ú<module>   s    ,=