o
    Žõ±j§�  ã                   @   s   d Z ddlT dZeeƒ  ¡ ƒZdZdZdZdZ	dZ
dZ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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Z(d"Z)d#Z*d$Z+d%Z,dZ-d&Z.dZ/dZ0dZ1dZ2d'Z3dZ4d"Z5d$Z6dZ7dZ8dZ9d&Z:dZ;d(Z<d)Z=d*Z>G d+d,„ d,e?ƒZ@G d-d.„ d.e?ƒZAG d/d0„ d0e?ƒZBG d1d2„ d2e?ƒZCeDe@ƒZEeDeAƒZFeDeBƒZGeDeCƒZHeEZIeFZJeGZKeEZLdZMdZNdZOd&ZPdZQd(ZRd)ZSd*ZTd'ZUd3ZVd4ZWd5ZXd6ZYd7ZZd8Z[d9Z\d$Z]d:Z^d;Z_d<Z`d=Zad>Zbd?Zcd@ZddAZedBZfdCZgdDZhdEZidFZjdGZkdHZld"ZmdIZndJZodKZpdLZqdMZrdNZsdOZtdPZudQZvdRZwdSZxeTZyeUZzemZ{enZ|dTZ}dUZ~dVZdWZ€dXZ�dYZ‚dZZƒd[Z„d\Z…d]Z†d^Z‡d_Zˆd`Z‰daZŠdbZ‹dcZŒddZ�deZŽdfZ�dgZ�dhZ‘diZ’djZ“dkZ”dlZ•dmZ–dnZ—doZ˜dpZ™dqZšdrZ›dsZœdtZ�duZždvZŸdwZ dxZ¡dyZ¢dzZ£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Z±d&Z²dZ³d(Z´d)Zµd*Z¶d'Z·d3Z¸d4Z¹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‘ZÇd’ZÈd“ZÉd”ZÊd•ZËd–ZÌd—ZÍd˜ZÎd™ZÏdšZÐd›ZÑG dœd�„ d�e?ƒZÒG dždŸ„ dŸeÓƒZÔG d d¡„ d¡e?ƒZÕeÖ DeÕ¡Z×d¢d£„ ZØd¤d¥„ ZÙd¦d§„ ZÚd¨d©„ ZÛdªd«„ ZÜd¬d­„ ZÝd®d¯„ ZÞd°d±„ Zßd²d³„ Zàd´dµ„ ZáeâeàeáƒZãd¶d·„ Zäd¸d¹„ Zådºd»„ Zæd¼d½„ Zçd¾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ÌZõdÍZöeêZ÷eêZøeõZùeïZúeðZûeñZüeúZýeûZþeíZÿeî�Z eò�Ze¯eêe°eëe±eìe²eíe³eîe´eïeµeòe¶eóe·eôe¸eõeºeöi�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Û�ZdÜ�ZdÝ�ZdÞ�Z�e�Z�e�Z�e�Z�e�Z�e�Z�e�Z�e�Z�e	�Z�e
�Z�e�Z�e�Z�e�Z�e�Z �e�Z!�e�Z"�e�Z#�e�Z$�e�Z%dßdà„ �Z&dádâ„ �Z'dãdä„ �Z(dþdådæ„�Z)dçdè„ �Z*�e&ƒ �Z+�e'ƒ �Z,�e(ƒ �Z-eãƒ �Z.�e)�e.ƒ�Z/�e*�e.ƒ�Z0�e0d$? �Z1d�Z2d�Z3d�Z4d'�Z5d$�Z6d"�Z7d�Z8d�Z9d�Z:d&�Z;d�Z<dé�Z=dê�Z>dë�Z?dì�Z@dí�ZAdî�ZBdï�ZCdð�ZDdñ�ZEd�ZFd�ZGd�ZHd&�ZId�ZJd(�ZKd)�ZLd*�ZMd�ZNd�ZOd�ZPd&�ZQd�ZRd(�ZSd)�ZTd*�ZUd'�ZVd3�ZWd4�ZXd5�ZYd6�ZZd�Z[d�Z\d&�Z]G dòdó„ dóe?ƒ�Z^eD�e^ƒ�Z_�e_�Z`dôdõ„ �Zadöd÷„ �Zbeâ�ea�ebƒ�Zcdødù„ �Zddúdû„ �Zeeâ�ed�eeƒ�Zfeeƒ  ¡ ƒ� ge¡Zdüdý„ eD ƒ�Zh�eh� i¡  dS )ÿzƒ
Detect the current architecture and operating system.

Some functions here are really from kernel32.dll, others from version.dll.
é   )Ú*Ni  i i  i  i   i i i  i i i i  i  i  i  i  i   i   l     þ é ÿ  éÿ   é    é   é   i   i @  é€   é@   i   é   é    i    é   i €  é   é   é   é   é   c                   @   ó8   e Zd Zdefdefdefdefdefded fgZdS )	ÚOSVERSIONINFOAÚdwOSVersionInfoSizeÚdwMajorVersionÚdwMinorVersionÚdwBuildNumberÚdwPlatformIdÚszCSDVersionr   N)Ú__name__Ú
__module__Ú__qualname__ÚDWORDÚCHARÚ_fields_© r    r    ú /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pypykatz/commons/readers/local/common/version.pyr   y   ó    
úr   c                   @   r   )	ÚOSVERSIONINFOWr   r   r   r   r   r   r   N)r   r   r   r   ÚWCHARr   r    r    r    r!   r#   ‚   r"   r#   c                   @   óV   e Zd Zdefdefdefdefdefded fdefd	efd
efdefdefgZdS )ÚOSVERSIONINFOEXAr   r   r   r   r   r   r   ÚwServicePackMajorÚwServicePackMinorÚ
wSuiteMaskÚwProductTypeÚ	wReservedN)r   r   r   r   r   ÚWORDÚBYTEr   r    r    r    r!   r&   ™   ó    
õr&   c                   @   r%   )ÚOSVERSIONINFOEXWr   r   r   r   r   r   r   r'   r(   r)   r*   r+   N)r   r   r   r   r$   r,   r-   r   r    r    r    r!   r/   §   r.   r/   é	   é
   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é!   é"   é#   é$   é%   é&   é'   é(   é)   é*   é+   é,   é-   é.   é/   é0   é1   é2   é3   é4   é5   é6   é7   é8   é9   é:   é;   é<   é=   é>   é?   éC   éD   éE   éF   éG   éH   éI   éJ   éK   éL   éM   éN   éO   éP   éQ   éR   éS   éT   éV   éW   éX   éY   é[   é\   é]   i   i   i   iÿÿ  i‚  iæ  iJ  i˜  iØ!  i   iHR  iY  i[  i\  il  i'  i'  i'  i5  ég   éh   i
  i   i   i 	  iq iOI  c                   @   s   e Zd ZdefdefgZdS )Ú_SYSTEM_INFO_OEM_ID_STRUCTÚwProcessorArchitecturer+   N)r   r   r   r,   r   r    r    r    r!   r€   g  ó    þr€   c                   @   s   e Zd ZdefdefgZdS )Ú_SYSTEM_INFO_OEM_IDÚdwOemIdÚwN)r   r   r   r   r€   r   r    r    r    r!   rƒ   m  r‚   rƒ   c                   @   s€   e Zd Zdefdefdefdefdefdefdefdefd	efd
