
    5i%                         d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	T d dl
T d dlmZ d dlmZ  G d d          Z G d	 d
          ZdS )    N)MinidumpHeaderAMinidumpFileReader)*)MINIDUMP_STREAM_TYPE)MINIDUMP_DIRECTORYc                   *    e Zd Zd ZddZd	dZd ZdS )
	AsyncFilec                 >    || _         t          |d          | _        d S )Nrb)filenameopenfhandle)selfr   s     L/home/kali/Ninja/venv/lib/python3.11/site-packages/minidump/aminidumpfile.py__init__zAsyncFile.__init__   s    $-h%%$,,,    c                 :   K   | j                             |          S N)r   read)r   ns     r   r   zAsyncFile.read   s      			1		r   r   c                 <   K   | j                             ||          S r   )r   seek)r   r   begs      r   r   zAsyncFile.seek   s      			1c	"	""r   c                 4    | j                                         S r   )r   tellr   s    r   r   zAsyncFile.tell    s    					r   N)r   )r   )__name__
__module____qualname__r   r   r   r    r   r   r
   r
      sZ        & & &   # # # #    r   r
   c                       e Zd Zd Zed             Zedd            Zed             Zed             Zd Z	d Z
d	 Zd
 Zd ZdS )AMinidumpFilec                    d | _         d | _        d | _        g | _        d | _        d | _        d | _        d | _        d | _        d | _	        d | _
        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d S r   )r   file_handleheaderdirectories
threads_exthreadsmodulesmemory_segmentsmemory_segments_64sysinfo	comment_a	comment_w	exceptionhandlesunloaded_modules	misc_infomemory_infothread_infor   s    r   r   zAMinidumpFile.__init__$   s    $-$$+$$/$,$,$ $$,$.$.$.$,$$.$$r   c                    K   t                      }| |_        t          |           |_        |                                 d {V  |S r   )r$   r   r
   r&   _parse)r   mfs     r   parsezAMinidumpFile.parse9   sJ      ""+X&&".
			)r    c                 v   K   t                      }||_        | |_        |                                 d{V  |S )z
		External file handle must be an object that exposes basic file IO functionality
		that you'd get by python's file buffer (read, seek, tell etc.)
		N)r$   r   r&   r8   )r&   r   r9   s      r   parse_externalzAMinidumpFile.parse_externalA   sD       ""+".
			)r   c                 j   K   t                               t          j        |                      d {V S r   )r$   
