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	 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ÚWindowsBuildÚWindowsMinBuild)ÚLUIDÚULONGÚPOINTER)ÚPackageTemplate)Úhexdumpc                       s(   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/lsadecryptor/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                       ó   e Zd Z‡ fdd„Z‡  ZS )r"   c                    ó   t ƒ  |t¡ d S ©N)r   r   ÚWdigestListEntry©r   Úreaderr   r   r   r   j   ó   zPWdigestListEntry.__init__©r/   r0   r1   r   r3   r   r   r   r   r"   i   ó    r"   c                       r4   )r&   c                    r5   r6   )r   r   ÚWdigestListEntryNT5r8   r   r   r   r   n   r:   zPWdigestListEntryNT5.__init__r;   r   r   r   r   r&   m   r<   r&   c                   @   ó   e Zd Zdd„ ZdS )r=   c                 C   s@   t |ƒ| _t |ƒ| _t |ƒ| _t|ƒ| _| ¡  t|ƒj| _	d S r6   )
r&   ÚFlinkÚBlinkÚ
this_entryr   Úusage_countÚalignr   r   Úluidr8   r   r   r   r   r   s   



zWdigestListEntryNT5.__init__N©r/   r0   r1   r   r   r   r   r   r=   q   ó    r=   c                   @   r>   )r7   c                 C   s@   t |ƒ| _t |ƒ| _t|ƒ| _| ¡  t |ƒ| _t|ƒj| _	d S r6   )
r"   r?   r@   r   rB   rC   rA   r   r   rD   r8   r   r   r   r   |   s   



zWdigestListEntry.__init__NrE   r   r   r   r   r7   {   rF   r7   N)Úpypykatz.commons.commonr   r   r   Úpypykatz.commons.win_datatypesr   r   r   Ú%pypykatz.lsadecryptor.package_commonsr   r	   r
   r"   r&   r=   r7   r   r   r   r   Ú<module>   s   Y
