:py:mod:`dissect.target.plugins.os.windows.productkey` ====================================================== .. py:module:: dissect.target.plugins.os.windows.productkey Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: dissect.target.plugins.os.windows.productkey.WindowsProductKeyPlugin Functions ~~~~~~~~~ .. autoapisummary:: :nosignatures: dissect.target.plugins.os.windows.productkey.decode_cd_key Attributes ~~~~~~~~~~ .. autoapisummary:: dissect.target.plugins.os.windows.productkey.pid_def dissect.target.plugins.os.windows.productkey.c_pid dissect.target.plugins.os.windows.productkey.WindowsProductKeyRecord .. py:data:: pid_def :value: Multiline-String .. raw:: html
Show Value .. code-block:: python """ struct DigitalProductId { DWORD uiSize; SHORT MajorVersion; SHORT MinorVersion; CHAR szProductId[24]; DWORD uiKeyIdx; CHAR szEditionId[16]; CHAR bCDKey[16]; DWORD uiCloneStatus; DWORD uiTime; DWORD uiRandom; DWORD uiLt; DWORD uiLicenseData[2]; CHAR sOemId[8]; DWORD uiBundleId; CHAR sHardwareIdStatic[8]; DWORD uiHardwareIdTypeStatic; DWORD uiBiosChecksumStatic; DWORD uiVolSerStatic; DWORD uiTotalRamStatic; DWORD uiVideoBiosChecksumStatic; CHAR sHardwareIdDynamic[8]; DWORD uiHardwareIdTypeDynamic; DWORD uiBiosChecksumDynamic; DWORD uiVolSerDynamic; DWORD uiTotalRamDynamic; DWORD uiVideoBiosChecksumDynamic; DWORD uiCRC32; }; struct DigitalProductId4 { DWORD uiSize; SHORT MajorVersion; SHORT MinorVersion; WCHAR szAdvancedPid[64]; WCHAR szActivationId[64]; WCHAR szOemID[8]; WCHAR szEditionType[260]; BYTE bIsUpgrade; CHAR bReserved[7]; CHAR bCDKey[16]; CHAR bCDKey256Hash[32]; CHAR b256Hash[32]; WCHAR szEditionId[64]; WCHAR szKeyType[64]; WCHAR szEULA[64]; }; """ .. raw:: html
.. py:data:: c_pid .. py:data:: WindowsProductKeyRecord .. py:class:: WindowsProductKeyPlugin(target: dissect.target.target.Target) Bases: :py:obj:`dissect.target.plugin.Plugin` Windows product key plugin. .. py:attribute:: KEY :value: 'HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion' .. py:attribute:: VALUES :value: ('DigitalProductId4', 'DigitalProductId') .. py:method:: check_compatible() -> None Perform a compatibility check with the target. This function should return ``None`` if the plugin is compatible with the current target (``self.target``). For example, check if a certain file exists. Otherwise it should raise an :class:`UnsupportedPluginError`. :raises UnsupportedPluginError: If the plugin could not be loaded. .. py:method:: productkey() -> collections.abc.Iterator[WindowsProductKeyRecord] Yield Windows product key(s) of the target. .. rubric:: References - Reversing ``pidgen.dll`` and ````pidgenx.dll``. - https://www.licenturion.com/xp/fully-licensed-wpa.txt - https://github.com/Endermanch/XPKeygen .. py:function:: decode_cd_key(input: bytes | bytearray) -> str Decode the given bytes to a Windows CD key using a pseudo base24 implementation.