o
    jx                     @   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                   @   s<   e Zd Zdd Zdd Zedd Zedd Zd	d
 ZdS )NTRegistryLFc                 C   s   d| _ d | _g | _d S )Ns   lf)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/lf.py__init__   s   
zNTRegistryLF.__init__c                 C   sF   g }| j D ]}|jdd | dd 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
		    asciiN   )r   	hash_datastripdecodelowerappend	offset_nk)r   key_nameoffsetshrr   r   r	   get_key_offsets   s   
&zNTRegistryLF.get_key_offsetsc                 C   s   t t| S )N)r   from_bufferioBytesIO)datar   r   r	   
from_bytes%   s   zNTRegistryLF.from_bytesc                 C   sT   t  }| d|_tj| dddd|_t|jD ]}t| }|j	
| q|S )N   littleF)signed)r   readr   intr   r   ranger   r   r   r   )bufflf_r   r   r   r	   r   )   s   
zNTRegistryLF.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 LF Record ==
z   %s: %s: %sz	%s: %s 
)__dict__
isinstancelist	enumeratestr)r   tkiitemr   r   r	   __str__3   s   
zNTRegistryLF.__str__N)	__name__
__module____qualname__r
   r   staticmethodr   r   r/   r   r   r   r	   r      s    

	r   )__doc__r   aiowinreg.filestruct.hashrecordr   r   r   r   r   r	   <module>   s   