efg
Zdd„ Z	dd„ Z
ee	e
ƒZdd„ Zdd„ ZeeeƒZdS )ÚSYSTEM_INFOÚidÚ
dwPageSizeÚlpMinimumApplicationAddressÚlpMaximumApplicationAddressÚdwActiveProcessorMaskÚdwNumberOfProcessorsÚdwProcessorTypeÚdwAllocationGranularityÚwProcessorLevelÚwProcessorRevisionc                 C   s   | j jS ©N©r‡   r„   ©Úselfr    r    r!   Ú__get_dwOemId�  s   zSYSTEM_INFO.__get_dwOemIdc                 C   s   || j _d S r‘   r’   ©r”   Úvaluer    r    r!   Ú__set_dwOemIdƒ  s   zSYSTEM_INFO.__set_dwOemIdc                 C   s
   | j jjS r‘   ©r‡   r…   r�   r“   r    r    r!   Ú__get_wProcessorArchitecture‡  s   
z(SYSTEM_INFO.__get_wProcessorArchitecturec                 C   s   || j j_d S r‘   r™   r–   r    r    r!   Ú__set_wProcessorArchitecture‰  s   z(SYSTEM_INFO.__set_wProcessorArchitectureN)r   r   r   rƒ   r   ÚLPVOIDÚ	DWORD_PTRr,   r   Ú_SYSTEM_INFO__get_dwOemIdÚ_SYSTEM_INFO__set_dwOemIdÚpropertyr„   Ú(_SYSTEM_INFO__get_wProcessorArchitectureÚ(_SYSTEM_INFO__set_wProcessorArchitecturer�   r    r    r    r!   r†   s  s$    ö
r†   c                  C   ó,   t jj} tg| _d | _tƒ }| t|ƒƒ |S r‘   )ÚwindllÚkernel32ÚGetSystemInfoÚLPSYSTEM_INFOÚargtypesÚrestyper†   Úbyref)Ú_GetSystemInfoÚsysinfor    r    r!   r¦   ’  ó   r¦   c                  C   r£   r‘   )r¤   r¥   ÚGetNativeSystemInfor§   r¨   r©   r†   rª   )Ú_GetNativeSystemInfor¬   r    r    r!   r®   ž  r­   r®   c                 C   s"   t jj}tjg|_tj|_|| ƒS r‘   )r¤   Úuser32ÚGetSystemMetricsÚctypesÚc_intr¨   r©   )ÚnIndexÚ_GetSystemMetricsr    r    r!   r±   ª  s   
r±   c                  C   ó   t jj} g | _t| _| ƒ S r‘   )r¤   r°   ÚGetLargePageMinimumr¨   ÚSIZE_Tr©   )Ú_GetLargePageMinimumr    r    r!   r·   ±  s   r·   c                  C   r¶   r‘   )r¤   r¥   ÚGetCurrentProcessr¨   ÚHANDLEr©   )Ú_GetCurrentProcessr    r    r!   rº   ¸  ó   rº   c                  C   r¶   r‘   )r¤   r¥   ÚGetCurrentThreadr¨   r»   r©   )Ú_GetCurrentThreadr    r    r!   r¾   À  r½   r¾   c                 C   s<   t jj}ttg|_t|_t|_	t
tƒ}|| t|ƒƒ t|ƒS r‘   )r¤   r¥   ÚIsWow64Processr»   ÚPBOOLr¨   Úboolr©   ÚRaiseIfZeroÚerrcheckÚBOOLÚFALSErª   )ÚhProcessÚ_IsWow64ProcessÚWow64Processr    r    r!   rÀ   Ë  s   
rÀ   c                  C   sh   t jj} g | _t| _t| _| ƒ }|d@ }|d@ d? }|d@ dkr'|d@ d? }nd }t|ƒt|ƒt|ƒfS )Nr   r   r   l        r   i  ÿr   )	r¤   r¥   Ú
GetVersionr¨   r   r©   rÃ   rÄ   Úint)Ú_GetVersionÚ	dwVersionr   r   ÚdwBuildr    r    r!   rÊ   Ö  s   rÊ   c                  C   ó€   t jj} ttƒg| _t| _t| _	tƒ }t
|ƒ|_z	| t|ƒƒ W |S  ty?   tƒ }t
|ƒ|_ttƒg| _| t|ƒƒ Y |S w r‘   )r¤   r¥   ÚGetVersionExAÚPOINTERr&   r¨   rÂ   r©   rÃ   rÄ   Úsizeofr   rª   ÚWindowsErrorr   )Ú_GetVersionExAÚosir    r    r!   rÐ   ë  ó    
û
ûrÐ   c                  C   rÏ   r‘   )r¤   r¥   ÚGetVersionExWrÑ   r/   r¨   rÂ   r©   rÃ   rÄ   rÒ   r   rª   rÓ   r#   )Ú_GetVersionExWrÕ   r    r    r!   r×   ü  rÖ   r×   c                 C   sF   t jj}tttttg|_t|_t|_	tdƒ}|| |||t
|ƒƒ |jS ©Nr   )r¤   r¥   ÚGetProductInfor   ÚPDWORDr¨   rÅ   r©   rÃ   rÄ   rª   r—   )ÚdwOSMajorVersionÚdwOSMinorVersionÚdwSpMajorVersionÚdwSpMinorVersionÚ_GetProductInfoÚdwReturnedProductTyper    r    r!   rÚ     s   rÚ   c                 C   s4   t | tƒrt| ||ƒS t | tƒrt| ||ƒS tdƒ‚)NzBad OSVERSIONINFOEX structure)Ú
isinstancer&   ÚVerifyVersionInfoAr/   ÚVerifyVersionInfoWÚ	TypeError)ÚlpVersionInfoÚ
dwTypeMaskÚdwlConditionMaskr    r    r!   ÚVerifyVersionInfo%  s
   

