
    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	m
Z
 d dlT d dlT d dlmZ d dlmZ d dlmZ d d	lmZ  G d
 d          ZdS )    N)List)MinidumpHeaderMinidumpFileReader)*)MINIDUMP_STREAM_TYPE)MINIDUMP_DIRECTORY)PROCESSOR_ARCHITECTURE)PEBc                       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 Zd ZdS )MinidumpFilec                    d | _         d | _        d | _        g | _        d | _        d | _        d | _        d | _        d | _        d | _	        d | _
        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d S N)filename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_infopebselfs    K/home/kali/Ninja/venv/lib/python3.11/site-packages/minidump/minidumpfile.py__init__zMinidumpFile.__init__   s    $-$#$+/1$)-$/$($,$($,,0$15$$($,"&$."&$.!%$.*.$,59$$($.,0$,0$$(((    c                     t                      }| |_        t          | d          |_        |                                 |S )Nrb)r   r   openr   _parse)r   mfs     r%   parsezMinidumpFile.parse0   s5    ~~""+$''".))+++	)r'    c                 f    t                      }||_        | |_        |                                 |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.)
		)r   r   r   r+   )r   r   r,   s      r%   parse_externalzMinidumpFile.parse_external8   s-     ~~""+".))+++	)r'   c                 Z    t                               t          j        |                     S r   )r   
parse_buffioBytesIO)datas    r%   parse_byteszMinidumpFile.parse_bytesD   s     		 	 D!1!1	2	22r'   c                 X    t                      }| |_        |                                 |S r   )r   r   r+   )bufferr,   s     r%   r2   zMinidumpFile.parse_buffH   s$    ~~"".))+++	)r'   c                      t          |           S r   r   r#   s    r%   
get_readerzMinidumpFile.get_readerO   s    	D	!	!!r'   c                     |                                   |                                  	 |                                  d S # t          $ r}t	          j        d           Y d }~d S d }~ww xY w)NzPEB parsing error!)_MinidumpFile__parse_header _MinidumpFile__parse_directories_MinidumpFile__parse_peb	Exceptionloggingr   )r$   es     r%   r+   zMinidumpFile._parseR   s    +	 + + +
)*********+s   A   
A)
A$$A)c                    t          j        | j                  | _        t	          d| j        j                  D ]}| j                            | j        j        |dz  z   d           t          j        | j                  }|r| j	        
                    |           c| j                            | j        j        |dz  z   d           t          j        | j                  }t          j        d|z             d S )Nr      z+Found Unknown UserStream directory Type: %x)r   r-   r   r   rangeNumberOfStreamsseekStreamDirectoryRvar	   r   appendget_stream_type_valuer@   debug)r$   iminidump_diruser_stream_type_values       r%   __parse_headerzMinidumpFile.__parse_headerZ   s    $T%566$+DK/00 	\ 	\a7!b&@!EEE$*4+;<<< \L))))$+81r6A1FFF/EdFVWWM?CYZ[[[[	\ 	\r'   c                    | 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    rTt	          j        d|j        j        |j        j        fz             t                              || j                  | _        5|j        t          j        k    rTt	          j        d|j        j        |j        j        fz             t"                              || j                  | _        |j        t          j        k    rTt	          j        d|j        j        |j        j        fz             t(                              || j                  | _        |j        t          j        k    rTt	          j        d|j        j        |j        j        fz             t.                              || j                  | _        p|j        t          j        k    rTt	          j        d|j        j        |j        j        fz             t4                              || j                  | _        |j        t          j        k    rTt	          j        d	|j        j        |j        j        fz             t:                              || j                  | _        B|j        t          j        k    rTt	          j        d
|j        j        |j        j        fz             t>                              || j                  | _         |j        t          j!        k    rTt	          j        d|j        j        |j        j        fz             tB                              || j                  | _"        |j        t          j#        k    rTt	          j        d|j        j        |j        j        fz             tH                              || j                  | _%        }|j        t          j&        k    rTt	          j        d|j        j        |j        j        fz             tN                              || j                  | _(        |j        t          j)        k    rCt	          j        d|j        j        |j        j        fz             t	          j        d           >|j        t          j*        k    rTt	          j        d|j        j        |j        j        fz             tV                              || j                  | _,        |j        t          j-        k    rTt	          j        d|j        j        |j        j        fz             t\                              || j                  | _/        |j        t          j0        k    rTt	          j        d|j        j        |j        j        fz             tb                              || j                  | _2        y|j        t          j3        k    rzt	          j        d|j        j        |j        j        fz             th                              || j                  | _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 # tz          $ r}t	          j%        d           Y d }~d S d }~ww xY w)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: %dzThread context parsing error!)>r   
StreamTyper   UnusedStreamr@   rJ   LocationRvaDataSizeReservedStream0ReservedStream1ThreadListStreamMinidumpThreadListr-   r   r   ModuleListStreamMinidumpModuleListr   MemoryListStreamMinidumpMemoryListr   SystemInfoStreamMinidumpSystemInfor   ThreadExListStreamMinidumpThreadExListr   Memory64ListStreamMinidumpMemory64Listr   CommentStreamAr   CommentStreamWr   ExceptionStreamExceptionListr   HandleDataStreamMinidumpHandleDataStreamr   FunctionTableStreamUnloadedModuleListStreamMinidumpUnloadedModuleListr   MiscInfoStreamMinidumpMiscInfor   MemoryInfoListStreamMinidumpMemoryInfoListr    ThreadInfoListStreamMinidumpThreadInfoListr!   strSystemMemoryInfoStreamJavaScriptDataStreamProcessVmCountersStreamTokenStreamname#_MinidumpFile__parse_thread_contextr?   )r$   dirrA   s      r%   __parse_directoriesz MinidumpFile.__parse_directoriesg   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%++C1ABBDL.???M73<;KS\Mb:ccddd%++C1ABBDL.???M73<;KS\Mb:ccddd-33C9IJJD.???M73<;KS\Mb:ccddd%++C1ABBDL.AAAM9S\=Ms|Od<eefff*00d6FGGDO.AAAM9S\=Ms|Od<eefff288d>NOOD.===M59I3<K`8aabbb#))#t/?@@DN.===M59I3<K`8aabbb#))#t/?@@DN.>>>M6#,:JCLLa9bbccc"((d.>??DN.???M73<;KS\Mb:ccddd+11#t7GHHDL.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6<<S$BRSSD.===M59I3<K`8aabbb%++C1ABBDN.CCCM;s|?OQTQ]Qf>gghhh-33C9IJJD.CCCM;s|?OQTQ]Qf>gghhh-33C9IJJD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
6     	 6 6 6
45555555556s   (b> >
c'c""c'c                    | j         r| j        sd S | j        j        D ]}|j        j        }| j                            |           | j         j        t          j        k    r%t          
                    | j                  |_        g| j         j        t          j        k    r$t          
                    | j                  |_        d S r   )r   r   ThreadContextrS   r   rF   ProcessorArchitecturer
   AMD64CONTEXTr-   ContextObjectINTELWOW64_CONTEXT)r$   threadrvas      r%   __parse_thread_contextz#MinidumpFile.__parse_thread_context   s    	 
