Print the OEM Windows product key from firmware (#7480)
* Print the OEM Windows product key from firmware Machines that shipped with Windows keep the OEM key in the ACPI MSDM table. `omarchy windows license key` reads it with strings, then cat. * Rename the firmware key command to omarchy-windows-key
This commit is contained in:
Executable
+65
@@ -0,0 +1,65 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
source "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)/base-test.sh"
|
||||
|
||||
command="$ROOT/bin/omarchy-windows-key"
|
||||
tmp=$(mktemp -d)
|
||||
trap 'rm -rf "$tmp"' EXIT
|
||||
|
||||
rg -q '/sys/firmware/acpi/tables/MSDM' "$command" ||
|
||||
fail "windows key helper reads the ACPI MSDM table"
|
||||
pass "windows key helper reads the ACPI MSDM table"
|
||||
|
||||
rg -q 'read_msdm strings' "$command" ||
|
||||
fail "windows key helper tries strings first"
|
||||
pass "windows key helper tries strings first"
|
||||
|
||||
rg -q 'read_msdm cat' "$command" ||
|
||||
fail "windows key helper falls back to cat"
|
||||
pass "windows key helper falls back to cat"
|
||||
|
||||
write_msdm() {
|
||||
local path=$1
|
||||
local payload=$2
|
||||
|
||||
python3 -c 'import pathlib, sys
|
||||
pathlib.Path(sys.argv[1]).write_bytes(b"MSDM" + b"\x00" * 52 + sys.argv[2].encode())
|
||||
' "$path" "$payload"
|
||||
}
|
||||
|
||||
run_helper() {
|
||||
OMARCHY_MSDM_PATH=$1 PATH="$ROOT/bin:$PATH" "$command"
|
||||
}
|
||||
|
||||
key="XXXXX-XXXXX-XXXXX-XXXXX-XXXXX"
|
||||
write_msdm "$tmp/msdm" "$key"
|
||||
output=$(run_helper "$tmp/msdm")
|
||||
[[ $output == "$key" ]] || fail "windows key helper prints the firmware key" "actual: $output"
|
||||
pass "windows key helper prints the firmware key"
|
||||
|
||||
mkdir -p "$tmp/bin"
|
||||
cat >"$tmp/bin/strings" <<'EOF'
|
||||
#!/bin/bash
|
||||
exit 0
|
||||
EOF
|
||||
chmod +x "$tmp/bin/strings"
|
||||
output=$(PATH="$tmp/bin:$ROOT/bin:$PATH" OMARCHY_MSDM_PATH="$tmp/msdm" "$command")
|
||||
[[ $output == "$key" ]] || fail "windows key helper falls back to cat when strings finds nothing" "actual: $output"
|
||||
pass "windows key helper falls back to cat when strings finds nothing"
|
||||
|
||||
write_msdm "$tmp/empty" "no-product-key-here"
|
||||
if OMARCHY_MSDM_PATH="$tmp/empty" PATH="$ROOT/bin:$PATH" "$command" >"$tmp/out" 2>"$tmp/err"; then
|
||||
fail "windows key helper fails when the table has no key"
|
||||
fi
|
||||
[[ $(<"$tmp/err") == "Firmware license table found, but no Windows product key could be extracted." ]] ||
|
||||
fail "windows key helper reports a missing key" "actual: $(<"$tmp/err")"
|
||||
pass "windows key helper reports a missing key"
|
||||
|
||||
if OMARCHY_MSDM_PATH="$tmp/missing" PATH="$ROOT/bin:$PATH" "$command" >"$tmp/out" 2>"$tmp/err"; then
|
||||
fail "windows key helper fails when firmware has no MSDM table"
|
||||
fi
|
||||
[[ $(<"$tmp/err") == "No Windows license key found in firmware." ]] ||
|
||||
fail "windows key helper reports missing firmware table" "actual: $(<"$tmp/err")"
|
||||
pass "windows key helper reports missing firmware table"
|
||||
Reference in New Issue
Block a user