mirror of
https://github.com/assafdori/bypass-mdm.git
synced 2026-04-19 10:34:57 +00:00
added v2 script, dynamically fetching volume name
This commit is contained in:
84
bypass-mdm-v2.sh
Normal file
84
bypass-mdm-v2.sh
Normal file
@@ -0,0 +1,84 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Define color codes
|
||||
RED='\033[1;31m'
|
||||
GRN='\033[1;32m'
|
||||
BLU='\033[1;34m'
|
||||
YEL='\033[1;33m'
|
||||
PUR='\033[1;35m'
|
||||
CYAN='\033[1;36m'
|
||||
NC='\033[0m'
|
||||
|
||||
# Function to get the system volume name
|
||||
get_system_volume() {
|
||||
system_volume=$(diskutil info / | grep "Device Node" | awk -F': ' '{print $2}' | xargs diskutil info | grep "Volume Name" | awk -F': ' '{print $2}' | tr -d ' ')
|
||||
echo "$system_volume"
|
||||
}
|
||||
|
||||
# Get the system volume name
|
||||
system_volume=$(get_system_volume)
|
||||
|
||||
# Display header
|
||||
echo -e "${CYAN}Bypass MDM By Assaf Dori (assafdori.com)${NC}"
|
||||
echo ""
|
||||
|
||||
# Prompt user for choice
|
||||
PS3='Please enter your choice: '
|
||||
options=("Bypass MDM from Recovery" "Reboot & Exit")
|
||||
select opt in "${options[@]}"; do
|
||||
case $opt in
|
||||
"Bypass MDM from Recovery")
|
||||
# Bypass MDM from Recovery
|
||||
echo -e "${YEL}Bypass MDM from Recovery"
|
||||
if [ -d "/Volumes/$system_volume - Data" ]; then
|
||||
diskutil rename "$system_volume - Data" "Data"
|
||||
fi
|
||||
|
||||
# Create Temporary User
|
||||
echo -e "${NC}Create a Temporary User"
|
||||
read -p "Enter Temporary Fullname (Default is 'Apple'): " realName
|
||||
realName="${realName:=Apple}"
|
||||
read -p "Enter Temporary Username (Default is 'Apple'): " username
|
||||
username="${username:=Apple}"
|
||||
read -p "Enter Temporary Password (Default is '1234'): " passw
|
||||
passw="${passw:=1234}"
|
||||
|
||||
# Create User
|
||||
dscl_path='/Volumes/Data/private/var/db/dslocal/nodes/Default'
|
||||
echo -e "${GREEN}Creating Temporary User"
|
||||
dscl -f "$dscl_path" localhost -create "/Local/Default/Users/$username"
|
||||
dscl -f "$dscl_path" localhost -create "/Local/Default/Users/$username" UserShell "/bin/zsh"
|
||||
dscl -f "$dscl_path" localhost -create "/Local/Default/Users/$username" RealName "$realName"
|
||||
dscl -f "$dscl_path" localhost -create "/Local/Default/Users/$username" UniqueID "501"
|
||||
dscl -f "$dscl_path" localhost -create "/Local/Default/Users/$username" PrimaryGroupID "20"
|
||||
mkdir "/Volumes/Data/Users/$username"
|
||||
dscl -f "$dscl_path" localhost -create "/Local/Default/Users/$username" NFSHomeDirectory "/Users/$username"
|
||||
dscl -f "$dscl_path" localhost -passwd "/Local/Default/Users/$username" "$passw"
|
||||
dscl -f "$dscl_path" localhost -append "/Local/Default/Groups/admin" GroupMembership $username
|
||||
|
||||
# Block MDM domains
|
||||
echo "0.0.0.0 deviceenrollment.apple.com" >>/Volumes/"$system_volume"/etc/hosts
|
||||
echo "0.0.0.0 mdmenrollment.apple.com" >>/Volumes/"$system_volume"/etc/hosts
|
||||
echo "0.0.0.0 iprofiles.apple.com" >>/Volumes/"$system_volume"/etc/hosts
|
||||
echo -e "${GRN}Successfully blocked MDM & Profile Domains"
|
||||
|
||||
# Remove configuration profiles
|
||||
touch /Volumes/Data/private/var/db/.AppleSetupDone
|
||||
rm -rf /Volumes/"$system_volume"/var/db/ConfigurationProfiles/Settings/.cloudConfigHasActivationRecord
|
||||
rm -rf /Volumes/"$system_volume"/var/db/ConfigurationProfiles/Settings/.cloudConfigRecordFound
|
||||
touch /Volumes/"$system_volume"/var/db/ConfigurationProfiles/Settings/.cloudConfigProfileInstalled
|
||||
touch /Volumes/"$system_volume"/var/db/ConfigurationProfiles/Settings/.cloudConfigRecordNotFound
|
||||
|
||||
echo -e "${GRN}MDM enrollment has been bypassed!${NC}"
|
||||
echo -e "${NC}Exit terminal and reboot your Mac.${NC}"
|
||||
break
|
||||
;;
|
||||
"Reboot & Exit")
|
||||
# Reboot & Exit
|
||||
echo "Rebooting..."
|
||||
reboot
|
||||
break
|
||||
;;
|
||||
*) echo "Invalid option $REPLY" ;;
|
||||
esac
|
||||
done
|
||||
Reference in New Issue
Block a user