ré   c                 C   ó*   t jj}tttg|_t|_|t	| ƒ||ƒS r‘   )
r¤   r¥   rã   ÚLPOSVERSIONINFOEXAr   Ú	DWORDLONGr¨   rÂ   r©   rª   )ræ   rç   rè   Ú_VerifyVersionInfoAr    r    r!   rã   ,  ó   rã   c                 C   rê   r‘   )
r¤   r¥   rä   ÚLPOSVERSIONINFOEXWr   rì   r¨   rÂ   r©   rª   )ræ   rç   rè   Ú_VerifyVersionInfoWr    r    r!   rä   2  rî   rä   c                 C   s&   t jj}tttg|_t|_|| ||ƒS r‘   )r¤   r¥   ÚVerSetConditionMaskÚ	ULONGLONGr   r-   r¨   r©   )rè   ÚdwTypeBitMaskÚdwConditionMaskÚ_VerSetConditionMaskr    r    r!   rñ   =  s   rñ   ÚunknownÚi386ÚmipsÚalphaÚppcÚshxÚarmÚarm64ÚthumbÚia64Úalpha64ÚmsilÚamd64ÚsparcÚUnknownú
Windows NTúWindows 2000ú
Windows XPúWindows XP (64 bits)úWindows 2003úWindows 2003 (64 bits)úWindows 2003 R2úWindows 2003 R2 (64 bits)úWindows 2008úWindows 2008 (64 bits)úWindows 2008 R2úWindows 2008 R2 (64 bits)úWindows VistaúWindows Vista (64 bits)ú	Windows 7úWindows 7 (64 bits)c                   C   s   t tƒd S )zË
    Determines the current integer size in bits.

    This is useful to know if we're running in a 32 bits or a 64 bits machine.

    @rtype: int
    @return: Returns the size of L{SIZE_T} in bits.
    r   )rÒ   r¸   r    r    r    r!   Ú	_get_bits–  s   	r  c                  C   sL   zt ƒ } W n ty   tƒ } Y nw zt| jjj W S  ty%   t Y S w )a9  
    Determines the current processor architecture.

    @rtype: str
    @return:
        On error, returns:

         - L{ARCH_UNKNOWN} (C{"unknown"}) meaning the architecture could not be detected or is not known to WinAppDbg.

        On success, returns one of the following values:

         - L{ARCH_I386} (C{"i386"}) for Intel 32-bit x86 processor or compatible.
         - L{ARCH_AMD64} (C{"amd64"}) for Intel 64-bit x86_64 processor or compatible.

        May also return one of the following values if you get both Python and
        WinAppDbg to work in such machines... let me know if you do! :)

         - L{ARCH_MIPS} (C{"mips"}) for MIPS compatible processors.
         - L{ARCH_ALPHA} (C{"alpha"}) for Alpha processors.
         - L{ARCH_PPC} (C{"ppc"}) for PowerPC compatible processors.
         - L{ARCH_SHX} (C{"shx"}) for Hitachi SH processors.
         - L{ARCH_ARM} (C{"arm"}) for ARM compatible processors.
         - L{ARCH_IA64} (C{"ia64"}) for Intel Itanium processor or compatible.
         - L{ARCH_ALPHA64} (C{"alpha64"}) for Alpha64 processors.
         - L{ARCH_MSIL} (C{"msil"}) for the .NET virtual machine.
         - L{ARCH_SPARC} (C{"sparc"}) for Sun Sparc processors.

        Probably IronPython returns C{ARCH_MSIL} but I haven't tried it. Python
        on Windows CE and Windows Mobile should return C{ARCH_ARM}. Python on
        Solaris using Wine would return C{ARCH_SPARC}. Python in an Itanium
        machine should return C{ARCH_IA64} both on Wine and proper Windows.
        All other values should only be returned on Linux using Wine.
    )	r®   Ú	Exceptionr¦   Ú	_arch_mapr‡   r…   r�   ÚKeyErrorÚARCH_UNKNOWN)Úsir    r    r!   Ú	_get_arch¡  s   "

