summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/data/deguard/appdir.patch131
-rw-r--r--config/vendor/3050micro/pkg.cfg4
-rw-r--r--include/vendor.sh33
3 files changed, 167 insertions, 1 deletions
diff --git a/config/data/deguard/appdir.patch b/config/data/deguard/appdir.patch
new file mode 100644
index 00000000..722a6168
--- /dev/null
+++ b/config/data/deguard/appdir.patch
@@ -0,0 +1,131 @@
+From b978cbb651a4bdd84be4a92ae240c8ca99ef21eb Mon Sep 17 00:00:00 2001
+From: Leah Rowe <info@minifree.org>
+Date: Tue, 24 Sep 2024 16:44:51 +0100
+Subject: [PATCH 1/1] Patch to integrate with lbmk
+
+Deguard is a standalone utility, but the way it works
+doesn't integrate well with lbmk.
+
+Remove the download logic, because lbmk already downloads
+the requisite zip file.
+
+Also not required, but nice, and included in this patch:
+
+Detect what python version is available, and make sure it's
+python 3.
+
+Signed-off-by: Leah Rowe <info@minifree.org>
+---
+ RUNME.sh | 64 +++++++++++++++++++++++++++++++-------------------------
+ 1 file changed, 36 insertions(+), 28 deletions(-)
+
+diff --git a/RUNME.sh b/RUNME.sh
+index 9809f89..7404ba6 100755
+--- a/RUNME.sh
++++ b/RUNME.sh
+@@ -1,25 +1,33 @@
+ #!/bin/sh
+ # SPDX-License-Identifier: GPL-2.0-only
+
++# This version of deguard is patched to integrate with lbmk.
++# Do not run this version standalone. Please use src/deguard/ instead.
++
+ set -e
+
+-if [ ! -f "me.bin" ]; then
+- wget "https://download.asrock.com/BIOS/1151/H110M-DGS(7.30)ROM.zip"
+- unzip "H110M-DGS(7.30)ROM.zip" H11MDGS7.30
+- rm "H110M-DGS(7.30)ROM.zip"
+- dd if=H11MDGS7.30 of=me.bin skip=1 count=511 bs=4096
+- rm H11MDGS7.30
++pyver="2"
++python="python3"
++which python3 || python="python"
++which $python || pyver=""
++[ -n "$pyver" ] && pyver="$($python --version | awk '{print $2}')"
++if [ "${pyver%%.*}" != "3" ]; then
++ printf "Wrong python version, or python missing. Must be python 3.\n" 1>&2
++ exit 1
+ fi
+
++rm -f me.bin MFS.part
++dd if=../H11MDGS7.30 of=me.bin skip=1 count=511 bs=4096
++
+ dd if=me.bin of=MFS.part skip=168 count=100 bs=4096
+
+ # Extract file number 7 (fitc.cfg)
+-python3 MFSUtil.py -m MFS.part -x -i 7 -o fitc.cfg
++$python MFSUtil.py -m MFS.part -x -i 7 -o fitc.cfg
+
+ # Remove /home/mca/eom
+-python3 MFSUtil.py -c fitc.cfg -r -f /home/mca/eom -o fitc.cfg
++$python MFSUtil.py -c fitc.cfg -r -f /home/mca/eom -o fitc.cfg
+ # Remove /home/bup/ct
+-python3 MFSUtil.py -c fitc.cfg -r -f /home/bup/ct -o fitc.cfg
++$python MFSUtil.py -c fitc.cfg -r -f /home/bup/ct -o fitc.cfg
+
+ # list off files differing in optiplex 3050 fw vs donor
+ files="
+@@ -39,40 +47,40 @@ secureboot/pubkeyhash
+
+ for i in $files
+ do
+- python3 MFSUtil.py -c fitc.cfg -r -f /home/$i -o fitc.cfg
++ $python MFSUtil.py -c fitc.cfg -r -f /home/$i -o fitc.cfg
+ done
+
+ # Add /home/mca/eom
+ dd if=/dev/zero of=eom count=1 bs=1
+-python3 MFSUtil.py -c fitc.cfg --add eom --alignment 2 --mode ' --Irw-r-----' \
++$python MFSUtil.py -c fitc.cfg --add eom --alignment 2 --mode ' --Irw-r-----' \
+ --opt '?!-F' --uid 0 --gid 238 -f /home/mca/eom -o fitc.cfg
+
+ # Add /home/bup/ct
+-python3 gen_shellcode.py -p H -v 11.6.0.1126 --fake-fpfs=fpfs/optiplex_3050 -o ct
+-python3 MFSUtil.py -c fitc.cfg --add ct --alignment 2 --mode ' ---rwxr-----' \
++$python gen_shellcode.py -p H -v 11.6.0.1126 --fake-fpfs=fpfs/optiplex_3050 -o ct
++$python MFSUtil.py -c fitc.cfg --add ct --alignment 2 --mode ' ---rwxr-----' \
+ --opt '?--F' --uid 3 --gid 351 -f /home/bup/ct -o fitc.cfg
+
+ # Add dell files
+-python3 MFSUtil.py -c fitc.cfg --add data/emu_fuse_map --alignment 2 --mode=' ---rw-r-----' --opt='?--F' --uid=3 --gid=238 -f /home/bup/bup_sku/emu_fuse_map -o fitc.cfg
+-python3 MFSUtil.py -c fitc.cfg --add data/plat_n_sku --alignment 2 --mode=' ---rw-r-----' --opt='?--F' --uid=3 --gid=238 -f /home/bup/bup_sku/plat_n_sku -o fitc.cfg
+-python3 MFSUtil.py -c fitc.cfg --add data/fwuoemid --alignment 2 --mode=' ---rw-rw----' --opt='?--F' --uid=32 --gid=238 -f /home/fwupdate/fwuoemid -o fitc.cfg
+-python3 MFSUtil.py -c fitc.cfg --add data/prof0 --alignment 2 --mode=' ---rw-r-----' --opt='?--F' --uid=55 --gid=238 -f /home/icc/prof0 -o fitc.cfg
+-python3 MFSUtil.py -c fitc.cfg --add data/device_ports --alignment 2 --mode=' ---rw-r-----' --opt='?--F' --uid=73 --gid=238 -f /home/mctp/device_ports -o fitc.cfg
+-python3 MFSUtil.py -c fitc.cfg --add data/hdcp_ports --alignment 2 --mode=' -EIrw-r-----' --opt='?!-F' --uid=80 --gid=238 -f /home/pavp/hdcp_ports -o fitc.cfg
+-python3 MFSUtil.py -c fitc.cfg --add data/cfg_rules --alignment 2 --mode=' ---rw-rw----' --opt='-!MF' --uid=85 --gid=238 -f /home/policy/cfgmgr/cfg_rules -o fitc.cfg
+-python3 MFSUtil.py -c fitc.cfg --add data/bootpolres --alignment 2 --mode=' ---rw-rw----' --opt='?-MF' --uid=3 --gid=238 -f /home/secureboot/bootpolres -o fitc.cfg
+-python3 MFSUtil.py -c fitc.cfg --add data/bootpoltype --alignment 2 --mode=' ---rw-rw----' --opt='?-MF' --uid=3 --gid=238 -f /home/secureboot/bootpoltype -o fitc.cfg
+-python3 MFSUtil.py -c fitc.cfg --add data/enfpolicy --alignment 2 --mode=' ---rw-rw----' --opt='?-MF' --uid=3 --gid=238 -f /home/secureboot/enfpolicy -o fitc.cfg
+-python3 MFSUtil.py -c fitc.cfg --add data/kmid --alignment 2 --mode=' ---rw-r-----' --opt='?-MF' --uid=3 --gid=238 -f /home/secureboot/kmid -o fitc.cfg
+-python3 MFSUtil.py -c fitc.cfg --add data/pubkeyhash --alignment 2 --mode=' ---rw-rw-r--' --opt='?-MF' --uid=3 --gid=238 -f /home/secureboot/pubkeyhash -o fitc.cfg
++$python MFSUtil.py -c fitc.cfg --add data/emu_fuse_map --alignment 2 --mode=' ---rw-r-----' --opt='?--F' --uid=3 --gid=238 -f /home/bup/bup_sku/emu_fuse_map -o fitc.cfg
++$python MFSUtil.py -c fitc.cfg --add data/plat_n_sku --alignment 2 --mode=' ---rw-r-----' --opt='?--F' --uid=3 --gid=238 -f /home/bup/bup_sku/plat_n_sku -o fitc.cfg
++$python MFSUtil.py -c fitc.cfg --add data/fwuoemid --alignment 2 --mode=' ---rw-rw----' --opt='?--F' --uid=32 --gid=238 -f /home/fwupdate/fwuoemid -o fitc.cfg
++$python MFSUtil.py -c fitc.cfg --add data/prof0 --alignment 2 --mode=' ---rw-r-----' --opt='?--F' --uid=55 --gid=238 -f /home/icc/prof0 -o fitc.cfg
++$python MFSUtil.py -c fitc.cfg --add data/device_ports --alignment 2 --mode=' ---rw-r-----' --opt='?--F' --uid=73 --gid=238 -f /home/mctp/device_ports -o fitc.cfg
++$python MFSUtil.py -c fitc.cfg --add data/hdcp_ports --alignment 2 --mode=' -EIrw-r-----' --opt='?!-F' --uid=80 --gid=238 -f /home/pavp/hdcp_ports -o fitc.cfg
++$python MFSUtil.py -c fitc.cfg --add data/cfg_rules --alignment 2 --mode=' ---rw-rw----' --opt='-!MF' --uid=85 --gid=238 -f /home/policy/cfgmgr/cfg_rules -o fitc.cfg
++$python MFSUtil.py -c fitc.cfg --add data/bootpolres --alignment 2 --mode=' ---rw-rw----' --opt='?-MF' --uid=3 --gid=238 -f /home/secureboot/bootpolres -o fitc.cfg
++$python MFSUtil.py -c fitc.cfg --add data/bootpoltype --alignment 2 --mode=' ---rw-rw----' --opt='?-MF' --uid=3 --gid=238 -f /home/secureboot/bootpoltype -o fitc.cfg
++$python MFSUtil.py -c fitc.cfg --add data/enfpolicy --alignment 2 --mode=' ---rw-rw----' --opt='?-MF' --uid=3 --gid=238 -f /home/secureboot/enfpolicy -o fitc.cfg
++$python MFSUtil.py -c fitc.cfg --add data/kmid --alignment 2 --mode=' ---rw-r-----' --opt='?-MF' --uid=3 --gid=238 -f /home/secureboot/kmid -o fitc.cfg
++$python MFSUtil.py -c fitc.cfg --add data/pubkeyhash --alignment 2 --mode=' ---rw-rw-r--' --opt='?-MF' --uid=3 --gid=238 -f /home/secureboot/pubkeyhash -o fitc.cfg
+
+ # Delete file id 7 (fitc.cfg) from the MFS partition
+-python3 MFSUtil.py -m MFS.part -r -i 7 -o MFS.part
++$python MFSUtil.py -m MFS.part -r -i 7 -o MFS.part
+ # Delete file id 8 (home) from the MFS partition
+-python3 MFSUtil.py -m MFS.part -r -i 8 -o MFS.part
++$python MFSUtil.py -m MFS.part -r -i 8 -o MFS.part
+
+ # Add the modified fitc.cfg into the MFS partition
+-python3 MFSUtil.py -m MFS.part -a fitc.cfg --deoptimize -i 7 -o MFS.part
++$python MFSUtil.py -m MFS.part -a fitc.cfg --deoptimize -i 7 -o MFS.part
+
+ # Write
+ dd conv=notrunc if=MFS.part of=me.bin seek=168 count=100 bs=4096
+--
+2.39.5
+
diff --git a/config/vendor/3050micro/pkg.cfg b/config/vendor/3050micro/pkg.cfg
new file mode 100644
index 00000000..f1f7860b
--- /dev/null
+++ b/config/vendor/3050micro/pkg.cfg
@@ -0,0 +1,4 @@
+DL_hash="976bbb1e625f64df276d8343757d910c88b8a781f953bc2c41a7dd15184ec70d55f8081de2a0aaa83cddb8e73bdc2df6288fde6e0897e4928c48ca4bb30bea2d"
+DL_url="https://download.asrock.com/BIOS/1151/H110M-DGS(7.30)ROM.zip"
+DL_url_bkup="https://web.archive.org/web/20230822134231/https://download.asrock.com/BIOS/1151/H110M-DGS(7.30)ROM.zip"
+ME_bootguard="me11disreguard"
diff --git a/include/vendor.sh b/include/vendor.sh
index 03c7ad7d..c5b6560d 100644
--- a/include/vendor.sh
+++ b/include/vendor.sh
@@ -23,7 +23,7 @@ eval `setvars "" EC_url_bkup EC_hash DL_hash DL_url_bkup MRC_refcode_gbe vcfg \
E6400_VGA_romname SCH5545EC_DL_url_bkup SCH5545EC_DL_hash _dest tree \
mecleaner kbc1126_ec_dump MRC_refcode_cbtree new_mac _dl SCH5545EC_DL_url \
archive EC_url boarddir rom cbdir DL_url nukemode cbfstoolref vrelease \
- verify _7ztest $cv`
+ verify _7ztest ME_bootguard $cv`
vendor_download()
{
@@ -107,6 +107,14 @@ extract_intel_me()
e "$mecleaner" f not && $err "$cbdir: me_cleaner missing"
_me="$PWD/$_dest"; cdir="$PWD/$appdir"
+ if [ "$ME_bootguard" = "me11disreguard" ]; then
+ # run mkukri's util to extract me.bin and disable bootguard
+ # for Dell OptiPlex 3050 Micro, using the deguard util.
+ extract_deguard_me "$cdir" "$_me"
+ return 0
+ fi
+ # All other ME setups are extracted with brute force and me_cleaner:
+
[ $# -gt 0 ] && _me="${1}" && cdir="$2"
e "$_me" f && return 0
@@ -141,6 +149,29 @@ extract_intel_me()
rm -Rf "$sdir" || $err "extract_intel_me: !rm -Rf $sdir"
}
+extract_deguard_me()
+{
+ x_ ./mk -f deguard
+ cp -R src/deguard "$1/disreguard" || \
+ $err "Cannot make temporary deguard clone in $1/disreguard"
+ if [ ! -e "$1/disreguard/.git" ]; then
+ git -C "$1/disreguard" init || $err "!init $1/disreguard"
+ git -C "$1/disreguard" add -A . || $err "!add $1/disreguard"
+ git -C "$1/disreguard" commit -m "tmp" || \
+ $err "!commit $1/disreguard"
+ fi
+ git -C "$1/disreguard" am config/data/deguard/appdir.patch || \
+ $err "Cannot temporarily patch deguard clone in $1/disreguard"
+ (
+ cd "$1/disreguard" || $err "Cannot cd to '$1/disreguard'"
+ x_ ./RUNME.sh
+ )
+ "$mecleaner" --whitelist MFS --truncate "$1/disreguard/me.bin" || \
+ $err "extract_intel_me: Can't truncate disreguarded ME"
+ cp "$cdir/disreguard/me.bin" "$2" || \
+ $err "extract_intel_me: Can't move disreguarded me.bin"
+}
+
extract_archive()
{
innoextract "$1" -d "$2" || python "$pfs_extract" "$1" -e || 7z x \