T\ 
	6$ A Af			!3
l(,B,HHH"==)9::F*.D.JJJ(..t/?@@FA Ar'   c                 X    | j         r| j        sd S t          j        |           | _        d S r   )r   r   r   from_minidumpr"   r#   s    r%   __parse_pebzMinidumpFile.__parse_peb   s0    	 
T\ 
	6t$$$(((r'   c                    d}|t          | j                  z  }|t          | j                  z  }| j        D ]}|t          |          dz   z  }| j        j        D ]}|t          |          dz   z  }| j        $| j        j        D ]}|t          |          dz   z  }| j        $| j        j        D ]}|t          |          dz   z  }|S )Nz== Minidump File ==

)rr   r   r   r   r   r   r   )r$   try   modsegments        r%   __str__zMinidumpFile.__str__   s    !s4;!s4<!  cC411\!  cC411	%&6  wGtAA	()9  wGtAA	
(r'   N)r.   )__name__
__module____qualname__r&   staticmethodr-   r0   r6   r2   r:   r+   r<   r=   rx   r>   r    r'   r%   r   r      s         .   , 	 	 	 ,	 3 3 ,3   ," " "+ + +\ \ \s6 s6 s6j	A 	A 	A% % %    r'   r   )r3   sysenumstructr@   typingr   minidump.headerr   minidump.minidumpreaderr   minidump.streamsminidump.common_structsminidump.constantsr   minidump.directoryr	   !minidump.streams.SystemInfoStreamr
   minidump.structures.pebr   r   r   r'   r%   <module>r      s   
			 



          * * * * * * 6 6 6 6 6 6     % % % % 3 3 3 3 3 3 1 1 1 1 1 1 D D D D D D ' ' ' ' ' 'g g g g g g g g g gr'   