o
    ja>                     @   s|  d dl Z d dlZd dlZd dlT i ddddddd	d
dddddddddddddddddddddd d!d"d#d$i d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKZG dLdM dMejZG dNdO dOejZG dPdQ dQejZG dRdS dSejZ	G dTdU dUej
ZG dVdW dWZG dXdY dYZdS )Z    N)*g   zWindows 3.1f   zWindows 3.1 - Spartai  zWindiws NT 3.1i,  zWindows NT 3.11 - Snowball   zWindows 3.2i'  zWindows NT 3.5i!  zWindows NT 3.51ie  zWindows NT 4.0i  z
Windows 95i  z
Windows 98i  zWindows 98 SEi  Windows 2000i  z
Windows MEi(
  
Windows XPi
  z&Windows XP - Media Center Edition 2005i
  z6Windows XP - Media Center Edition 2005 Update Rollup 2i  z-Windows XP x64 / Server 2003 / Server 2003 R2ir  zWindows Vista / Server 2008i  zWindows 7 / Server 2008 R2i#  zWindows 8 / Server 2012i%  zWindows 8.1 / Server 2012 R2i (  zWindows 10 - 1507iZ)  zWindows 10 - 1511i98  zWindows 10 - 1607 / Server 2016i:  zWindows 10 - 1703i?  zWindows 10 - 1709 / Server 2016iB  zWindows 10 - 1803 / Server 2016icE  zWindows 10 - 1809 / Server 2019iG  zWindows 10 - 1903 / Server 2019iG  zWindows 10 - 1909 / Server 2019iaJ  zWindows 10 - 2004 / Server 2019ibJ  zWindows 10 - 20H2 / Server 2019icJ  zWindows 10 - 21H1idJ  zWindows 10 - 21H2zWindows 10 - 22H2zWindows 11 - 21H2zWindows Server 2022zWindows 11 - 22H2)ieJ  iU  i|O  i]X  c                   @   s$   e Zd ZdZdZdZdZdZdZdS )PROCESSOR_ARCHITECTURE	         r   i  i  N)	__name__
__module____qualname__AMD64ARMIA64INTELAARCH64UNKNOWN r   r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minidump/streams/SystemInfoStream.pyr   7   s    r   c                   @      e Zd ZdZdZdZdZdS )PROCESSOR_LEVEL      r
   r   N)r   r   r   INTEL_80386INTEL_80486INTEL_PENTIUMINTEL_PENTIUM_PROr   r   r   r   r   ?   
    r   c                   @   r   )PRODUCT_TYPEr         r   N)r   r   r   VER_UNIDENTIFIED_PRODUCTVER_NT_WORKSTATIONVER_NT_DOMAIN_CONTROLLERVER_NT_SERVERr   r   r   r   r    E   r   r    c                   @   <   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdS )PLATFORM_IDr   r!   r"   i  i  i  i  i  i  i  i  l    N)r   r   r   VER_PLATFORM_WIN32sVER_PLATFORM_WIN32_WINDOWSVER_PLATFORM_WIN32_NTVER_PLATFORM_CRASHPAD_MACVER_PLATFORM_CRASHPAD_IOSVER_PLATFORM_CRASHPAD_LINUXVER_PLATFORM_CRASHPAD_SOLARISVER_PLATFORM_CRASHPAD_ANDROIDVER_PLATFORM_CRASHPAD_PS3VER_PLATFORM_CRASHPAD_NACLVER_PLATFORM_CRASHPAD_FUSCHIAVER_PLATFORM_CRASHPAD_UNKNOWNr   r   r   r   r(   L   s    r(   c                   @   r'   )