ÿÿr  c                  C   s:   t dkrd} | S zttƒ ƒ} W | S  ty   d} Y | S w )aF  
    Determines if the current process is running in Windows-On-Windows 64 bits.

    @rtype:  bool
    @return: C{True} of the current process is a 32 bit program running in a
        64 bit version of Windows, C{False} if it's either a 32 bit program
        in a 32 bit Windows or a 64 bit program in a 64 bit Windows.
    r	   F)ÚbitsrÀ   rº   r  )Úwow64r    r    r!   Ú
_get_wow64Ì  s   üþþr  c                 C   sJ  | st ƒ } | jtkr£| jdkr£| jdkrP| jdkr2| jtkr(tdks$tr&dS dS tdks.tr0dS dS | jd	krP| jtkrFtdksBtrDd
S dS tdksLtrNdS dS | jdkrœ| jdkrŽt	t
ƒrhtdksdtrfdS dS | jttfv rytdksutrwdS dS | jtkr„ttkr„dS tdksŠtrŒdS dS | jd	kr•dS | jdkrœdS | jdkr£dS dS )ad  
    Determines the current operating system.

    This function allows you to quickly tell apart major OS differences.
    For more detailed information call L{GetVersionEx} instead.

    @note:
        Wine reports itself as Windows XP 32 bits
        (even if the Linux host is 64 bits).
        ReactOS may report itself as Windows 2000 or Windows XP,
        depending on the version of ReactOS.

    @type  osvi: L{OSVERSIONINFOEXA}
    @param osvi: Optional. The return value from L{GetVersionEx}.

    @rtype: str
    @return:
        One of the following values:
         - L{OS_UNKNOWN} (C{"Unknown"})
         - L{OS_NT} (C{"Windows NT"})
         - L{OS_W2K} (C{"Windows 2000"})
         - L{OS_XP} (C{"Windows XP"})
         - L{OS_XP_64} (C{"Windows XP (64 bits)"})
         - L{OS_W2K3} (C{"Windows 2003"})
         - L{OS_W2K3_64} (C{"Windows 2003 (64 bits)"})
         - L{OS_W2K3R2} (C{"Windows 2003 R2"})
         - L{OS_W2K3R2_64} (C{"Windows 2003 R2 (64 bits)"})
         - L{OS_W2K8} (C{"Windows 2008"})
         - L{OS_W2K8_64} (C{"Windows 2008 (64 bits)"})
         - L{OS_W2K8R2} (C{"Windows 2008 R2"})
         - L{OS_W2K8R2_64} (C{"Windows 2008 R2 (64 bits)"})
         - L{OS_VISTA} (C{"Windows Vista"})
         - L{OS_VISTA_64} (C{"Windows Vista (64 bits)"})
         - L{OS_W7} (C{"Windows 7"})
         - L{OS_W7_64} (C{"Windows 7 (64 bits)"})
    r   r   r   r	   r  r  r  r  r   r  r  r  r  r   r   r  r  r
  r	  r  r  r  r  r  )ÚGetVersionExr   ÚVER_PLATFORM_WIN32_NTr   r   r*   ÚVER_NT_WORKSTATIONr  r  r±   ÚSM_SERVERR2r)   ÚVER_SUITE_STORAGE_SERVERÚVER_SUITE_WH_SERVERÚarchÚ
