
    *1f(                        d dl Z d dlZd dlmZmZmZ d dlmZmZ  ej                  e
      Z G d dej                  j                        Z G d dej                  j                        Z G d d	ej                  j                        Zy)
    N)OptionalTupleUnion)	constants
interfacesc                   ~    e Zd ZdZedee   fd       Zedeee	      fd       Z
edeej                     fd       Zy)ProducerMetadataz1Class to handle the Producer metadata from an ISFreturnc                 :    | j                   j                  dd       S )Nname
_json_datagetselfs    X/home/panchajanya/Development/work/volatility3/volatility3/framework/symbols/metadata.pyr   zProducerMetadata.name   s    ""6400    c                 >   | j                   j                  dd      }|syt        |D cg c]  }|dv  c}      r1t        |j	                  d      D cg c]  }t        |       c}      S t        j                  t        j                  d| d       yc c}w c c}w )z,Returns the version of the ISF file producerversionNz0123456789..z2Metadata version contains unexpected characters: '')
r   r   alltuplesplitintvolloglogr   LOGLEVEL_VVVV)r   r   xs      r   r   zProducerMetadata.version   s     //%%i6G4q]"45'--*<=Q#a&=>>

##@	K	
  5=s   BBc                     d| j                   vry	 t        j                  j                  | j                   d   d      }|S # t        t        f$ r t
        j                  d       Y yw xY w)z2Returns a timestamp for when the file was produceddatetimeNz
YYYY-MM-DDz9Invalid timestamp in producer information of symbol table)r   r!   strptime	TypeError
ValueErrorr   debug)r   	timestamps     r   r!   zProducerMetadata.datetime#   sj     T__,	 ))22
+\I  :& 	LLTU	s   -A   $A'&A'N)__name__
__module____qualname____doc__propertyr   strr   r   r   r   r!    r   r   r	   r	      sl    ;1hsm 1 1 %*-   (8#4#45  r   r	   c            
           e Zd ZdZedeeeeeef   eeeeef   f      fd       Z	edee
   fd       Zedee
   fd       Zedee   fd       Zy)WindowsMetadataz9Class to handle the metadata from a Windows symbol table.r
   c                    | j                   j                  di       j                  dd       }| j                   j                  di       j                  dd       }| j                   j                  di       j                  dd       }| j                   j                  di       j                  dd       }|||y ||||fS ||||fS )Npebuildrevisionminormajorr   )r   r2   r3   r4   r5   s        r   
pe_versionzWindowsMetadata.pe_version5   s     ##D"-11'4@??&&tR044ZF##D"-11'4@##D"-11'4@u}=%))eXu,,r   c                 R    | j                   y dj                  | j                         S )Nr   )r6   joinr   s    r   pe_version_stringz!WindowsMetadata.pe_version_stringC   s"    ??"xx((r   c                 Z    | j                   j                  di       j                  dd       S )NpdbGUIDr   r   s    r   pdb_guidzWindowsMetadata.pdb_guidI   s&    ""5"-11&$??r   c                 Z    | j                   j                  di       j                  dd       S )Nr;   ager   r   s    r   pdb_agezWindowsMetadata.pdb_ageM   s&    ""5"-11%>>r   N)r'   r(   r)   r*   r+   r   r   r   r   r6   r,   r9   r=   r@   r-   r   r   r/   r/   2   s    C-	%c3m,eCc34F.GGH	I- - )8C= ) )
 @(3- @ @ ?# ? ?r   r/   c                       e Zd ZdZy)LinuxMetadataz7Class to handle the metadata from a Linux symbol table.N)r'   r(   r)   r*   r-   r   r   rB   rB   R   s    Ar   rB   )r!   loggingtypingr   r   r   volatility3.frameworkr   r   	getLoggerr'   r   symbolsMetadataInterfacer	   r/   rB   r-   r   r   <module>rI      st   
   ) ) 7			8	$!z));; !H?j((:: ?@BJ&&88 Br   