SUITE_MASKr   i   i @     r"   @   i      r!       i       N)r   r   r   VER_SUITE_BACKOFFICEVER_SUITE_BLADEVER_SUITE_COMPUTE_SERVERVER_SUITE_DATACENTERVER_SUITE_ENTERPRISEVER_SUITE_EMBEDDEDNTVER_SUITE_PERSONALVER_SUITE_SINGLEUSERTSVER_SUITE_SMALLBUSINESS"VER_SUITE_SMALLBUSINESS_RESTRICTEDVER_SUITE_STORAGE_SERVERVER_SUITE_TERMINALr   r   r   r   r5   ]   s    r5   c                   @   s:   e Zd Zdd Zdd ZdddZedd	 Zd
d ZdS )MINIDUMP_SYSTEM_INFOc                 C   s|   d | _ d | _d | _d | _d | _d | _d | _d | _d | _d | _	d | _
d| _d | _d| _g | _d | _d | _d | _g | _d | _d S )Nr   )ProcessorArchitectureProcessorLevelProcessorRevision	Reserved0NumberOfProcessorsProductTypeMajorVersionMinorVersionBuildNumber
PlatformIdCSDVersionRva	Reserved1	SuiteMask	Reserved2VendorIdVersionInformationFeatureInformationAMDExtendedCpuFeaturesProcessorFeatures
CSDVersionselfr   r   r   __init__n   s(   
zMINIDUMP_SYSTEM_INFO.__init__c                 C   s   t |  S N)lento_bytesr\   r   r   r   get_size   s   zMINIDUMP_SYSTEM_INFO.get_sizeNc                 C   s   | j jjdddd}|| jjdddd7 }|| jjdddd7 }|| jjdddd7 }|| jjjdddd7 }|| jjdddd7 }|| jjdddd7 }|| j	jdddd7 }|| j
jdddd7 }|d u rs|| jjdddd7 }n.| }|d | | _|| jdd	  | }||d
 || jjdddd7 }|| jjdddd7 }|| jjdddd7 }| j tjkr| jD ]}||jdddd7 }q|| jjjdddd7 }|| jjjdddd7 }|| jjjdddd7 }n| jD ]}||jdddd7 }q|d u r	|S || d S )Nr"   littleF	byteordersignedr!   r   sd                                                                                                       ascii    r      )rH   valuera   rI   rJ   rL   rM   rN   rO   rP   rQ   rR   tellwriter[   encodeseekrT   rU   r   r   rV   rW   rX   rY   rZ   )r]   data_buffertpospos_endvidpfr   r   r   ra      s>   




zMINIDUMP_SYSTEM_INFO.to_bytesc                 C   s  t  }ttj| dddd|_tj| dddd|_tj| dddd|_tj| dddd|_t	tj| dddd|_
tj| dddd|_tj| dddd|_tj| dddd|_ttj| dddd|_tj| dddd|_ttj| dddd|_tj| dddd|_|jtjkrtdD ]}|jtj| dddd qtj| dddd|_tj| dddd|_tj| dddd|_|S tdD ]}|jtj| dddd q|S )	Nr"   rc   Frd   r!   r   r   ri   )rG   r   int
from_bytesreadrH   rI   rJ   rL   r    rM   rN   rO   rP   r(   rQ   rR   r5   rT   rU   r   rangerV   appendrW   rX   rY   rZ   )buffmsi_r   r   r   parse   s.     zMINIDUMP_SYSTEM_INFO.parsec                 C   s.   d}| j D ]}|d|t| j | f 7 }q|S )N z	%s : %s
)__dict__str)r]   rp   kr   r   r   __str__   s   
zMINIDUMP_SYSTEM_INFO.__str__r_   )	r   r   r   r^   rb   ra   staticmethodr}   r   r   r   r   r   rG   m   s    
'
rG   c                   @   s<   e Zd Zdd Zdd Zedd Zedd Zd	d
 ZdS )MinidumpSystemInfoc                 C   sj   d | _ d | _d | _d | _d | _d | _d | _d | _d | _d | _	d | _
