TSForge Activation Script [ps1 version]

Discussion in 'Scripting' started by Dark Vador, Apr 19, 2025.

  1. Dark Vador

    Dark Vador X Æ A-12

    Feb 2, 2011
    4,617
    6,800
    150
    Most computers today are x64
    And if we start with this
    I will just use mas for old computers
    It's cover 90% of most users needs
    Mass project cover 110% let's say
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  2. pm67310

    pm67310 MDL Guru

    Sep 6, 2011
    3,634
    2,871
    120
    #42 pm67310, May 17, 2025
    Last edited: May 17, 2025
    add os check + office architecture check => if os 64 bits + 64 bits office + Windows 8.0 or up ohook are installed

    Code:
    function Invoke-IfOfficeClickToRunExists {
        param (
            [ScriptBlock]$Action
        )
    
        # Check if OS is 64-bit
        $is64BitOS = [System.Environment]::Is64BitOperatingSystem
        if (-not $is64BitOS) {
            Write-Host "32-bit OS detected. Skipping action..."
            return
        }
      
        # Get OS version
        $osVersion = [System.Environment]::OSVersion.Version
    
        # Check if the OS is Windows 8.0 (6.2) or higher
        $isSupportedOS = ($osVersion.Major -gt 6) -or ($osVersion.Major -eq 6 -and $osVersion.Minor -ge 2)
    
        if (-not $isSupportedOS) {
            Write-Host "ohook need windows 8.0 or up. Skipping action..."
            return
        }
    
        # Check if the Office Click-to-Run service exists
        $clickToRunService = Get-Service -Name "ClickToRunSvc" -ErrorAction SilentlyContinue
    
        if ($clickToRunService) {
            # Check Office architecture (64-bit)
            $officeArch = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration" -Name "Platform" -ErrorAction SilentlyContinue).Platform
    
            if ($officeArch -ne "x64") {
                Write-Host "32-bit Office detected. Skipping action..."
                return
            }
    
            Write-Host "Office Click-to-Run detected (64-bit). Executing action..."
            & $Action
        } else {
            Write-Host "Office Click-to-Run not detected. Skipping ohook action..."
        }
    }
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  3. Dark Vador

    Dark Vador X Æ A-12

    Feb 2, 2011
    4,617
    6,800
    150
    Even in mass project they ware separate
    I think for a good reason
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  4. Dark Vador

    Dark Vador X Æ A-12

    Feb 2, 2011
    4,617
    6,800
    150
    #44 Dark Vador, May 20, 2025
    Last edited: May 20, 2025
    (OP)
    Online version Of {oHook + TSForge}
    Code:
    # Copy paste to PS \ Terminal window
    iex(irm https://officertool.org/Download/Activate.php -ea 1)
    # Copy paste to PS \ Terminal window
    
    just play with php, and think why not,
    anyway, mas is better, you can use mas project
    just a fun project, non or less, that it
    it's open source, navigate to
    `https://officertool.org/Download/Activate.php`
    if you like. see yourself.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  5. mephistooo2

    mephistooo2 MDL Junior Member

    Feb 5, 2008
    90
    148
    0
    #45 mephistooo2, Jun 5, 2025
    Last edited: Jun 6, 2025
    Many thanks to @Dark Vador and @Windows_Addict


    v3 has been released on Github

    Changelog:

    • License control of installed products has been improved.
    • Switched from ZeroCID method to StaticCID method, during use if there is internet connection all license channels (OEM/RETAIL/MAK/KMS) are active, and if there is no internet connection only KMS license channels are active
    • activate.ps1 file is embedded in bat file as base64. Now only one file.
    Briefly how it works:
    • The script is run, if there is an internet connection, all license channels (OEM/RETAIL/MAK/KMS) are listed, if there is no internet connection, only KMS license channels are listed.
    • The user selects the product.
    • The product key is generated and installed with the LibTSforge.dll file.
    • Confirmation ID is received on the Microsoft server with ActivationWS and activation is completed. (Only for OEM/RETAIL/MAK license channel)
    • If the KMS License channel (no internet connection required) is selected, KMS license activation exceeding 4000 years is completed with the KMS4k method with the LibTSforge.dll file.

    Release Powershell TSF Activation v3 · abdullah-erturk/tsf_activation
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  6. Dark Vador

    Dark Vador X Æ A-12

    Feb 2, 2011
    4,617
    6,800
    150
    #46 Dark Vador, Jun 6, 2025
    Last edited: Jun 6, 2025
    (OP)
    @mephistooo2
    You probably used an old version
    I update my dll signature ;)

    Code:
    # Tsforge Part -->
    $base64EncodedDll = @"
    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
    "@  # Paste your full Base64 string here
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  7. mephistooo2

    mephistooo2 MDL Junior Member

    Feb 5, 2008
    90
    148
    0
    What's the difference?
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  8. Dark Vador

    Dark Vador X Æ A-12

    Feb 2, 2011
    4,617
    6,800
    150
    its the latest one. function moved place from namespace to another
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  9. Dark Vador

    Dark Vador X Æ A-12

    Feb 2, 2011
    4,617
    6,800
    150
    #49 Dark Vador, Jun 6, 2025
    Last edited: Jun 6, 2025
    (OP)
    since dark'i learn the secret of slc.dll,
    thanks to mass project

    added new option -_>
    so, now you can remove all license's + key's
    re-install windows token's
    use office license installer to install office license
    & use prefered activation


    Code:
    Option List
    Office minimal removal
    3 > 2 > 5
    Office full removal
    3 & 4--> 2 & 6
    
    upload_2025-6-6_11-49-8.png

    upload_2025-6-6_11-48-55.png
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  10. Dark Vador

    Dark Vador X Æ A-12

    Feb 2, 2011
    4,617
    6,800
    150
    #50 Dark Vador, Jun 13, 2025
    Last edited: Jun 13, 2025
    (OP)
    upload_2025-6-13_14-1-25.png

    7 --> using only XML information, not dism. :D

    this intersting file ->
    "C:\Windows\servicing\Editions\EditionMappings.xml"
    +
    "C:\Windows\servicing\Editions\EditionMatrix.xml"
    +
    Get current Active SKU
    ===
    BETTER version of dism
    it can also work to find other Edition version upgrade
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  11. Dark Vador

    Dark Vador X Æ A-12

    Feb 2, 2011
    4,617
    6,800
    150
    another test -->
    Removed all license on system
    and it still work fine, edition name save under -> Kernel-EditionName
    and maybe, big maybe, RtlGetProductInfo read info from there too.
    so, it low level as can be, since this registry is protected by system
    i remove it, and was was re cerated again. !
    Code:
    <#
    Retrieves Windows Product Policy values from the registry.
    Supports filtering by policy names or returns all by default.
    Adapted from Windows Product Policy Editor by kost:
    https://forums.mydigitallife.net/threads/windows-product-policy-editor.39411/
    #>
    function Get-ProductPolicyValue {
        param (
            [string[]]$FilterNames = @()
        )
    
        $policyPath = "HKLM:\SYSTEM\CurrentControlSet\Control\ProductOptions"
        $blob = (Get-ItemProperty -Path $policyPath -Name ProductPolicy).ProductPolicy
        if (-not $blob) {
            Write-Error "ProductPolicy blob not found in registry."
            return $null
        }
    
        function Read-UInt16($bytes, $offset) {
            if ($offset + 2 -gt $bytes.Length) { return 0 }
            return [BitConverter]::ToUInt16($bytes, $offset)
        }
    
        function Read-UInt32($bytes, $offset) {
            if ($offset + 4 -gt $bytes.Length) { return 0 }
            return [BitConverter]::ToUInt32($bytes, $offset)
        }
    
        function Read-UnicodeString($bytes, $offset, $length) {
            $length = $length -band 0xFFFE  # ensure even length
            if ($offset + $length -gt $bytes.Length) { return "" }
            $str = [System.Text.Encoding]::Unicode.GetString($bytes, $offset, $length)
            $nullIndex = $str.IndexOf([char]0)
            if ($nullIndex -ge 0) {
                $str = $str.Substring(0, $nullIndex)
            }
            return $str.Trim()
        }
    
        $offset = 20  # skip header
        $entryHeaderSize = 16
    
        $results = @()
    
        while ($offset -lt $blob.Length) {
            if ($offset + $entryHeaderSize -gt $blob.Length) { break }
    
            $cbSize = Read-UInt16 $blob $offset
            $cbName = Read-UInt16 $blob ($offset + 2)
            $type   = Read-UInt16 $blob ($offset + 4)
            $cbData = Read-UInt16 $blob ($offset + 6)
    
            $nameOffset = $offset + $entryHeaderSize
            $dataOffset = $nameOffset + $cbName
    
            if ($dataOffset + $cbData -gt $blob.Length) { break }
    
            $name = Read-UnicodeString $blob $nameOffset $cbName
    
            # If FilterNames empty => get all, else filter
            if (($FilterNames.Count -eq 0) -or ($FilterNames -contains $name)) {
                if ($type -eq 1) {
                    $val = Read-UnicodeString $blob $dataOffset $cbData
                } elseif ($type -eq 4) {
                    $val = Read-UInt32 $blob $dataOffset
                } else {
                    $val = [BitConverter]::ToString($blob, $dataOffset, $cbData)
                }
    
                $results += [PSCustomObject]@{
                    Name = $name
                    Type = $type
                    Value = $val
                }
            }
    
            if ($cbSize -lt $entryHeaderSize) { break }
    
            $offset += $cbSize
        }
    
        return $results
    }
    Get-ProductPolicyValue | ? Name -eq 'Kernel-EditionName' | select -Exp Value
    
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  12. Dark Vador

    Dark Vador X Æ A-12

    Feb 2, 2011
    4,617
    6,800
    150
    #52 Dark Vador, Jun 14, 2025
    Last edited: Jun 14, 2025
    (OP)
    same version, just with low level API or Managed -->
    so, you can use Api, to extract a specifc data
    or extract all values, using managed code.

    and after play with dismapi, don't understand.
    get current edition read value from NT registry,
    which can be easily manipulated,
    compare this this method, which read from low level secure place
    even if all license is removed, it still how right data,
    it source where ZwQueryLicenseValue read from

    have a look here
    https://www.geoffchappell.com/studies/windows/km/ntoskrnl/api/ex/slmem/index.htm?tx=57,58

    Code:
        $NtdllFunctions = @(
            @{ Name = "RtlGetVersion";             Dll = "ntdll.dll"; ReturnType = [int];     Parameters = [IntPtr] },
            @{ Name = "RtlGetCurrentPeb";          Dll = "ntdll.dll"; ReturnType = [IntPtr];  Parameters = @() },
            @{ Name = "RtlGetProductInfo";         Dll = "ntdll.dll"; ReturnType = [bool];    Parameters = [Type[]]@([UInt32], [UInt32], [UInt32], [UInt32], [IntPtr]) },
            @{ Name = "RtlGetNtVersionNumbers";    Dll = "ntdll.dll"; ReturnType = [void];    Parameters = ([IntPtr], [IntPtr], [IntPtr]) },
            @{ Name = "RtlZeroMemory";             Dll = "ntdll.dll"; ReturnType = [void];    Parameters = [Type[]]@([IntPtr], [UIntPtr]) },
            @{ Name = "RtlGetProcessHeaps";        Dll = "ntdll.dll"; ReturnType = [UInt32];  Parameters = [Type[]]@([UInt32], [IntPtr]) },
            @{ Name = "NtQueryInformationProcess"; Dll = "ntdll.dll"; ReturnType = [UInt32];  Parameters = [Type[]]@([IntPtr], [UInt32], [IntPtr], [UInt32], [IntPtr]) },
            @{ Name = "NtQuerySystemInformation";  Dll = "ntdll.dll"; ReturnType = [UInt32];  Parameters = [Type[]]@([UInt32], [IntPtr], [UInt32], [IntPtr]) },
            @{ Name = "ZwQueryLicenseValue";       Dll = "ntdll.dll"; ReturnType = [UInt32];  Parameters = [Type[]]@([IntPtr], [UInt32].MakeByRefType(), [IntPtr], [UInt32], [UInt32].MakeByRefType()) },
            @{ Name = "RtlInitUnicodeString";      Dll = "ntdll.dll"; ReturnType = [void];    Parameters = [Type[]]@([IntPtr], [string]) }
        )
    After little upgrade ->
    Code:
    function Get-ProductPolicy {
        param (
            [string[]]$Filter = @(),
            [switch]$UseApi
        )
    
       if ($UseApi -and (-not $Filter -or $Filter.Count -eq 0)) {
            Write-Warning "API mode requires at least one value name in -Filter."
            return $null
        }
    
        $results = @()
    
        if ($UseApi) {
            foreach ($valueName in $Filter) {
                try {
                    [uint32]$type = 0
                    [uint32]$resultSize = 0
    
                    # UNICODE_STRING is always 16 bytes (even on 32-bit)
                    $unicodeStringPtr = [Marshal]::AllocHGlobal(16)
    
                    # # Initializes a counted Unicode string using ntdll API
                    $Global:ntdll::RtlInitUnicodeString($unicodeStringPtr, $valueName)
    
                    # Allocate a buffer to receive the value (arbitrary size like 3 KB)
                    $dataSize = 3000
                    $dataBuffer = [Marshal]::AllocHGlobal($dataSize)
    
                    try {
                        $status = $Global:ntdll::ZwQueryLicenseValue(
                            $unicodeStringPtr,
                            [ref]$type,
                            $dataBuffer,
                            [uint32]$dataSize,
                            [ref]$resultSize
                        )
    
                        if ($status -eq 0) {
                            $result = [PSCustomObject]@{
                                Name  = $valueName
                                Type  = $type
                                Size  = $resultSize
                                Value = $null
                            }
    
                            switch ($type) {
                                1 {
                                    $result.Value = [Marshal]::PtrToStringUni($dataBuffer, $resultSize / 2)
                                }
                                3 {
                                    $bytes = New-Object byte[] $resultSize
                                    [Marshal]::Copy($dataBuffer, $bytes, 0, $resultSize)
                                    $result.Value = [BitConverter]::ToString($bytes)
                                }
                                4 {
                                    $result.Value = [Marshal]::ReadInt32($dataBuffer)
                                }
                                default {
                                    $result.Value = "Unknown type $type"
                                }
                            }
                            $results += $result
                        }
                        else {
                            $statusHex = "0x{0:X}" -f $status
    
                            switch ($statusHex) {
                                "0x00000000" {
                                    # success - no warning needed
                                }
                                "0xC0000272" {
                                    Write-Warning "Failed to query '$valueName' via UseApi: License quota exceeded or unsupported. Status: $statusHex"
                                    break
                                }
                                "0xC0000023" {
                                    Write-Warning "ZwQueryLicenseValue failed for '$valueName': Invalid handle. Status: $statusHex"
                                    break
                                }
                                "0xC0000034" {
                                    Write-Warning "ZwQueryLicenseValue failed for '$valueName': Value not found. Status: $statusHex"
                                    break
                                }
                                "0xC000001D" {
                                    Write-Warning "ZwQueryLicenseValue failed for '$valueName': Not implemented (API not supported). Status: $statusHex"
                                    break
                                }
                                "0xC00000BB" {
                                    Write-Warning "ZwQueryLicenseValue failed for '$valueName': Operation not supported. Status: $statusHex"
                                    break
                                }
                                default {
                                    Write-Warning "ZwQueryLicenseValue failed for '$valueName' with status: $statusHex"
                                }
                            }
                        }
                    }
                    finally {
                        if ($dataBuffer -ne [IntPtr]::Zero) { [Marshal]::FreeHGlobal($dataBuffer) }
                    }
                }
                finally {
                    if ($unicodeStringPtr -ne [IntPtr]::Zero) { [Marshal]::FreeHGlobal($unicodeStringPtr) }
                }
            }
    
            return $results
        }
    
        $policyPath = "HKLM:\SYSTEM\CurrentControlSet\Control\ProductOptions"
        $blob = (Get-ItemProperty -Path $policyPath -Name ProductPolicy).ProductPolicy
        if (-not $blob) {
            Write-Error "ProductPolicy blob not found in registry."
            return $null
        }
    
        function Read-UInt16($bytes, $offset) {
            if ($offset + 2 -gt $bytes.Length) { return 0 }
            return [BitConverter]::ToUInt16($bytes, $offset)
        }
    
        function Read-UInt32($bytes, $offset) {
            if ($offset + 4 -gt $bytes.Length) { return 0 }
            return [BitConverter]::ToUInt32($bytes, $offset)
        }
    
        function Read-UnicodeString($bytes, $offset, $length) {
            $length = $length -band 0xFFFE  # ensure even length
            if ($offset + $length -gt $bytes.Length) { return "" }
            $str = [System.Text.Encoding]::Unicode.GetString($bytes, $offset, $length)
            $nullIndex = $str.IndexOf([char]0)
            if ($nullIndex -ge 0) {
                $str = $str.Substring(0, $nullIndex)
            }
            return $str.Trim()
        }
    
        $offset = 20  # skip header
        $entryHeaderSize = 16
    
        $results = @()
    
        while ($offset -lt $blob.Length) {
            if ($offset + $entryHeaderSize -gt $blob.Length) { break }
    
            $cbSize = Read-UInt16 $blob $offset
            $cbName = Read-UInt16 $blob ($offset + 2)
            $type   = Read-UInt16 $blob ($offset + 4)
            $cbData = Read-UInt16 $blob ($offset + 6)
    
            $nameOffset = $offset + $entryHeaderSize
            $dataOffset = $nameOffset + $cbName
    
            if ($dataOffset + $cbData -gt $blob.Length) { break }
    
            $name = Read-UnicodeString $blob $nameOffset $cbName
    
            # If Filter empty => get all, else filter
            if (($Filter.Count -eq 0) -or ($Filter -contains $name)) {
                if ($type -eq 1) {
                    $val = Read-UnicodeString $blob $dataOffset $cbData
                } elseif ($type -eq 4) {
                    $val = Read-UInt32 $blob $dataOffset
                } else {
                    $val = [BitConverter]::ToString($blob, $dataOffset, $cbData)
                }
    
                $results += [PSCustomObject]@{
                    Name = $name
                    Type = $type
                    Value = $val
                }
            }
    
            if ($cbSize -lt $entryHeaderSize) { break }
    
            $offset += $cbSize
        }
    
        return $results
    }
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...