#!/bin/sh
echo '-------------'
echo 'internalblued (ios-pcie) installation'
echo '[+] creating /tmp/godmode.xml entitlements file'
# This is a godmode.xml entitlement file (no-container, task_for_pid_allow,platfrom-app)
echo "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+CjxwbGlzdCB2ZXJzaW9uPSIxLjAiPgo8ZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHkubm8tY29udGFpbmVyPC9rZXk+Cgk8dHJ1ZS8+Cgk8a2V5PmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5Lm5vLXNhbmRib3g8L2tleT4KCTx0cnVlLz4KCTxrZXk+dGFza19mb3JfcGlkLWFsbG93PC9rZXk+Cgk8dHJ1ZS8+Cgk8a2V5PnBsYXRmb3JtLWFwcGxpY2F0aW9uPC9rZXk+Cgk8dHJ1ZS8+CiAgICA8a2V5PmNvbS5hcHBsZS5kcml2ZXIuQXBwbGVCbHVldG9vdGhNb2R1bGUudXNlci1hY2Nlc3M8L2tleT4KCTx0cnVlLz4KCTxrZXk+Y29tLmFwcGxlLmRyaXZlci5BcHBsZUNvbnZlcmdlZElQQy51c2VyLWFjY2Vzczwva2V5PgoJPHRydWUvPgoJPGtleT5jb20uYXBwbGUuc2VjdXJpdHkuZXhjZXB0aW9uLmlva2l0LXVzZXItY2xpZW50LWNsYXNzPC9rZXk+Cgk8YXJyYXk+CgkJPHN0cmluZz5BcHBsZUJUSGNpVUM8L3N0cmluZz4KCQk8c3RyaW5nPkFwcGxlQlRNZ210VUM8L3N0cmluZz4KCQk8c3RyaW5nPkFwcGxlQmx1ZXRvb3RoTW9kdWxlVXNlckNsaWVudDwvc3RyaW5nPgoJCTxzdHJpbmc+QXBwbGVDb252ZXJnZWRJUENVc2VyQ2xpZW50PC9zdHJpbmc+Cgk8L2FycmF5Pgo8L2RpY3Q+CjwvcGxpc3Q+Cg==" | base64 -d > /tmp/godmode.xml

echo "[+] entitlements created:"
cat /tmp/godmode.xml

jtool2="$(which jtool2)"
ldid="$(which ldid)"
arch='arm64'
internalblued='/usr/bin/internalblued'

if ! which jtool2; then
    echo "[!] jtool2 not found! Canceling installation.."
    exit 1
fi


if ! which ldid; then
    echo "[!] ldid not found! Canceling installation.."
    exit 1
fi

echo "[+] jtool2: $jtool2"
echo "[+] ldid: $ldid"
echo "[+] arch: $arch"

# We can only sign single arch, so we need to extract the arch from internalblued
echo "[*] extracting $arch arch binary"
ARCH=$arch $jtool2 -e arch $internalblued

echo "[*] replacing $internalblued with extracted arch binary"
mv /tmp/internalblued.$arch $internalblued
# sign internalblued with bluetoothd entitlements
echo "[*] signing $internalblued with godmode entitlements"
$ldid -S/tmp/godmode.xml $internalblued

echo "[*] setting Permissions"
chmod +x /usr/bin/internalblued
echo "[*] cleaning up and launching the $internalblued daemon"
rm /tmp/godmode.xml
launchctl load /Library/LaunchDaemons/com.ttdennis.internalblued.plist
echo "[+] all done, exiting.."
