o
    j                     @   s*   d Z ddlZddlmZ G dd dZdS )z

The "lf"-record
===============

Offset	Size	Contents
0x0000	Word	ID: ASCII-"lf" = 0x666C
0x0002	Word	number of keys
0x0004	????	Hash-Records

    N)NTRegistryHRc                   @   sH   e Zd Zdd Zedd Zdd Zedd Zed	d
 Zdd Z	dS )NTRegistryLHc                 C   s   d| _ d | _g | _d S )Ns   lh)magickeys_cnthash_records)self r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiowinreg/filestruct/lh.py__init__   s   
zNTRegistryLH.__init__c                 C   s:   d}|   D ]}|d9 }|t|7 }q|d jddddS )Nr   %   l           littleFsigned)upperordto_bytes)key_nameresbbr   r   r	   	calc_hash   s
   zNTRegistryLH.calc_hashc                 C   s0   g }| j D ]}|jt|kr||j q|S )z
		Checks all hash-records for match with key_name,
		if there is a match it returns the offset to the key (located in the hash record)
		if no match, it returns None
		)r   	hash_datar   r   append	offset_nk)r   r   offsetshrr   r   r	   get_key_offsets   s   
zNTRegistryLH.get_key_offsetsc                 C   s   t t| S )N)r   from_bufferioBytesIO)datar   r   r	   
from_bytes*   s   zNTRegistryLH.from_bytesc                 C   sT   t  }| d|_tj| dddd|_t|jD ]}t| }|j	
| q|S )N   r   Fr   )r   readr   intr!   r   ranger   r   r   r   )bufflf_r   r   r   r	   r   .   s   
zNTRegistryLH.from_bufferc                 C   sn   d}| j D ]/}t| j | tr't| j | D ]\}}|d||t|f 7 }qq|d|t| j | f 7 }q|S )Nz== NT Registry LH Record ==
z   %s: %s: %sz	%s: %s 
)__dict__
isinstancelist	enumeratestr)r   tkiitemr   r   r	   __str__8   s   
zNTRegistryLH.__str__N)
__name__
__module____qualname__r
   staticmethodr   r   r!   r   r2   r   r   r   r	   r      s    


	r   )__doc__r   aiowinreg.filestruct.hashrecordr   r   r   r   r   r	   <module>   s   