d | _d | _d | _d | _d | _d | _d S r_   )rH   rI   rJ   rL   rM   rN   rO   rP   rQ   r[   rT   rV   rW   rX   rY   rZ   OperatingSystemr\   r   r   r   r^      s"   
zMinidumpSystemInfo.__init__c                 C   s  | j tv rt| j  | _d S | jdkr"| jdkr"| jtjkr"d| _d S | jdkr8| jdkr8| j| jjkr8d| _d S | jdkrN| jdkrN| j| jjkrNd| _d S | jdkrd| jdkrd| j| jjkrdd| _d S | jdkrz| jd	krz| j| jjkrzd
| _d S | jdkr| jd	kr| j| jjkrd| _d S | jdkr| jdkr| j| jjkrd| _d S | jdkr| jdkr| j| jjkrd| _d S | jdkr| jdkr| j| jjkrd| _d S | jdkr| jdkr| j| jjkrd| _d S | jdkr| jdkrd| _d S | jdkr| jdkr
d| _d S d S d S )N
   r   z
Windows 10z%Windows Server 2016 Technical Previewr   r   zWindows 8.1zWindows Server 2012 R2r"   z	Windows 8zWindows Server 2012r!   z	Windows 7zWindows Server 2008 R2zWindows VistazWindows Server 2008r
   r   r   )rP   MINIDUMP_WIN_BUILDNO_TO_VERSIONr   rN   rO   rM   r    r$   r\   r   r   r   guess_os   s6   
 
"
"
"
"
"
"
"
"
"


zMinidumpSystemInfo.guess_osc                 C   s  t  }|| jj t|| jj}t	|}|j
|_
|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_t|j||_|j|_|j|_|j|_|j|_|j|_|j|_z|  W |S  ty } zt dd|j|j|j|jf  d |_!W Y d }~|S d }~ww Nr!   zSFailed to guess OS! MajorVersion: %s MinorVersion %s BuildNumber %s ProductType: %s)"r   rn   LocationRvaioBytesIOrw   DataSizerG   r}   rH   rI   rJ   rL   rM   rN   rO   rP   rQ   MINIDUMP_STRINGget_from_rvarR   r[   rT   rV   rW   rX   rY   rZ   r   	Exceptionlogginglogr   )dirrz   rp   chunksier   r   r   r}     s:   

 zMinidumpSystemInfo.parsec                    s.  t  }|| jjI d H  || jjI d H }t|}t	|}|j
|_
|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_t|j|I d H |_|j|_|j|_|j|_|j|_|j|_|j|_z|  W |S  ty } zt dd|j|j|j|jf  d |_!W Y d }~|S d }~ww r   )"r   rn   r   r   rw   r   r   r   rG   r}   rH   rI   rJ   rL   rM   rN   rO   rP   rQ   r   aget_from_rvarR   r[   rT   rV   rW   rX   rY   rZ   r   r   r   r   r   )r   rz   rp   
chunk_datar   r   r   r   r   r   aparse)  s>   


 zMinidumpSystemInfo.aparsec                 C   s  d}|d| j  7 }|d| j 7 }|d| j 7 }|dt| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d	| j 7 }|d
| j	 7 }|d| j
 7 }|d| j 7 }|d| j 7 }|dddd | jD  7 }|d| j 7 }|d| j 7 }|d| j 7 }|dddd | jD  7 }|S )Nz== System Info ==
zProcessorArchitecture %s
zOperatingSystem -guess- %s
zProcessorLevel %s
zProcessorRevision %s
zNumberOfProcessors %s
zProductType %s
zMajorVersion %s
zMinorVersion %s
zBuildNumber %s
zPlatformId %s
zCSDVersion: %s
zSuiteMask %s
zVendorId %s
 c                 S      g | ]}t |qS r   hex.0xr   r   r   
<listcomp>V      z.MinidumpSystemInfo.__str__.<locals>.<listcomp>zVersionInformation %s
zFeatureInformation %s
zAMDExtendedCpuFeatures %s
zProcessorFeatures %s
c                 S   r   r   r   r   r   r   r   r   Z  r   )rH   r   rI   r   rJ   rL   rM   rN   rO   rP   rQ   r[   rT   joinrV   rW   rX   rY   rZ   )r]   rp   r   r   r   r   H  s&   zMinidumpSystemInfo.__str__N)	r   r   r   r^   r   r   r}   r   r   r   r   r   r   r      s    !

r   )r   enumr   minidump.common_structsr   Enumr   r   r    r(   IntFlagr5   rG   r   r   r   r   r   <module>   s   	
 !"#+h