mirror of
https://github.com/MatthewL246/pretendo-docker.git
synced 2026-04-25 08:04:02 -05:00
- Update all of the scripts to use Bash instead of sh so I can use arrays and other bashisms - Create a complete Bash option parsing framework to replace function-lib.sh - Rewrite all of the scripts to use this framework - General script user-friendliness improvements, including loading existing environment variables by default instead of always requiring them to be specified
62 lines
2.6 KiB
Bash
Executable File
62 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# shellcheck source=./internal/framework.sh
|
|
source "$(dirname "$(realpath "$0")")/internal/framework.sh"
|
|
set_description "This validates the BOSS keys from the dumped key files in console-files by comparing them to expected \
|
|
MD5 hashes."
|
|
add_option "-w --write" "write_keys" "Write the encryption keys to the BOSS environment file after validating"
|
|
parse_arguments "$@"
|
|
|
|
expected_ds_aes_key_hash="86fbc2bb4cb703b2a4c6cc9961319926"
|
|
expected_wiiu_aes_key_hash="5202ce5099232c3d365e28379790a919"
|
|
expected_wiiu_hmac_key_hash="b4482fef177b0100090ce0dbeb8ce977"
|
|
|
|
cd "$git_base_dir/console-files"
|
|
|
|
if [[ -f "./boss_keys.bin" ]]; then
|
|
wiiu_aes_key=$(head -c 16 <./boss_keys.bin)
|
|
wiiu_hmac_key=$(tail -c +33 ./boss_keys.bin | head -c 64)
|
|
wiiu_aes_key_hash=$(echo -n "$wiiu_aes_key" | md5sum | cut -d ' ' -f 1)
|
|
wiiu_hmac_key_hash=$(echo -n "$wiiu_hmac_key" | md5sum | cut -d ' ' -f 1)
|
|
|
|
if [[ "$wiiu_aes_key_hash" = "$expected_wiiu_aes_key_hash" ]]; then
|
|
print_success "Found valid Wii U BOSS AES key."
|
|
if [[ -n "$write_keys" ]]; then
|
|
echo "PN_BOSS_CONFIG_BOSS_WIIU_AES_KEY=$wiiu_aes_key" >>"$git_base_dir/environment/boss.local.env"
|
|
fi
|
|
else
|
|
print_error "Wii U BOSS AES key has the wrong hash! Try re-running full_keys_dumper."
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "$wiiu_hmac_key_hash" = "$expected_wiiu_hmac_key_hash" ]]; then
|
|
print_success "Found valid Wii U HMAC key."
|
|
if [[ -n "$write_keys" ]]; then
|
|
echo "PN_BOSS_CONFIG_BOSS_WIIU_HMAC_KEY=$wiiu_hmac_key" >>"$git_base_dir/environment/boss.local.env"
|
|
fi
|
|
else
|
|
print_error "Wii U BOSS HMAC key has the wrong hash! Try re-running full_keys_dumper."
|
|
exit 1
|
|
fi
|
|
else
|
|
print_warning "console-files/boss_keys.bin (Wii U) not found! Please read the README for instructions on dumping your BOSS keys."
|
|
fi
|
|
|
|
if [[ -f "./aes_keys.txt" ]]; then
|
|
ds_aes_key=$(grep -oP 'slot0x38KeyN=\K.*' ./aes_keys.txt)
|
|
ds_aes_key_bin=$(echo -n "$ds_aes_key" | xxd -r -p)
|
|
ds_aes_key_hash=$(echo -n "$ds_aes_key_bin" | md5sum | cut -d ' ' -f 1)
|
|
|
|
if [[ "$ds_aes_key_hash" = "$expected_ds_aes_key_hash" ]]; then
|
|
print_success "Found valid 3DS BOSS AES key."
|
|
if [[ -n "$write_keys" ]]; then
|
|
echo "PN_BOSS_CONFIG_BOSS_3DS_AES_KEY=$ds_aes_key" >>"$git_base_dir/environment/boss.local.env"
|
|
fi
|
|
else
|
|
print_error "3DS BOSS AES key has the wrong hash! Try re-running DumpKeys.gm9."
|
|
exit 1
|
|
fi
|
|
else
|
|
print_warning "console-files/aes_keys.txt (3DS) not found! Please read the README for instructions on dumping your BOSS keys."
|
|
fi
|