ARCH_AMD64)Úosvir    r    r!   Ú_get_osà  sT   &









r(  c                 C   sV   | st ƒ } d}|| jd@ d> 7 }|| jd@ d> 7 }|| jd@ d> 7 }|| jd@ 7 }|S )aD  
    Determines the current operating system.

    This function allows you to quickly tell apart major OS differences.
    For more detailed information call L{kernel32.GetVersionEx} instead.

    @note:
        Wine reports itself as Windows XP 32 bits
        (even if the Linux host is 64 bits).
        ReactOS may report itself as Windows 2000 or Windows XP,
        depending on the version of ReactOS.

    @type  osvi: L{OSVERSIONINFOEXA}
    @param osvi: Optional. The return value from L{kernel32.GetVersionEx}.

    @rtype:  int
    @return: NTDDI version number.
    r   r   r>   r   r   )r  r   r   r'   r(   )r'  Úntddir    r    r!   Ú
_get_ntddi4  s   r*  i   i   i   i   i  i  i  i  i  c                   @   s^   e Zd Zdefdefdefdefdefdefdefdefd	efd
efdefdefdefgZdS )ÚVS_FIXEDFILEINFOÚdwSignatureÚdwStrucVersionÚdwFileVersionMSÚdwFileVersionLSÚdwProductVersionMSÚdwProductVersionLSÚdwFileFlagsMaskÚdwFileFlagsÚdwFileOSÚ
dwFileTypeÚdwFileSubtypeÚdwFileDateMSÚdwFileDateLSN)r   r   r   r   r   r    r    r    r!   r+  ª  s    ór+  c                 C   ój   t jj}ttttg|_t|_t	|_
t jj}ttg|_t|_t	|_
|| d ƒ}t |¡}|| d|t|ƒƒ |S rÙ   )r¤   ÚversionÚGetFileVersionInfoAÚLPSTRr   rœ   r¨   rÂ   r©   rÃ   rÄ   ÚGetFileVersionInfoSizeAr²   Úcreate_string_bufferrª   )ÚlptstrFilenameÚ_GetFileVersionInfoAÚ_GetFileVersionInfoSizeAÚdwLenÚlpDatar    r    r!   r;  Ç  ó   


