o
    Žõ±j[  ã                   @   s„   d dl mZmZmZ d dl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	eƒZG d
d„ dƒZG dd„ dƒZdS )é    )ÚKatzSystemArchitectureÚWindowsMinBuildÚWindowsBuild)ÚLUIDÚULONGÚPOINTER)ÚPackageTemplatec                       ó(   e Zd Z‡ fdd„Zedd„ ƒZ‡  ZS )ÚWdigestTemplatec                    s(   t ƒ  d¡ d | _d | _d | _d | _d S )NÚWdigest)ÚsuperÚ__init__Ú	signatureÚfirst_entry_offsetÚ
list_entryÚprimary_offset©Úself©Ú	__class__© ú¤/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pypykatz/alsadecryptor/packages/wdigest/templates.pyr      s
   
zWdigestTemplate.__init__c                 C   sš  t ƒ }| jtjkr�tjj| j  krtjjk r(n nd|_	d|_
d|_t|_�ntjj| j  kr7tjjk rFn nd|_	d|_
d|_t|_nþtjj| j  krUtjjk rdn nd|_	d|_
d|_t|_nàtjj| j  krstjjk r‚n nd|_	d|_
d|_t|_nÂd|_	d|_
d|_t|_nµ| jtjk�r=tjj| j  kr¥tjjk r´n nd|_	d	|_
d|_t|_n�tjj| j  krÃtjjk rÒn nd|_	d	|_
d
|_t|_nrtjj| j  krátjjk rðn nd|_	d	|_
d|_t|_nTtjj| j  k�rtjjk �rn nd|_	d|_
d|_t|_n4tjj| j  k�r!tjjk �r0n nd|_	d	|_
d|_t|_nd|_	d	|_
d|_t|_ntd| j ƒ‚| d|j¡ |S )Ns   H;Útéüÿÿÿé$   é0   s   H;Ùts   H;Øts
   H;Æt‹K 9Hs   t‹M‹iúÿÿÿé   s   t‹9Né    s   t‹
9Ns   t‹9VzUnknown architecture! %sr   )r
   Úarchitecturer   ÚX64r   ÚWIN_XPÚvalueÚbuildnumberÚWIN_2K3r   r   r   ÚPWdigestListEntryr   Ú	WIN_VISTAÚWIN_11ÚX86ÚPWdigestListEntryNT5ÚWIN_BLUEÚWIN_10r   ÚWIN_10_1809Ú	ExceptionÚlog_template)ÚsysinfoÚtemplater   r   r   Úget_template   sv   "
""""""&&zWdigestTemplate.get_template)Ú__name__Ú
__module__Ú__qualname__r   Ústaticmethodr/   Ú__classcell__r   r   r   r   r
      s    r
   c                       r	   )r#   c                    ó   t ƒ  ¡  d S ©N©r   r   r   r   r   r   r   f   ó   zPWdigestListEntry.__init__c                 Ã   ó,   �t ƒ }|  ¡ |_|  ¡ I d H |_t|_|S r6   )r#   ÚtellÚlocationÚ	read_uintr    ÚWdigestListEntryÚ	finaltype©ÚreaderÚpr   r   r   Úloadi   ó   €
zPWdigestListEntry.load©r0   r1   r2   r   r3   rB   r4   r   r   r   r   r#   e   ó    r#   c                       r	   )r'   c                    r5   r6   r7   r   r   r   r   r   r   r8   zPWdigestListEntryNT5.__init__c                 Ã   r9   r6   )r'   r:   r;   r<   r    ÚWdigestListEntryNT5r>   r?   r   r   r   rB   u   rC   zPWdigestListEntryNT5.loadrD   r   r   r   r   r'   q   rE   r'   c                   @   ó    e Zd Zdd„ Zedd„ ƒZdS )rF   c                 C   ó"   d | _ d | _d | _d | _d | _d S r6   )ÚFlinkÚBlinkÚ
this_entryÚusage_countÚluidr   r   r   r   r   ~   ó
   
zWdigestListEntryNT5.__init__c                 Ã   st   �t ƒ }t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_|  ¡ I d H  t	 
| ¡I d H |_|S r6   )rF   r'   rB   rI   rJ   rK   r   rL   Úalignr   Ú	loadvaluerM   ©r@   Úresr   r   r   rB   …   s   €zWdigestListEntryNT5.loadN©r0   r1   r2   r   r3   rB   r   r   r   r   rF   }   ó    rF   c                   @   rG   )r=   c                 C   rH   r6   )rI   rJ   rL   rK   rM   r   r   r   r   r   ‘   rN   zWdigestListEntry.__init__c                 Ã   st   �t ƒ }t | ¡I d H |_t | ¡I d H |_t | ¡I d H |_|  ¡ I d H  t | ¡I d H |_t	 
| ¡I d H |_|S r6   )r=   r#   rB   rI   rJ   r   rL   rO   rK   r   rP   rM   rQ   r   r   r   rB   ˜   s   €zWdigestListEntry.loadNrS   r   r   r   r   r=   �   rT   r=   N)Úpypykatz.commons.commonr   r   r   Ú$pypykatz.alsadecryptor.win_datatypesr   r   r   Ú&pypykatz.alsadecryptor.package_commonsr   r
   r#   r'   rF   r=   r   r   r   r   Ú<module>   s   X