mirror of
https://github.com/pbatard/Fido.git
synced 2025-09-17 14:48:02 +02:00
Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
f8aacf0703 | ||
![]() |
24a7a04d78 | ||
![]() |
eefc2453c4 | ||
![]() |
ed1a6b31a6 | ||
![]() |
9beb231b78 | ||
![]() |
ce7cb583e5 | ||
![]() |
0287fe274e | ||
![]() |
129e5d6f5c | ||
![]() |
79bcf10633 |
103
Fido.ps1
103
Fido.ps1
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Fido v1.28 - Feature ISO Downloader, for retail Windows images and UEFI Shell
|
# Fido v1.35 - Feature ISO Downloader, for retail Windows images and UEFI Shell
|
||||||
# Copyright © 2019-2022 Pete Batard <pete@akeo.ie>
|
# Copyright © 2019-2022 Pete Batard <pete@akeo.ie>
|
||||||
# Command line support: Copyright © 2021 flx5
|
# Command line support: Copyright © 2021 flx5
|
||||||
# ConvertTo-ImageSource: Copyright © 2016 Chris Carter
|
# ConvertTo-ImageSource: Copyright © 2016 Chris Carter
|
||||||
@@ -80,11 +80,12 @@ $code = @"
|
|||||||
|
|
||||||
if (!$Cmd) {
|
if (!$Cmd) {
|
||||||
Write-Host Please Wait...
|
Write-Host Please Wait...
|
||||||
|
$Drawing_Assembly = "System.Drawing"
|
||||||
|
# PowerShell 7 altered the name of the Drawing assembly...
|
||||||
if ($host.version -ge "7.0") {
|
if ($host.version -ge "7.0") {
|
||||||
Add-Type -WarningAction Ignore -IgnoreWarnings -MemberDefinition $code -Namespace Gui -UsingNamespace System.Runtime, System.IO, System.Text, System.Drawing, System.Globalization -ReferencedAssemblies System.Drawing.Common -Name Utils -ErrorAction Stop
|
$Drawing_Assembly += ".Common"
|
||||||
} else {
|
|
||||||
Add-Type -MemberDefinition $code -Namespace Gui -UsingNamespace System.IO, System.Text, System.Drawing, System.Globalization -ReferencedAssemblies System.Drawing -Name Utils -ErrorAction Stop
|
|
||||||
}
|
}
|
||||||
|
Add-Type -ErrorAction Stop -WarningAction Ignore -IgnoreWarnings -MemberDefinition $code -Namespace Gui -UsingNamespace System.Runtime, System.IO, System.Text, System.Drawing, System.Globalization -ReferencedAssemblies $Drawing_Assembly -Name Utils
|
||||||
Add-Type -AssemblyName PresentationFramework
|
Add-Type -AssemblyName PresentationFramework
|
||||||
# Hide the powershell window: https://stackoverflow.com/a/27992426/1069307
|
# Hide the powershell window: https://stackoverflow.com/a/27992426/1069307
|
||||||
[Gui.Utils]::ShowWindow(([System.Diagnostics.Process]::GetCurrentProcess() | Get-Process).MainWindowHandle, 0) | Out-Null
|
[Gui.Utils]::ShowWindow(([System.Diagnostics.Process]::GetCurrentProcess() | Get-Process).MainWindowHandle, 0) | Out-Null
|
||||||
@@ -97,6 +98,16 @@ $ko = 0x20000
|
|||||||
$WindowsVersions = @(
|
$WindowsVersions = @(
|
||||||
@(
|
@(
|
||||||
@("Windows 11", "windows11"),
|
@("Windows 11", "windows11"),
|
||||||
|
@(
|
||||||
|
"22H2 v1 (Build 22621.525 - 2022.10)",
|
||||||
|
@("Windows 11 Home/Pro/Edu", 2370),
|
||||||
|
@("Windows 11 Home China ", ($zh + 2371))
|
||||||
|
),
|
||||||
|
@(
|
||||||
|
"22H2 (Build 22621.382 - 2022.09)",
|
||||||
|
@("Windows 11 Home/Pro/Edu", 2360),
|
||||||
|
@("Windows 11 Home China ", ($zh + 2361))
|
||||||
|
),
|
||||||
@(
|
@(
|
||||||
"21H2 v1 (Build 22000.318 - 2021.11)",
|
"21H2 v1 (Build 22000.318 - 2021.11)",
|
||||||
@("Windows 11 Home/Pro/Edu", 2093),
|
@("Windows 11 Home/Pro/Edu", 2093),
|
||||||
@@ -110,6 +121,12 @@ $WindowsVersions = @(
|
|||||||
),
|
),
|
||||||
@(
|
@(
|
||||||
@("Windows 10", "Windows10ISO"),
|
@("Windows 10", "Windows10ISO"),
|
||||||
|
# Not yet enabled by Microsoft...
|
||||||
|
# @(
|
||||||
|
# "22H2 (Build 1904?.???? - 2022.10)",
|
||||||
|
# @("Windows 10 Home/Pro/Edu", 2377),
|
||||||
|
# @("Windows 10 Home China ", ($zh + 2378))
|
||||||
|
# ),
|
||||||
@(
|
@(
|
||||||
"21H2 (Build 19044.1288 - 2021.11)",
|
"21H2 (Build 19044.1288 - 2021.11)",
|
||||||
@("Windows 10 Home/Pro/Edu", 2084),
|
@("Windows 10 Home/Pro/Edu", 2084),
|
||||||
@@ -273,6 +290,11 @@ $WindowsVersions = @(
|
|||||||
),
|
),
|
||||||
@(
|
@(
|
||||||
@("UEFI Shell 2.2", "UEFI_SHELL 2.2"),
|
@("UEFI Shell 2.2", "UEFI_SHELL 2.2"),
|
||||||
|
@(
|
||||||
|
"22H1 (edk2-stable202205)",
|
||||||
|
@("Release", 0),
|
||||||
|
@("Debug", 1)
|
||||||
|
),
|
||||||
@(
|
@(
|
||||||
"21H2 (edk2-stable202108)",
|
"21H2 (edk2-stable202108)",
|
||||||
@("Release", 0),
|
@("Release", 0),
|
||||||
@@ -577,7 +599,7 @@ $RequestData = @{}
|
|||||||
# This GUID applies to all visitors, regardless of their locale
|
# This GUID applies to all visitors, regardless of their locale
|
||||||
$RequestData["GetLangs"] = @("a8f8f489-4c7f-463a-9ca6-5cff94d8d041", "getskuinformationbyproductedition" )
|
$RequestData["GetLangs"] = @("a8f8f489-4c7f-463a-9ca6-5cff94d8d041", "getskuinformationbyproductedition" )
|
||||||
# This GUID applies to visitors of the en-US download page. Other locales may get a different GUID.
|
# This GUID applies to visitors of the en-US download page. Other locales may get a different GUID.
|
||||||
$RequestData["GetLinks"] = @("a224afab-2097-4dfa-a2ba-463eb191a285", "GetProductDownloadLinksBySku" )
|
$RequestData["GetLinks"] = @("6e2a1789-ef16-4f27-a296-74ef7ef5d96b", "GetProductDownloadLinksBySku" )
|
||||||
# Create a semi-random Linux User-Agent string
|
# Create a semi-random Linux User-Agent string
|
||||||
$FirefoxVersion = Get-Random -Minimum 50 -Maximum 90
|
$FirefoxVersion = Get-Random -Minimum 50 -Maximum 90
|
||||||
$FirefoxDate = Get-RandomDate
|
$FirefoxDate = Get-RandomDate
|
||||||
@@ -788,7 +810,18 @@ function Get-Windows-Download-Links([int]$SelectedVersion, [int]$SelectedRelease
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
$Is64 = [Environment]::Is64BitOperatingSystem
|
$Is64 = [Environment]::Is64BitOperatingSystem
|
||||||
$r = Invoke-WebRequest -Method Post -UseBasicParsing -UserAgent $UserAgent -WebSession $Session $url
|
# Must add a referer for POST requests, else Microsoft's servers will deny them
|
||||||
|
$ref = "https://www.microsoft.com/software-download/windows11"
|
||||||
|
$wr = [System.Net.WebRequest]::Create($url)
|
||||||
|
# Windows 7 PowerShell doesn't support 'Invoke-WebRequest -Headers @{"Referer" = $ref}'
|
||||||
|
# (produces "The 'Referer' header must be modified using the appropriate property or method")
|
||||||
|
# so we use StreamReader() with GetResponseStream() and do this whole gymkhana instead...
|
||||||
|
$wr.Method = "POST"
|
||||||
|
$wr.Referer = $ref
|
||||||
|
$wr.UserAgent = $UserAgent
|
||||||
|
$wr.ContentLength = 0
|
||||||
|
$sr = New-Object System.IO.StreamReader($wr.GetResponse().GetResponseStream())
|
||||||
|
$r = $sr.ReadToEnd()
|
||||||
if ($r -match "errorModalMessage") {
|
if ($r -match "errorModalMessage") {
|
||||||
Throw-Error -Req $r -Alt "Could not retrieve architectures from server"
|
Throw-Error -Req $r -Alt "Could not retrieve architectures from server"
|
||||||
}
|
}
|
||||||
@@ -939,6 +972,10 @@ if ($Cmd) {
|
|||||||
}
|
}
|
||||||
if ($Lang -eq "List") {
|
if ($Lang -eq "List") {
|
||||||
Write-Host "Please select a Language (-Lang) for ${Selected}:"
|
Write-Host "Please select a Language (-Lang) for ${Selected}:"
|
||||||
|
} elseif ($Lang) {
|
||||||
|
# Escape parentheses so that they aren't interpreted as regex
|
||||||
|
$Lang = $Lang.replace('(', '\(')
|
||||||
|
$Lang = $Lang.replace(')', '\)')
|
||||||
}
|
}
|
||||||
$i = 0
|
$i = 0
|
||||||
foreach ($language in $languages) {
|
foreach ($language in $languages) {
|
||||||
@@ -955,7 +992,7 @@ if ($Cmd) {
|
|||||||
}
|
}
|
||||||
$i++
|
$i++
|
||||||
}
|
}
|
||||||
if ($winLanguageId -eq $null -or $winLanguageName -eq $null) {
|
if (!$winLanguageId -or !$winLanguageName) {
|
||||||
if ($Lang -ne "List") {
|
if ($Lang -ne "List") {
|
||||||
Write-Host "Invalid Windows language provided."
|
Write-Host "Invalid Windows language provided."
|
||||||
Write-Host "Use '-Lang List' for a list of available languages or remove the option to use system default."
|
Write-Host "Use '-Lang List' for a list of available languages or remove the option to use system default."
|
||||||
@@ -1151,8 +1188,8 @@ exit $ExitCode
|
|||||||
# SIG # Begin signature block
|
# SIG # Begin signature block
|
||||||
# MIIkWQYJKoZIhvcNAQcCoIIkSjCCJEYCAQExDzANBglghkgBZQMEAgEFADB5Bgor
|
# MIIkWQYJKoZIhvcNAQcCoIIkSjCCJEYCAQExDzANBglghkgBZQMEAgEFADB5Bgor
|
||||||
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
|
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
|
||||||
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBoSxq+Hd/1vEWw
|
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBY/5IAG/GViBcd
|
||||||
# eDHx62oJBEQcs5WswgIbrZDkJ0kMbKCCElkwggVvMIIEV6ADAgECAhBI/JO0YFWU
|
# 1JTY1vmyD3aBIuP9LO6GCK/ojLlAlKCCElkwggVvMIIEV6ADAgECAhBI/JO0YFWU
|
||||||
# jTanyYqJ1pQWMA0GCSqGSIb3DQEBDAUAMHsxCzAJBgNVBAYTAkdCMRswGQYDVQQI
|
# jTanyYqJ1pQWMA0GCSqGSIb3DQEBDAUAMHsxCzAJBgNVBAYTAkdCMRswGQYDVQQI
|
||||||
# DBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoM
|
# DBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoM
|
||||||
# EUNvbW9kbyBDQSBMaW1pdGVkMSEwHwYDVQQDDBhBQUEgQ2VydGlmaWNhdGUgU2Vy
|
# EUNvbW9kbyBDQSBMaW1pdGVkMSEwHwYDVQQDDBhBQUEgQ2VydGlmaWNhdGUgU2Vy
|
||||||
@@ -1255,23 +1292,23 @@ exit $ExitCode
|
|||||||
# aWMgQ29kZSBTaWduaW5nIENBIEVWIFIzNgIRAL+xUAG79ZLUlip3l+pzb6MwDQYJ
|
# aWMgQ29kZSBTaWduaW5nIENBIEVWIFIzNgIRAL+xUAG79ZLUlip3l+pzb6MwDQYJ
|
||||||
# YIZIAWUDBAIBBQCgfDAQBgorBgEEAYI3AgEMMQIwADAZBgkqhkiG9w0BCQMxDAYK
|
# YIZIAWUDBAIBBQCgfDAQBgorBgEEAYI3AgEMMQIwADAZBgkqhkiG9w0BCQMxDAYK
|
||||||
# KwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG
|
# KwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG
|
||||||
# 9w0BCQQxIgQgougliXZ/wuYNXumkzCMK5FQDWgtAe8LnWlBrtqEiDKUwDQYJKoZI
|
# 9w0BCQQxIgQgNcSdxNkDC+T0P75/9E4SzKGSNuqQIeqogrTBOhm8QicwDQYJKoZI
|
||||||
# hvcNAQEBBQAEggIAdB3UX33Us43j1YraPmuCKRqvoTEJkn1Pcdo9ISeIxgLWpzNs
|
# hvcNAQEBBQAEggIABeOCwDNendZb+8jZ1AhX5gYbY2KMZiCzIFV1XcegsgAkEaHx
|
||||||
# LQEf8Ie2ocHG3z/Ae23xy1XnqSP4XUtkicRO+3QIIwJ50/BKig9/yZdO9nOmLSFt
|
# k7nr6A8EePp1AApRrsD11l4Ldc13tIkcgE48FgT98yPqJVQdNm7eTgmNE/hbGW1v
|
||||||
# 3aBc1BqG5a4qvT+PYyGOmYKlZkp05XvH2ngdURa971Jv89Etqyks3km++S8dXb/C
|
# fTX1SjBmeDgahx/XQszCMZ3c6+po7OQPbACt0ovzDXWnu5mQHuvqSrCw8G/uN/zb
|
||||||
# UNrBLp8B1VQ6UMdCvCSYu4H1VS4p2sCoLSwQnCuNZxU/TcdiYwsqeUPqG4PlxBYI
|
# N6uu6FlN+nM7MCPQkbf4x9IOWyfiVziUTmM8XO7JtySCt1oa49RtimRYYSbI2zZh
|
||||||
# TyZbj+HJdvX66M0SlrO7o0rD5QZbLGUNLyOJoG9gjRKoGW8p+E/djo2rDsbfKe2c
|
# uiqrl4pmdB86g8atK4BhedU1g6fKp23Qk+qo+w8eHSGTfPrz5YsGQtpTgpZxp50T
|
||||||
# X5aFUifm++aZ0dlW6hDdmi2DkAcdXHyW7XN3d1bjkoOTyn+ASftc9GYWqFJEUT6T
|
# pkcbj96entuv/hbj4Vn/j1xB0rwnQRCtGeSYgZMDYFIC8FHFz19TvlwAsDOGBTK/
|
||||||
# SxS+9XYvhr6jFwMfggv8tP1DAJz8kKSbcfrNkujYXU3CtqXmpTUZm4+zT6XG3Qsd
|
# Q2e1/yMctzT6YX6k5K7eIk0p6tWh1kqd6AZB+3kjJv52wJQ+cvaVgmI+hWoyQYJ6
|
||||||
# 71iRnjYwCu/gsKxE40nHvNJS0QQ87+Cm93P5AepJGg1/uk5i/FGh7bJ+XaOemMSm
|
# O7gC0MG0d+ohF2YuUEyhBQRn+QJ/9u+g4KiFoqBTXr697viAIaTeY//hpbL1S1RI
|
||||||
# oMMaCthj+4rzcSZ9Emvyimb0IOlAKAUN/asAvknWh8LXHquxdrNWdRQlGofwA3ng
|
# IdDbAr063jxYOykSIhdydRWhrw01slvIKr1o13s/6iDgSPTRd723Wv3dld/I6w5/
|
||||||
# TjTklBaQDJTO/hR09RIEmytyTKDSxZrUSfZZ+eZsOV835cPwHsxc5Hw0N79kSHIR
|
# zIoa+3PpyxoYb8RvP5eqgEAbHEteBc8KuNp55WaFUKb8K6UlHDHGsgAgcZboD2T5
|
||||||
# LCOWfUHv/FN5er79XbsqLXEDQBIXtIPyRT5XFoPZhz+wQZs9++YaP4HFuDahgg49
|
# 6N0FOz+v1Cznbsv0USQdynh4DQSAcIB9klcOkkoAlsgQH74k4EyusV/29iWhgg49
|
||||||
# MIIOOQYKKwYBBAGCNwMDATGCDikwgg4lBgkqhkiG9w0BBwKggg4WMIIOEgIBAzEN
|
# MIIOOQYKKwYBBAGCNwMDATGCDikwgg4lBgkqhkiG9w0BBwKggg4WMIIOEgIBAzEN
|
||||||
# MAsGCWCGSAFlAwQCATCCAQ8GCyqGSIb3DQEJEAEEoIH/BIH8MIH5AgEBBgtghkgB
|
# MAsGCWCGSAFlAwQCATCCAQ8GCyqGSIb3DQEJEAEEoIH/BIH8MIH5AgEBBgtghkgB
|
||||||
# hvhFAQcXAzAxMA0GCWCGSAFlAwQCAQUABCBTB2MCblEVgL/J2ueYihS9iXKxuE3P
|
# hvhFAQcXAzAxMA0GCWCGSAFlAwQCAQUABCAmmVONt91+fvut9U75MR5SgbgybtGV
|
||||||
# MMWV153b+fciBwIVALiTlFr3LDTvVG0F4tF8kixrLL9IGA8yMDIyMDEyNjIwNDY1
|
# mK0CngIkWNBScQIVAPwPX0skCWZcVxSwVijYEseWntqDGA8yMDIyMTAwMTEyNTQ0
|
||||||
# N1owAwIBHqCBhqSBgzCBgDELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVj
|
# M1owAwIBHqCBhqSBgzCBgDELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVj
|
||||||
# IENvcnBvcmF0aW9uMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMTEw
|
# IENvcnBvcmF0aW9uMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMTEw
|
||||||
# LwYDVQQDEyhTeW1hbnRlYyBTSEEyNTYgVGltZVN0YW1waW5nIFNpZ25lciAtIEcz
|
# LwYDVQQDEyhTeW1hbnRlYyBTSEEyNTYgVGltZVN0YW1waW5nIFNpZ25lciAtIEcz
|
||||||
# oIIKizCCBTgwggQgoAMCAQICEHsFsdRJaFFE98mJ0pwZnRIwDQYJKoZIhvcNAQEL
|
# oIIKizCCBTgwggQgoAMCAQICEHsFsdRJaFFE98mJ0pwZnRIwDQYJKoZIhvcNAQEL
|
||||||
@@ -1334,13 +1371,13 @@ exit $ExitCode
|
|||||||
# BgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMR8wHQYDVQQLExZTeW1hbnRlYyBU
|
# BgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMR8wHQYDVQQLExZTeW1hbnRlYyBU
|
||||||
# cnVzdCBOZXR3b3JrMSgwJgYDVQQDEx9TeW1hbnRlYyBTSEEyNTYgVGltZVN0YW1w
|
# cnVzdCBOZXR3b3JrMSgwJgYDVQQDEx9TeW1hbnRlYyBTSEEyNTYgVGltZVN0YW1w
|
||||||
# aW5nIENBAhB71OWvuswHP6EBIwQiQU0SMAsGCWCGSAFlAwQCAaCBpDAaBgkqhkiG
|
# aW5nIENBAhB71OWvuswHP6EBIwQiQU0SMAsGCWCGSAFlAwQCAaCBpDAaBgkqhkiG
|
||||||
# 9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTIyMDEyNjIwNDY1
|
# 9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTIyMTAwMTEyNTQ0
|
||||||
# N1owLwYJKoZIhvcNAQkEMSIEIIK+PEpBx+mrb3vR20xkouo7+D6Z8F+IcfPB1ugk
|
# M1owLwYJKoZIhvcNAQkEMSIEIN6q/xtR2+ZALUnoqNXx196zuj9xFk7Ajyd8CrCr
|
||||||
# JhbkMDcGCyqGSIb3DQEJEAIvMSgwJjAkMCIEIMR0znYAfQI5Tg2l5N58FMaA+eKC
|
# WmI8MDcGCyqGSIb3DQEJEAIvMSgwJjAkMCIEIMR0znYAfQI5Tg2l5N58FMaA+eKC
|
||||||
# ATz+9lPvXbcf32H4MAsGCSqGSIb3DQEBAQSCAQCoRSQVcp2FKLwh5Jeuo/dOuM2o
|
# ATz+9lPvXbcf32H4MAsGCSqGSIb3DQEBAQSCAQAxZTurueFa0gsxsKPdVmcoAp3k
|
||||||
# v7yiMYYR9A0CFHfd+zZsz6ZximV4fYH4BzGLH0Vn5snsupWXRuwXk7bm2Ge6q2cu
|
# EEqW9x41BRlxKV1s0uqV1DEEozXmnJnoqSDm/bLx4xGTZujjPe2UrdOk5445lev8
|
||||||
# HOltVpkhSv1VSnzaHshyecs9t/MZhjFoqsvUv15KJoKfGHL9f/Bu+jmjuGotnHrC
|
# JkIRwKJ+LmMb7DtzNkkNPvXi11PD4y/B7J0EVlQ0QCnU+CU8tW3GnAu28whQHk/X
|
||||||
# HkFQ4iTtQwWnD5iq+yeWEo/0CIs+id586C2Q8cstv7xxVS3lut0xrEWkmKv0u/SW
|
# 5Fs4jRIaxmBSrDspa3yGsrlqjUpmsF6tA5UEQi+fA5JmvVq6CpiUaXf9JGLQgfGz
|
||||||
# 2s09cxmBjlObmWGYcRAildr/g62TXlO6aOL4Zji04IDCOdXT9LfHZdEYHGY5L1mw
|
# zt8XVyLcXJEXMS1lA54z8R8XiJzrT9bOoHZxwSlRZswDAosfe3PAWbS9sKnatYCX
|
||||||
# mECqnRMYPbG3ZRwiMmsCQq9nhxNXtE9qYkjBBhr+YSPPmRljuAxe9KVZfXO8
|
# LgWGsxXn040/9cei5szi4Z4ltGUYI7gdNTYafRS/mCRbgfITpfzlpAzk07II
|
||||||
# SIG # End signature block
|
# SIG # End signature block
|
||||||
|
24
README.md
24
README.md
@@ -1,5 +1,5 @@
|
|||||||
Fido: A PowerShell download script for Windows ISOs and UEFI Shell
|
Fido: A PowerShell download script for Microsoft Windows and UEFI Shell ISOs
|
||||||
==================================================================
|
============================================================================
|
||||||
|
|
||||||
[](https://www.gnu.org/licenses/gpl-3.0.en.html)
|
[](https://www.gnu.org/licenses/gpl-3.0.en.html)
|
||||||
[](https://github.com/pbatard/Fido/releases)
|
[](https://github.com/pbatard/Fido/releases)
|
||||||
@@ -9,12 +9,12 @@ Description
|
|||||||
|
|
||||||
Fido is a PowerShell script that is primarily designed to be used in [Rufus](https://github.com/pbatard/rufus), but that
|
Fido is a PowerShell script that is primarily designed to be used in [Rufus](https://github.com/pbatard/rufus), but that
|
||||||
can also be used in standalone fashion, and whose purpose is to automate access to the official Microsoft Windows retail
|
can also be used in standalone fashion, and whose purpose is to automate access to the official Microsoft Windows retail
|
||||||
ISO download links as well as provide convenient access to bootable UEFI Shell images.
|
ISO download links as well as provide convenient access to [bootable UEFI Shell images](https://github.com/pbatard/UEFI-Shell).
|
||||||
|
|
||||||
This script exists because, while Microsoft does make retail ISO download links freely and publicly available (at least
|
This script exists because, while Microsoft does make retail ISO download links freely and publicly available (at least
|
||||||
for Windows 8 and Windows 10), it only does so after actively forcing users to jump through a lot of unwarranted hoops,
|
for Windows 8 through Windows 11), up until recent releases, most of these links were only available after forcing users
|
||||||
that create an exceedingly counterproductive, if not downright unfriendly, consumer experience and that greatly detract
|
to jump through a lot of unwarranted hoops that created an exceedingly counterproductive, if not downright unfriendly,
|
||||||
from what people really want (direct access to ISO downloads).
|
consumer experience, that greatly detracted from what people really want (direct access to ISO downloads).
|
||||||
|
|
||||||
As to the reason one might want to download Windows __retail__ ISOs, as opposed to the ISOs that are generated by
|
As to the reason one might want to download Windows __retail__ ISOs, as opposed to the ISOs that are generated by
|
||||||
Microsoft's own Media Creation Tool (MCT), this is because using official retail ISOs is currently the only way to
|
Microsoft's own Media Creation Tool (MCT), this is because using official retail ISOs is currently the only way to
|
||||||
@@ -42,16 +42,16 @@ License
|
|||||||
How it works
|
How it works
|
||||||
------------
|
------------
|
||||||
|
|
||||||
The script basically performs the same operation as one might perform when visiting either of the following URLs (that
|
The script basically performs the same operation as one might perform when visiting the following URL (that is, in the
|
||||||
is, provided that you have also changed your `User-Agent` browser string, since, when they detect that you are using a
|
case of Windows 10, provided that you have also changed your `User-Agent` browser string, since, the Microsoft web
|
||||||
version of Windows that is the same as the one you are trying to download, the Microsoft web servers at these addresses
|
servers detect that you are using a version of Windows that is the same as the one you are trying to download, they
|
||||||
redirect you __away__ from the pages that allow you to download retail ISOs):
|
may redirect you __away__ from the page that allows you to obtain a direct ISO download link):
|
||||||
|
|
||||||
https://www.microsoft.com/en-us/software-download
|
https://www.microsoft.com/en-us/software-download
|
||||||
|
|
||||||
After checking access to these URLs, to confirm that they are accessible, the script first queries the web API from the
|
After checking basic access to the Microsoft software downloads website the script first queries the web API from the
|
||||||
Microsoft servers, to request the language selection available for the version of Windows selected, and then requests
|
Microsoft servers, to request the language selection available for the version of Windows selected, and then requests
|
||||||
the actual download links for all the architectures available for that language + version.
|
the actual download links, for all the architectures available for that language + version.
|
||||||
|
|
||||||
Requirements
|
Requirements
|
||||||
------------
|
------------
|
||||||
|
Reference in New Issue
Block a user