r;  c                 C   r9  rÙ   )r¤   r:  ÚGetFileVersionInfoWÚLPWSTRr   rœ   r¨   rÂ   r©   rÃ   rÄ   ÚGetFileVersionInfoSizeWr²   r>  rª   )r?  Ú_GetFileVersionInfoWÚ_GetFileVersionInfoSizeWrB  rC  r    r    r!   rE  ×  rD  rE  c                 C   óV   t jj}tttttƒg|_t|_	t
|_tdƒ}tdƒ}|| |t|ƒt|ƒƒ ||jfS rÙ   )r¤   r:  ÚVerQueryValueArœ   r<  rÑ   ÚUINTr¨   rÂ   r©   rÃ   rÄ   rª   r—   )ÚpBlockÚ
lpSubBlockÚ_VerQueryValueAÚlpBufferÚuLenr    r    r!   rK  ï  ó   
rK  c                 C   rJ  rÙ   )r¤   r:  ÚVerQueryValueWrœ   rF  rÑ   rL  r¨   rÂ   r©   rÃ   rÄ   rª   r—   )rM  rN  Ú_VerQueryValueWrP  rQ  r    r    r!   rS  ú  rR  rS  c                 C   s   g | ]	}|  d ¡s|‘qS )Ú_)Ú
startswith)Ú.0Ú_xr    r    r!   Ú
<listcomp>
  s    rY  r‘   (j  Ú__doc__ÚdefinesÚ_allÚsetÚvarsÚkeysÚ
NTDDI_WIN8ÚNTDDI_WIN7SP1Ú
NTDDI_WIN7Ú
NTDDI_WS08ÚNTDDI_VISTASP1ÚNTDDI_VISTAÚNTDDI_LONGHORNÚNTDDI_WS03SP2ÚNTDDI_WS03SP1Ú
NTDDI_WS03ÚNTDDI_WINXPSP3ÚNTDDI_WINXPSP2ÚNTDDI_WINXPSP1ÚNTDDI_WINXPÚNTDDI_WIN2KSP4ÚNTDDI_WIN2KSP3ÚNTDDI_WIN2KSP2ÚNTDDI_WIN2KSP1ÚNTDDI_WIN2KÚNTDDI_WINNT4ÚOSVERSION_MASKÚSPVERSION_MASKÚSUBVERSION_MASKÚVER_PLATFORM_WIN32sÚVER_PLATFORM_WIN32_WINDOWSr   Ú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_RESTRICTEDr#  ÚVER_SUITE_TERMINALr$  ÚVER_NT_DOMAIN_CONTROLLERÚVER_NT_SERVERr!  ÚVER_BUILDNUMBERÚVER_MAJORVERSIONÚVER_MINORVERSIONÚVER_PLATFORMIDÚVER_PRODUCT_TYPEÚVER_SERVICEPACKMAJORÚVER_SERVICEPACKMINORÚVER_SUITENAMEÚ	VER_EQUALÚVER_GREATERÚVER_GREATER_EQUALÚVER_LESSÚVER_LESS_EQUALÚVER_ANDÚVER_ORÚ	Structurer   r#   r&   r/   rÑ   ÚLPOSVERSIONINFOAÚLPOSVERSIONINFOWrë   rï   ÚPOSVERSIONINFOAÚPOSVERSIONINFOWÚPOSVERSIONINFOEXAÚPOSVERSIONINFOEXWÚSM_CXSCREENÚSM_CYSCREENÚSM_CXVSCROLLÚSM_CYHSCROLLÚSM_CYCAPTIONÚSM_CXBORDERÚSM_CYBORDERÚSM_CXDLGFRAMEÚSM_CYDLGFRAMEÚSM_CYVTHUMBÚSM_CXHTHUMBÚ	SM_CXICONÚ	SM_CYICONÚSM_CXCURSORÚSM_CYCURSORÚ	SM_CYMENUÚSM_CXFULLSCREENÚSM_CYFULLSCREENÚSM_CYKANJIWINDOWÚSM_MOUSEPRESENTÚSM_CYVSCROLLÚSM_CXHSCROLLÚSM_DEBUGÚSM_SWAPBUTTONÚSM_RESERVED1ÚSM_RESERVED2ÚSM_RESERVED3ÚSM_RESERVED4ÚSM_CXMINÚSM_CYMINÚ	SM_CXSIZEÚ	SM_CYSIZEÚ
SM_CXFRAMEÚ
SM_CYFRAMEÚSM_CXMINTRACKÚSM_CYMINTRACKÚSM_CXDOUBLECLKÚSM_CYDOUBLECLKÚSM_CXICONSPACINGÚSM_CYICONSPACINGÚSM_MENUDROPALIGNMENTÚSM_PENWINDOWSÚSM_DBCSENABLEDÚSM_CMOUSEBUTTONSÚSM_CXFIXEDFRAMEÚSM_CYFIXEDFRAMEÚSM_CXSIZEFRAMEÚSM_CYSIZEFRAMEÚ	SM_SECUREÚ	SM_CXEDGEÚ	SM_CYEDGEÚSM_CXMINSPACINGÚSM_CYMINSPACINGÚSM_CXSMICONÚSM_CYSMICONÚSM_CYSMCAPTIONÚSM_CXSMSIZEÚSM_CYSMSIZEÚSM_CXMENUSIZEÚSM_CYMENUSIZEÚ
SM_ARRANGEÚSM_CXMINIMIZEDÚSM_CYMINIMIZEDÚSM_CXMAXTRACKÚSM_CYMAXTRACKÚSM_CXMAXIMIZEDÚSM_CYMAXIMIZEDÚ
SM_NETWORKÚSM_CLEANBOOTÚ	SM_CXDRAGÚ	SM_CYDRAGÚSM_SHOWSOUNDSÚSM_CXMENUCHECKÚSM_CYMENUCHECKÚSM_SLOWMACHINEÚSM_MIDEASTENABLEDÚSM_MOUSEWHEELPRESENTÚSM_XVIRTUALSCREENÚSM_YVIRTUALSCREENÚSM_CXVIRTUALSCREENÚSM_CYVIRTUALSCREENÚSM_CMONITORSÚSM_SAMEDISPLAYFORMATÚSM_IMMENABLEDÚSM_CXFOCUSBORDERÚSM_CYFOCUSBORDERÚSM_TABLETPCÚSM_MEDIACENTERÚ
SM_STARTERr"  ÚSM_MOUSEHORIZONTALWHEELPRESENTÚSM_CXPADDEDBORDERÚSM_CMETRICSÚSM_REMOTESESSIONÚSM_SHUTTINGDOWNÚSM_REMOTECONTROLÚSM_CARETBLINKINGENABLEDÚPROCESSOR_ARCHITECTURE_UNKNOWNÚPROCESSOR_ARCHITECTURE_INTELÚPROCESSOR_ARCHITECTURE_MIPSÚPROCESSOR_ARCHITECTURE_ALPHAÚPROCESSOR_ARCHITECTURE_PPCÚPROCESSOR_ARCHITECTURE_SHXÚPROCESSOR_ARCHITECTURE_ARMÚPROCESSOR_ARCHITECTURE_IA64ÚPROCESSOR_ARCHITECTURE_ALPHA64ÚPROCESSOR_ARCHITECTURE_MSILÚPROCESSOR_ARCHITECTURE_AMD64Ú$PROCESSOR_ARCHITECTURE_IA32_ON_WIN64ÚPROCESSOR_ARCHITECTURE_SPARCÚPROCESSOR_INTEL_386ÚPROCESSOR_INTEL_486ÚPROCESSOR_INTEL_PENTIUMÚPROCESSOR_INTEL_IA64ÚPROCESSOR_AMD_X8664ÚPROCESSOR_MIPS_R4000ÚPROCESSOR_ALPHA_21064ÚPROCESSOR_PPC_601ÚPROCESSOR_PPC_603ÚPROCESSOR_PPC_604ÚPROCESSOR_PPC_620ÚPROCESSOR_HITACHI_SH3ÚPROCESSOR_HITACHI_SH3EÚPROCESSOR_HITACHI_SH4ÚPROCESSOR_MOTOROLA_821ÚPROCESSOR_SHx_SH3ÚPROCESSOR_SHx_SH4ÚPROCESSOR_STRONGARMÚPROCESSOR_ARM720ÚPROCESSOR_ARM820ÚPROCESSOR_ARM920ÚPROCESSOR_ARM_7TDMIÚPROCESSOR_OPTILr€   ÚUnionrƒ   r†   r²   r§   r¦   r®   r±   r·   rº   r¾   rÀ   rÊ   rÐ   r×   ÚGuessStringTyper  rÚ   ré   rã   rä   rñ   r  Ú	ARCH_I386Ú	ARCH_MIPSÚ
ARCH_ALPHAÚARCH_PPCÚARCH_SHXÚARCH_ARMÚ
ARCH_ARM64Ú
ARCH_THUMBÚ	ARCH_IA64ÚARCH_ALPHA64Ú	ARCH_MSILr&  Ú
ARCH_SPARCÚ	ARCH_IA32ÚARCH_X86ÚARCH_X64Ú	ARCH_ARM7Ú	ARCH_ARM8ÚARCH_T32ÚARCH_AARCH32ÚARCH_AARCH64ÚARCH_POWERPCÚARCH_HITACHIÚARCH_ITANIUMr  Ú
OS_UNKNOWNÚOS_NTÚOS_W2KÚOS_XPÚOS_XP_64ÚOS_W2K3Ú
OS_W2K3_64Ú	OS_W2K3R2ÚOS_W2K3R2_64ÚOS_W2K8Ú
OS_W2K8_64Ú	OS_W2K8R2ÚOS_W2K8R2_64ÚOS_VISTAÚOS_VISTA_64ÚOS_W7ÚOS_W7_64ÚOS_SEVENÚOS_SEVEN_64ÚOS_WINDOWS_NTÚOS_WINDOWS_2000ÚOS_WINDOWS_XPÚOS_WINDOWS_XP_64ÚOS_WINDOWS_2003ÚOS_WINDOWS_2003_64ÚOS_WINDOWS_2003_R2ÚOS_WINDOWS_2003_R2_64ÚOS_WINDOWS_2008ÚOS_WINDOWS_2008_64ÚOS_WINDOWS_2008_R2ÚOS_WINDOWS_2008_R2_64ÚOS_WINDOWS_VISTAÚOS_WINDOWS_VISTA_64ÚOS_WINDOWS_SEVENÚOS_WINDOWS_SEVEN_64r  r  r  r(  r*  r  r%  r  Ú_osviÚosÚNTDDI_VERSIONÚWINVERÚVS_FF_DEBUGÚVS_FF_PRERELEASEÚVS_FF_PATCHEDÚVS_FF_PRIVATEBUILDÚVS_FF_INFOINFERREDÚVS_FF_SPECIALBUILDÚVOS_UNKNOWNÚVOS__WINDOWS16Ú	VOS__PM16Ú	VOS__PM32ÚVOS__WINDOWS32ÚVOS_DOSÚ	VOS_OS216Ú	VOS_OS232ÚVOS_NTÚVOS_DOS_WINDOWS16ÚVOS_DOS_WINDOWS32ÚVOS_NT_WINDOWS32ÚVOS_OS216_PM16ÚVOS_OS232_PM32ÚVFT_UNKNOWNÚVFT_APPÚVFT_DLLÚVFT_DRVÚVFT_FONTÚVFT_VXDÚVFT_RESERVEDÚVFT_STATIC_LIBÚVFT2_UNKNOWNÚVFT2_DRV_PRINTERÚVFT2_DRV_KEYBOARDÚVFT2_DRV_LANGUAGEÚVFT2_DRV_DISPLAYÚVFT2_DRV_MOUSEÚVFT2_DRV_NETWORKÚVFT2_DRV_SYSTEMÚVFT2_DRV_INSTALLABLEÚVFT2_DRV_SOUNDÚVFT2_DRV_COMMÚVFT2_DRV_RESERVEDÚVFT2_DRV_VERSIONED_PRINTERÚVFT2_FONT_RASTERÚVFT2_FONT_VECTORÚVFT2_FONT_TRUETYPEr+  ÚPVS_FIXEDFILEINFOÚLPVS_FIXEDFILEINFOr;  rE  ÚGetFileVersionInforK  rS  ÚVerQueryValueÚ
differenceÚ__all__Úsortr    r    r    r!   Ú<module>   sÜ  
	

	õ


+
T