parse_buffioBytesIO)datas    r   parse_byteszAMinidumpFile.parse_bytesM   s6      ''
4(8(899	9	9	9	9	9	99r   c                 X    t                      }| |_        |                                 |S r   )r$   r&   r8   )bufferr9   s     r   r?   zAMinidumpFile.parse_buffQ   s$    "".))+++	)r   c                      t          |           S r   r   r   s    r   
get_readerzAMinidumpFile.get_readerX   s    	T	"	""r   c                 r   K   |                                   d {V  |                                  d {V  d S r   )_AMinidumpFile__parse_header!_AMinidumpFile__parse_directoriesr   s    r   r8   zAMinidumpFile._parse[   sT        """""""""""r   c                 p  K   t          j        | j                   d {V | _        t	          d| j        j                  D ]}| j                            | j        j        |dz  z   d           d {V  t          j        | j                   d {V }|r| j	        
                    |           o| j                            | j        j        |dz  z   d           d {V  | j                            d           d {V }t                              |dd          }t          j        d|z             d S )Nr         littleF)	byteordersignedz+Found Unknown UserStream directory Type: %x)r   aparser&   r'   rangeNumberOfStreamsr   StreamDirectoryRvar   r(   appendr   int
from_bytesloggingdebug)r   iminidump_dirtuser_stream_type_values        r   __parse_headerzAMinidumpFile.__parse_header_   sm     $+D,<========$+DK/00 
\ 
\a				t{=BF	K	KKKKKKKK*1$2BCCCCCCCC< \L))))



 >R G
L
LLLLLLLL##A&&&&&&&&A ^^A8e^TTM?CYZ[[[[
\ 
\r   c                   K   | j         D ]}|j        t          j        k    r.t	          j        d|j        j        |j        j        fz             F|j        t          j	        k    r.t	          j        d|j        j        |j        j        fz             |j        t          j
        k    r.t	          j        d|j        j        |j        j        fz             |j        t          j        k    rZt	          j        d|j        j        |j        j        fz             t                              || j                   d {V | _        ;|j        t          j        k    rZt	          j        d|j        j        |j        j        fz             t"                              || j                   d {V | _        |j        t          j        k    rZt	          j        d|j        j        |j        j        fz             t(                              || j                   d {V | _        |j        t          j        k    rZt	          j        d|j        j        |j        j        fz             t.                              || j                   d {V | _        |j        t          j        k    rZt	          j        d|j        j        |j        j        fz             t4                              || j                   d {V | _        |j        t          j        k    rZt	          j        d	|j        j        |j        j        fz             t:                              || j                   d {V | _        f|j        t          j        k    rZt	          j        d
|j        j        |j        j        fz             t>                              || j                   d {V | _         |j        t          j!        k    rZt	          j        d|j        j        |j        j        fz             tB                              || j                   d {V | _"        D|j        t          j#        k    rZt	          j        d|j        j        |j        j        fz             tH                              || j                   d {V | _%        |j        t          j&        k    rZt	          j        d|j        j        |j        j        fz             tN                              || j                   d {V | _(        "|j        t          j)        k    rCt	          j        d|j        j        |j        j        fz             t	          j        d           z|j        t          j*        k    rZt	          j        d|j        j        |j        j        fz             tV                              || j                   d {V | _,        |j        t          j-        k    rZt	          j        d|j        j        |j        j        fz             t\                              || j                   d {V | _/        X|j        t          j0        k    rZt	          j        d|j        j        |j        j        fz             tb                              || j                   d {V | _2        |j        t          j3        k    rt	          j        d|j        j        |j        j        fz             th                              || j                   d {V | _5        t	          j        tm          | j5                             \|j        t          j7        k    rCt	          j        d|j        j        |j        j        fz             t	          j        d           |j        t          j8        k    rBt	          j        d|j        j        |j        j        fz             t	          j        d           n|j        t          j9        k    rBt	          j        d|j        j        |j        j        fz             t	          j        d           n|j        t          j:        k    rBt	          j        d|j        j        |j        j        fz             t	          j        d           n8t	          j        d|j        j;        |j        j        |j        j        fz             d S )NzFound UnusedStream @%x Size: %dz"Found ReservedStream0 @%x Size: %dz"Found ReservedStream1 @%x Size: %dz#Found ThreadListStream @%x Size: %dz#Found ModuleListStream @%x Size: %dz#Found MemoryListStream @%x Size: %dz#Found SystemInfoStream @%x Size: %dz%Found ThreadExListStream @%x Size: %dz%Found Memory64ListStream @%x Size: %dz!Found CommentStreamA @%x Size: %dz!Found CommentStreamW @%x Size: %dz"Found ExceptionStream @%x Size: %dz#Found HandleDataStream @%x Size: %dz&Found FunctionTableStream @%x Size: %dz3Parsing of this stream type is not yet implemented!z+Found UnloadedModuleListStream @%x Size: %dz!Found MiscInfoStream @%x Size: %dz'Found MemoryInfoListStream @%x Size: %dz'Found ThreadInfoListStream @%x Size: %dz)Found SystemMemoryInfoStream @%x Size: %dzISystemMemoryInfoStream parsing is not implemented (Missing documentation)z'Found JavaScriptDataStream @%x Size: %dzGJavaScriptDataStream parsing is not implemented (Missing documentation)z*Found ProcessVmCountersStream @%x Size: %dzJProcessVmCountersStream parsing is not implemented (Missing documentation)zFound TokenStream @%x Size: %dz>TokenStream parsing is not implemented (Missing documentation)z+Found Unknown Stream! Type: %s @%x Size: %d)<r(   
StreamTyper   UnusedStreamrX   rY   LocationRvaDataSizeReservedStream0ReservedStream1ThreadListStreamMinidumpThreadListrQ   r&   r*   ModuleListStreamMinidumpModuleListr+   MemoryListStreamMinidumpMemoryListr,   SystemInfoStreamMinidumpSystemInfor.   ThreadExListStreamMinidumpThreadExListr)   Memory64ListStreamMinidumpMemory64Listr-   CommentStreamAr/   CommentStreamWr0   ExceptionStreamExceptionListr1   HandleDataStreamMinidumpHandleDataStreamr2   FunctionTableStreamUnloadedModuleListStreamMinidumpUnloadedModuleListr3   MiscInfoStreamMinidumpMiscInfor4   MemoryInfoListStreamMinidumpMemoryInfoListr5   ThreadInfoListStreamMinidumpThreadInfoListr6   strSystemMemoryInfoStreamJavaScriptDataStreamProcessVmCountersStreamTokenStreamname)r   dirs     r   __parse_directoriesz!AMinidumpFile.__parse_directoriesm   s?      m mc	n,999M3s|7GI^6__```.>>>M6#,:JCLLa9bbccc.>>>M6#,:JCLLa9bbccc.???M73<;KS\Mb:ccddd+2238HIIIIIIIIDL.???M73<;KS\Mb:ccddd+2238HIIIIIIIIDL.???M73<;KS\Mb:ccddd!3!:!:3@P!Q!QQQQQQQD.???M73<;KS\Mb:ccddd+2238HIIIIIIIIDL.AAAM9S\=Ms|Od<eefff077T=MNNNNNNNNDO.AAAM9S\=Ms|Od<eefff$8$?$?TEU$V$VVVVVVVD.===M59I3<K`8aabbb)00d6FGGGGGGGGDN.===M59I3<K`8aabbb)00d6FGGGGGGGGDN.>>>M6#,:JCLLa9bbccc(//T5EFFFFFFFFDN.???M73<;KS\Mb:ccddd188d>NOOOOOOOODL.BBBM:cl>NPSP\Pe=ffgggMGHHH.GGGM?3<CSUXUaUjBkklll"<"C"CCIY"Z"ZZZZZZZD.===M59I3<K`8aabbb+2238HIIIIIIIIDN.CCCM;s|?OQTQ]Qf>gghhh3::3@PQQQQQQQQD.CCCM;s|?OQTQ]Qf>gghhh3::3@PQQQQQQQQDM#d&''(((.EEEM=AQSVS_Sh@iijjjM]^^^.CCCM;s|?OQTQ]Qf>gghhhM[\\\\.FFFM>#,BRTWT`TiAjjkkkM^____.:::M2cl6FH]5^^___MRSSSS M?3>CVX[XdXhjmjvj  CA  A  B  B  BSm mr   c                 z   d}|t          | j                  z  }|t          | j                  z  }| j        D ]}|t          |          dz   z  }| j        D ]}|t          |          dz   z  }| j        | j        D ]}|t          |          dz   z  }| j        | j        D ]}|t          |          dz   z  }|S )Nz== Minidump File ==

)r   r'   r.   r(   r+   r,   r-   )r   r\   r   modsegments        r   __str__zAMinidumpFile.__str__   s    !s4;!s4<!  cC411\  cC411	%&  wGtAA	()  wGtAA	
(r   N)r;   )r   r    r!   r   staticmethodr:   r=   rC   r?   rG   r8   rI   rJ   r   r"   r   r   r$   r$   #   s          *   , 	 	 	 ,	 : : ,:   ,# # ## # #\ \ \o o ob    r   r$   )r@   sysenumstructrX   minidump.headerr   minidump.aminidumpreaderr   minidump.streamsminidump.common_structsminidump.constantsr   minidump.directoryr   r
   r$   r"   r   r   <module>r      s    
			 



    * * * * * * 8 8 8 8 8 8     % % % % 3 3 3 3 3 3 1 1 1 1 1 1       K K K K K K K K K Kr   