o
    Žõ±j$  ã                   @   s:   d dl Z d dlmZmZ d dlmZmZ G dd„ dƒZdS )é    N)ÚIteratorÚList)ÚCryptoAPIKeyFileÚCryptoAPIKeyPropertiesc                   @   sb   e Zd Zdd„ Zdee fdd„Zeddee	j
B defd	d
„ƒZeddee	j
B defdd„ƒZdS )ÚCryptoKeysFinderc                 C   s   g d¢| _ g | _d S )N)ÚServiceProfilesÚLocalServiceÚAppDataÚRoamingÚ	MicrosoftÚCryptoÚKeys)ÚstartdirÚentries©Úself© r   ú”/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pypykatz/dpapi/finders/cryptokeys.pyÚ__init__   s   

zCryptoKeysFinder.__init__Úreturnc                 C   s
   t | jƒS )N)Úiterr   r   r   r   r   Ú__iter__   s   
zCryptoKeysFinder.__iter__TÚwin_dirÚraise_errorc                 C   sr   t | tƒrt | ¡ ¡ } |  ¡ s|rt| › d�ƒ‚tƒ S | }tƒ jD ]}|| }| ¡ s3t|› d�ƒ‚q"t 	|¡S )Nú is not a directoryz does not exist)
Ú
isinstanceÚstrÚpathlibÚPathÚabsoluteÚis_dirÚ
ValueErrorr   r   Úfrom_dir)r   r   Úcryptokeys_dirÚ	directoryr   r   r   Úfrom_windir   s   
ÿ
zCryptoKeysFinder.from_windirr#   c                 C   st   t | tƒrt | ¡ ¡ } |  ¡ s|rt| › d�ƒ‚tƒ S tƒ }|  ¡ D ]}| ¡ r*q#t	 
| ¡ ¡}|j |¡ q#|S )Nr   )r   r   r   r   r   r    r!   r   Úiterdirr   Ú
from_bytesÚ
read_bytesr   Úappend)r#   r   ÚfinderÚfilepathÚkeyr   r   r   r"       s   
zCryptoKeysFinder.from_dirN)T)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   Ústaticmethodr   r   r   Úboolr%   r"   r   r   r   r   r      s     r   )r   Útypingr   r   Úwinacl.dtyp.wcee.cryptoapikeyr   r   r   r   r   r   r   Ú<module>   s    