#!/system/bin/sh # MagiskHide Props Config # Copyright (c) 2018-2021 Didgeridoohan @ XDA Developers # Licence: MIT #anch1 MODPATH=${0%/*} BOOTSTAGE="post" # Variables MODULESPATH=${MODPATH%/*} ADBPATH=${MODULESPATH%/*} MHPCPATH=$ADBPATH/mhpc LOGFILE=$MHPCPATH/propsconf.log LASTLOGFILE=$MHPCPATH/propsconf_last.log VLOGFILE=$MHPCPATH/propsconf_boot_verbose.log VLASTLOGFILE=$MHPCPATH/propsconf_boot_verbose_last.log RUNFILE=$MHPCPATH/script_check # Placeholder variables MODVERSIONPH=VER_PLACEHOLDER LATEFILEPH=LATE_PLACEHOLDER # Sensitive props # Safe values TRIGGERSAFELIST=" ro.bootmode=unknown ro.boot.mode=unknown vendor.boot.mode=unknown ro.boot.hwc=GLOBAL ro.boot.hwcountry=GLOBAL " # Triggering values TRIGGERLIST=" ro.bootmode=recovery ro.boot.mode=recovery vendor.boot.mode=recovery ro.boot.hwc=CN ro.boot.hwcountry=China " # Saves the previous log (if available) and creates a new one if [ -f "$LOGFILE" ]; then mv -f $LOGFILE $LASTLOGFILE fi # Run the boot logcat script . $MODPATH/common/bootlog.sh #Start logging echo "***************************************************" > $LOGFILE 2>&1 echo "********* MagiskHide Props Config $MODVERSION ********" >> $LOGFILE 2>&1 echo "***************** By Didgeridoohan ***************" >> $LOGFILE 2>&1 echo "***************************************************" >> $LOGFILE 2>&1 echo "" STRST="$(date +"%m-%d-%Y %H:%M:%S.%3N") - Log start (regular execution)." echo -e $STRST >> $LOGFILE 2>&1 echo -e $STRST > $RUNFILE 2>&1 # Save default prop values getprop > $MHPCPATH/defaultprops echo "" >> $LOGFILE 2>&1 echo -e "$(date +"%Y-%m-%d %H:%M:%S.%3N") - Saved default values" >> $LOGFILE 2>&1 { # Creates/updates the script control file touch $MHPCPATH/propsconf_postchk >> $LOGFILE 2>&1 # Logging log_handler() { echo "" >> $LOGFILE 2>&1 echo -e "$(date +"%Y-%m-%d %H:%M:%S.%3N") - $1" >> $LOGFILE 2>&1 } # Get left side of =, $1=string to check get_eq_left() { echo $1 | cut -f 1 -d '=' } # Get right side of =, $1=string to check get_eq_right() { echo $1 | cut -f 2- -d '=' } # Finding file values, $1=file (with path), $2=string to look for get_file_value() { if [ -f "$1" ]; then echo $(grep $2 $1) | sed "s|.*${2}||" | sed 's|\"||g' fi } # Find prop type, $1=prop name get_prop_type() { if [ "$1" == "vendor.boot.mode" ]; then echo "vendormode" else echo $1 | sed 's|.*\.||' | sed 's|.*\_||' fi } # Reset/disable file locations FILELOCLST=" /data/media/0 /data $CACHELOC " # Check if disable file is present DISABLEFILE="" for ITEM in $FILELOCLST; do if [ -f "$ITEM/disable_mhpc" ]; then DISABLEFILE="$ITEM/disable_mhpc" break fi done if [ -f "$DISABLEFILE" ]; then log_handler "Disable file found. Disabling module..." touch $MODPATH/disable for ITEM in $FILELOCLST; do rm -f $ITEM/disable_mhpc done # Deletes the post-fs-data control file rm -f $MHPCPATH/propsconf_postchk >> $LOGFILE 2>&1 # Reboot log_handler "Setting reboot flag." touch $MHPCPATH/reboot >> $LOGFILE 2>&1 fi # Check for the boot script and restore backup if deleted, or if the reset file is present RESETFILE="" for ITEM in $FILELOCLST; do if [ -f "$ITEM/reset_mhpc" ]; then RESETFILE="$ITEM/reset_mhpc" break fi done if [ ! -s "$LATEFILE" ] || [ -f "$RESETFILE" ]; then if [ -f "$RESETFILE" ]; then log_handler "Reset file found." RSTTXT="Resetting" for ITEM in $FILELOCLST; do rm -f $ITEM/reset_mhpc done else RSTTXT="Restoring" if [ -f "$LATEFILE" ]; then log_handler "The module settings file was empty." else log_handler "The module settings file could not be found." fi fi log_handler "$RSTTXT module settings file (${LATEFILE})." cp -af $MODPATH/common/propsconf_late $LATEFILE >> $LOGFILE 2>&1 rm -f $MODPATH/system.prop >> $LOGFILE 2>&1 fi # Loading module settings log_handler "Loading module settings" . $LATEFILE # Remove ro.build.selinux if present if [ "$(grep "ro.build.selinux" $MHPCPATH/defaultprops)" ]; then log_handler "Removing ro.build.selinux." resetprop -v --delete ro.build.selinux >> $LOGFILE 2>&1 fi if [ "$PROPEDIT" == 1 ] && [ "$PROPBOOT" == 0 ]; then # Set trigger props for ITEM in $TRIGGERLIST; do TMPPROP=$(get_eq_left "$ITEM") TMPVAL=$(echo $(grep "\[${TMPPROP}\]" "$MHPCPATH/defaultprops") | sed -e "s|.*\]\:\ \[||g;s|\]$||g") REPROP=$(echo "RE$(get_prop_type "$TMPPROP")" | tr '[:lower:]' '[:upper:]') REVAL=$(get_file_value $LATEFILE "${REPROP}=") if [ "$REVAL" == "true" ]; then if [ "$TMPVAL" == "$(get_eq_right "$ITEM")" ]; then log_handler "Changing/writing $TMPPROP." for SAFEVAL in $TRIGGERSAFELIST; do if [ "$TMPPROP" == "$(get_eq_left "$SAFEVAL")" ]; then resetprop -nv $(get_eq_left $SAFEVAL) $(get_eq_right $SAFEVAL) >> $LOGFILE 2>&1 break fi done elif [ "$TMPVAL" ]; then log_handler "Skipping $TMPPROP, not set to triggering value." else log_handler "Skipping $TMPPROP, does not exist on device." fi fi done fi # Edits prop values if set for post-fs-data if [ "$OPTIONBOOT" == 1 ] || [ "$OPTIONBOOT" != 1 -a "$PRINTSTAGE" == 1 ] || [ "$OPTIONBOOT" != 1 -a "$PATCHSTAGE" == 1 ] || [ "$OPTIONBOOT" != 1 -a "$SIMSTAGE" == 1 ] || [ "$CUSTOMPROPSPOST" ] || [ "$DELETEPROPS" ] || [ "$PROPBOOT" == 1 ]; then # Load functions . $MODPATH/common/util_functions.sh echo -e "\n----------------------------------------" >> $LOGFILE 2>&1 log_handler "Editing prop values in post-fs-data mode." if [ "$OPTIONBOOT" == 1 ]; then # Setting/Changing fingerprint if [ "$PRINTSTAGE" == 0 ]; then print_edit "none" fi # Setting/Changing security patch date if [ "$PATCHSTAGE" == 0 ]; then patch_edit "none" fi # Forced basic attestation if [ "$BASICATTEST" == 1 ]; then forced_basic "none" fi # Setting device simulation props if [ "$SIMSTAGE" == 0 ]; then dev_sim_edit "none" fi # Setting custom props custom_edit "CUSTOMPROPS" else # Edit fingerprint if set for post-fs-data if [ "$PRINTSTAGE" == 1 ]; then print_edit "none" fi # Edit security patch date if set for post-fs-data if [ "$PATCHSTAGE" == 1 ]; then patch_edit "none" fi # Edit simulation props if set for post-fs-data if [ "$SIMSTAGE" == 1 ]; then dev_sim_edit "none" fi fi # Edit MagiskHide sensitive props if set for post-fs-data if [ "$PROPEDIT" == 1 ] && [ "$PROPBOOT" == 1]; then sensitive_props "$PROPSLIST" "$SAFELIST" fi # Edit custom props set for post-fs-data custom_edit "CUSTOMPROPSPOST" # Deleting props prop_del echo -e "\n----------------------------------------" >> $LOGFILE 2>&1 fi log_handler "post-fs-data.sh module script finished." echo -e "\n$(date +"%Y-%m-%d %H:%M:%S:%N") - post-fs-data.sh module script finished." >> $RUNFILE 2>&1 # Deletes the post-fs-data control file rm -f $MHPCPATH/propsconf_postchk >> $LOGFILE 2>&1 } &