You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Patch DoS vulnerability where Microsoft servers could send us data
forever until OOM or disk space fills up. This issue could not
feasibly be patched until now:
curl/curl#11810
- Improve handle_curl_error
- Update win11x64 checksum
- Organize assets into their own folder
- Add attribution and copyright in download functions
- Update copyright year
# Download newer consumer Windows versions from behind gated Microsoft API
301
-
# This function aims to precisely emulate what Fido does down to the URL requests and HTTP headers (exceptions: updated user agent and referer adapts to Windows version instead of always being "windows11") but written in POSIX sh (with coreutils) and curl instead of PowerShell (also simplified to greatly reduce attack surface)
302
-
# However, differences such as the order of HTTP headers and TLS stacks (could be used to do TLS fingerprinting) still exist
# Licensed under the MIT License. See LICENSE file for details.
303
308
#
304
-
# Command translated: ./Fido -Win 10 -Lang English -Verbose
305
-
# "English" = "English (United States)" (as opposed to the default "English (International)")
306
-
# For testing Fido, replace all "https://" with "http://" and remove all instances of "-MaximumRedirection 0" (to allow redirection of HTTP traffic to HTTPS) so HTTP requests can easily be inspected in Wireshark
307
-
# Fido (command-line only) works under PowerShell for Linux if that makes it easier for you
308
-
# UPDATE: Fido v1.4.2+ no longer works without being edited on Linux due to these issues on the Fido GitHub repo (and possibly others after these): #56 and #58
309
-
#
310
-
# If this function in Mido fails to work for you then please test with the Fido script before creating an issue because we basically just copy what Fido does exactly:
311
-
# https://github.com/pbatard/Fido
309
+
# This function is from the Mido project:
310
+
# https://github.com/ElliotKillick/Mido
311
+
312
+
# Download newer consumer Windows versions from behind gated Microsoft API
312
313
313
314
out_file="$1"
314
315
# Either 8, 10, or 11
@@ -325,25 +326,23 @@ consumer_download() {
325
326
326
327
# Get product edition ID for latest release of given Windows version
327
328
# Product edition ID: This specifies both the Windows release (e.g. 22H2) and edition ("multi-edition" is default, either Home/Pro/Edu/etc., we select "Pro" in the answer files) in one number
328
-
# This is the *only* request we make that Fido doesn't. Fido manually maintains a list of all the Windows release/edition product edition IDs in its script (see: $WindowsVersions array). This is helpful for downloading older releases (e.g. Windows 10 1909, 21H1, etc.) but we always want to get the newest release which is why we get this value dynamically
329
+
# This is a request we make that Fido doesn't. Fido manually maintains a list of all the Windows release/edition product edition IDs in its script (see: $WindowsVersions array). This is helpful for downloading older releases (e.g. Windows 10 1909, 21H1, etc.) but we always want to get the newest release which is why we get this value dynamically
329
330
# Also, keeping a "$WindowsVersions" array like Fido does would be way too much of a maintenance burden
330
-
# Remove "Accept" header that curl sends by default
# This should only happen if there's been some change to how this API works
374
371
handle_curl_error $?
375
372
return$?
376
373
}
377
374
378
-
# Limit untrusted size for input validation
379
-
iso_download_link_html="$(echo "$iso_download_link_html"| head -c 4096)"
380
-
381
375
if! [ "$iso_download_link_html" ];then
382
376
# This should only happen if there's been some change to how this API works
383
377
echo_err "Microsoft servers gave us an empty response to our request for an automated download. Please manually download this ISO in a web browser: $url"
- Mido provides the exact same downloads as this website (it uses the same API)
32
32
33
-
#### ✔️ Mido (using the **same** official Microsoft servers; <imgsrc="https://awesome.re/badge.svg"style="position: relative; top: 5px;"></img> open source software)
33
+
#### ✅ Mido (using the **same** official Microsoft servers; <imgsrc="https://awesome.re/badge.svg"style="position: relative; top: 5px;"></img> open source software)
@@ -73,7 +73,7 @@ Check out the `create-media.sh` script in [Qvm-Create-Windows-Qube](https://gith
73
73
74
74
## How secure is it *really*?
75
75
76
-
Mido is very secure. Every chance to reduce attack surface is taken. Untrusted data is treated as such with proper validation steps. The highest possible version of TLS is always used (up to TLS 1.3). Easily verify security properties yourself in the transparent shell script.
76
+
Mido is super secure. Every chance to reduce attack surface is taken. Untrusted data is treated as such with proper validation steps. The highest possible version of TLS is always used (up to TLS 1.3). Easily verify security properties yourself in the transparent shell script.
77
77
78
78
No web browser (e.g. headless Chromium running JavaScript) reduces the attack surface by *many* orders of magnitude.
79
79
@@ -84,7 +84,7 @@ The next [Shellshock/Bashdoor](https://en.wikipedia.org/wiki/Shellshock_(softwar
84
84
- For even *greater* security, one could use a POSIX-compliant Rust shell (e.g. nsh) with Rust coreutils (e.g. uutils). This is not the default configuration.
85
85
86
86
Frequent [Curl HTTP 2.0 & 3.0 bugs](https://github.com/curl/curl/issues?q=is%3Aissue+label%3Acrash)? Force HTTP/1.1.
87
-
- Comes at zero cost to performance for downloading files
87
+
- Comes at zero cost to performance for downloading a single large file
88
88
89
89
Coreutil bugs? Only builtins are used for the most critical functionality.
0 commit comments