-
Notifications
You must be signed in to change notification settings - Fork 0
Krowne/WinInfo
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
# Cambiar la página de códigos a UTF-8
chcp 65001
# Configurar la consola para usar UTF-8
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
# Array con las licencias genéricas
$genericLicenses = @(
"YTMG3-N6DKC-DKB77-7M9GH-8HVX7",
"4CPRK-NM3K3-X6XXQ-RXX86-WXCHW",
"BT79Q-G7N6G-PGBYW-4YWX6-6F4BT",
"N2434-X9D7W-8PF6X-8DV9T-8TYMD",
"VK7JG-NPHTM-C97JM-9MPGT-3V66T",
"2B87N-8KFHP-DKV6R-Y2C8J-PKCKT",
"DXG7C-N36C4-C4HTG-X4T3X-2YV77",
"WYPNQ-8C467-V2W6J-TX4WX-WT2RQ",
"8PTT6-RNW4C-6V7J2-C2D3X-MHBPB",
"GJTYN-HDMQY-FRR76-HVGC7-QPF8P",
"YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY",
"84NGF-MHBT6-FXBX8-QWJK7-DRR8H",
"XGVPP-NMH47-7TTHJ-W3FW7-8HV2C",
"WGGHN-J84D6-QYCPR-T7PJ7-X766F",
"FW7NV-4T673-HF4VX-9X4MM-B4H4T",
"TX9XD-98N7V-6WMQ6-BX7FG-H8Q99",
"3KHY7-WNT83-DGQKR-F7HPR-844BM",
"7HNRX-D7KGG-3K4RQ-4WPJ4-YTDFH",
"PVMJN-6DFY6-9CCP6-7BKTT-D3WVR",
"W269N-WFGWX-YVC9B-4J6C9-T83GX",
"MH37W-N47XK-V7XM9-C7227-GCQG9",
"NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J",
"9FNHH-K3HBT-3W4TD-6383H-6XYWF",
"6TP4R-GNPTD-KYYHQ-7B7DP-J447Y",
"YVWGF-BXNMC-HTQYQ-CPQ99-66QFC",
"NW6C2-QMPVW-D7KKK-3GKT6-VCFB2",
"2WH4N-8QGBV-H22JP-CT43Q-MDWWJ",
"NPPR9-FWDCX-D2C8J-H872K-2YT43",
"DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4",
"YYVX9-NTFWV-6MDM3-9PT4T-4M68B",
"44RPN-FTY23-9VTTB-MP9BX-T84FV",
"M7XTQ-FN8P6-TTKYV-9D4CC-J462D",
"92NFX-8DJQP-P6BBQ-THF9C-7CG2H",
"46J3N-RY6B3-BJFDY-VBFT9-V22HG",
"PGGM7-N77TC-KVR98-D82KJ-DGPHV",
"RHGJR-N7FVY-Q3B8F-KBQ6V-46YP4",
"GH37Y-TNG7X-PP2TK-CMRMT-D3WV4",
"68WP7-N2JMW-B676K-WR24Q-9D7YC",
"37GNV-YCQVD-38XP9-T848R-FC2HD",
"33CY4-NPKCC-V98JP-42G8W-VH636",
"NF6HC-QH89W-F8WYV-WWXV4-WFG6P",
"NH7W7-BMC3R-4W9XT-94B6D-TCQG3",
"NTRHT-XTHTG-GBWCG-4MTMP-HH64C",
"7B6NC-V3438-TRQG7-8TCCX-H6DDY",
"3NF4D-GF9GY-63VKH-QRC3V-7QW8P",
"NK96Y-D9CD8-W44CQ-R8YTK-DYJWX",
"FWN7H-PF93Q-4GGP8-M8RF3-MDWWW",
"WNMTR-4C88C-JK8YV-HQ7T2-76DF9",
"2F77B-TNFGY-69QQF-B8YKP-D69TJ",
"DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ",
"QFFDN-GRT3P-VKWWX-X7T3R-8B639",
"CB7KF-BWN84-R7R2Y-793K2-8XDDG",
"WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY",
"JCKRF-N37P4-C2D82-9YXRT-4M63B",
"WMDGN-G9PQG-XVVXX-R3X43-63DFG",
"N69G4-B89J2-4G8F4-WWYCC-J464C",
"WVDHN-86M7X-466P6-VHXV7-YY726",
"46V6N-VCBYR-KT9KT-6Y4YF-QGJYH",
"V7C3N-3W6CM-PDKR2-KW8DQ-RJMRD",
"7QNT4-HJDDR-T672J-FBFP4-2J8X9",
"4NX4X-C98R3-KBR22-MGBWC-D667X",
"NH7GX-2BPDT-FDPBD-WD893-RJMQ4",
"NTTX3-RV7VB-T7X7F-WQYYY-9Y92"
)
# Obtiene la información de la versión de Windows
$osInfo = [System.Environment]::OSVersion.Version
# Define la versión de Windows y su edición
if ($osInfo.Major -eq 10) {
# Windows 10
$edition = Get-WmiObject -Class Win32_OperatingSystem | Select-Object -ExpandProperty Caption
$windowsVersion = "Windows 10"
} elseif ($osInfo.Major -eq 6 -and $osInfo.Minor -eq 1) {
# Windows 7
$edition = "Windows 7"
$windowsVersion = "Windows 7"
} elseif ($osInfo.Major -eq 6 -and $osInfo.Minor -eq 2) {
# Windows 8
$edition = "Windows 8"
$windowsVersion = "Windows 8"
} elseif ($osInfo.Major -eq 6 -and $osInfo.Minor -eq 3) {
# Windows 8.1
$edition = "Windows 8.1"
$windowsVersion = "Windows 8.1"
} elseif ($osInfo.Major -eq 11) {
# Windows 11
$edition = Get-WmiObject -Class Win32_OperatingSystem | Select-Object -ExpandProperty Caption
$windowsVersion = "Windows 11"
} else {
$edition = "Versión de Windows no identificada"
$windowsVersion = "Versión de Windows no identificada"
}
function Get-WindowsProductKeyFromRegistry {
$is64Bit = [Environment]::Is64BitOperatingSystem
if ($is64Bit) {
$view = [Microsoft.Win32.RegistryView]::Registry64
} else {
$view = [Microsoft.Win32.RegistryView]::Registry32
}
$localKey = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, $view)
$registryKey = $localKey.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion")
$registryKeyValue = $registryKey.GetValue("DigitalProductId")
$localKey.Close()
if (-not $registryKeyValue) {
Write-Host "Failed to get DigitalProductId from registry"
return
}
$digitalProductId = [byte[]]$registryKeyValue
$isWin8OrUp = ([Environment]::OSVersion.Version.Major -eq 6 -and [Environment]::OSVersion.Version.Minor -ge 2) -or [Environment]::OSVersion.Version.Major -gt 6
return (Get-WindowsProductKeyFromDigitalProductId -DigitalProductId $digitalProductId -DigitalProductIdVersion $(if ($isWin8OrUp) { "Windows8AndUp" } else { "UpToWindows7" }))
}
function Get-WindowsProductKeyFromDigitalProductId {
param (
[byte[]]$DigitalProductId,
[string]$DigitalProductIdVersion
)
if ($DigitalProductIdVersion -eq "Windows8AndUp") {
return DecodeProductKeyWin8AndUp -DigitalProductId $DigitalProductId
} else {
return DecodeProductKey -DigitalProductId $digitalProductId
}
}
function DecodeProductKey {
param (
[byte[]]$DigitalProductId
)
$keyStartIndex = 52
$keyEndIndex = $keyStartIndex + 14
$decodeLength = 29
$decodeStringLength = 15
$decodedChars = @()
$digits = 'B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'M', 'P', 'Q', 'R', 'T', 'V', 'W', 'X', 'Y', '2', '3', '4', '6', '7', '8', '9'
for ($i = $keyStartIndex; $i -le $keyEndIndex; $i++) {
$decodedChars += $DigitalProductId[$i]
}
for ($i = $decodeLength - 1; $i -ge 0; $i--) {
if (($i + 1) % 6 -eq 0) {
$decodedChars[$i] = '-'
} else {
$digitMapIndex = 0
for ($j = $decodeStringLength - 1; $j -ge 0; $j--) {
$byteValue = ($digitMapIndex -shl 8) -bor $DigitalProductId[$j]
$digitMapIndex = $byteValue % 24
$DigitalProductId[$j] = [math]::Floor($byteValue / 24)
$decodedChars[$i] = $digits[$digitMapIndex]
}
}
}
return -join $decodedChars
}
function DecodeProductKeyWin8AndUp {
param (
[byte[]]$DigitalProductId
)
$key = ""
$keyOffset = 52
$digits = "BCDFGHJKMPQRTVWXY2346789"
$isWin8 = ($DigitalProductId[66] -shr 1) -band 1
$DigitalProductId[66] = ($DigitalProductId[66] -band 0xf7) -bor ($isWin8 -shl 2)
for ($i = 24; $i -ge 0; $i--) {
$current = 0
for ($j = 14; $j -ge 0; $j--) {
$current = $current * 256
$current = $DigitalProductId[$j + $keyOffset] + $current
$DigitalProductId[$j + $keyOffset] = [math]::Floor($current / 24)
$current = $current % 24
}
$key = $digits[$current] + $key
}
$keypart1 = $key.Substring(1, $current)
$keypart2 = $key.Substring($current + 1)
$key = $keypart1 + "N" + $keypart2
for ($i = 5; $i -lt $key.Length; $i += 6) {
$key = $key.Insert($i, "-")
}
return $key
}
$key = Get-WindowsProductKeyFromRegistry
# Llamar a la función principal para obtener y mostrar la clave del producto
cls
# Muestra la versión y la edición de Windows por pantalla
Write-Host "================================" -ForegroundColor White
Write-Host "= Clave de licencia de Windows =" -ForegroundColor White
Write-Host "================================" -ForegroundColor White
Write-Host " "
Write-Host "Edición: " -NoNewline -ForegroundColor Gray
Write-Host $edition -ForegroundColor Cyan
# Comprobar si la clave de licencia es genérica
if ($genericLicenses -contains $key) {
Write-Host "Número de licencia: " -NoNewline -ForegroundColor Gray
Write-Host -ForegroundColor Yellow $key
Write-Host "Tipo de licencia: " -NoNewline -ForegroundColor Gray
Write-Host "Genérica" -ForegroundColor Yellow
} else {
Write-Host "Número de licencia: " -NoNewline -ForegroundColor Gray
Write-Host -ForegroundColor Green $key
Write-Host "Tipo de licencia: " -NoNewline -ForegroundColor Gray
Write-Host "Original" -ForegroundColor Green
}
Write-Host " "
# Borrar historial
Write-Host " "
$historyFilePath = Join-Path $env:USERPROFILE 'AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt'
if (Test-Path $historyFilePath) {
Remove-Item $historyFilePath
}
About
Obtener información del sistema
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published