#!/bin/sh

set +uexo pipefail

self=${0%/*}
#Set environment variables
export TEMP=/data/local/tmp
typeset -x PATH="$PATH"

#Color Table
function 红色() { echo -e "\033[31;1m$*\033[0m"; }
function 绿色() { echo -e "\033[32;1m$*\033[0m"; }
function 黄色() { echo -e "\033[33;1m$*\033[0m"; }
function 蓝色() { echo -e "\033[36;1m$*\033[0m"; }
function 白色() { echo -e "\033[37;1m$*\033[0m"; }
function 粉色() { echo -e "\033[35;1m$*\033[0m"; }
function 紫色() { echo -e "\033[34;1m$*\033[0m"; }
function 浅色() { echo -e "\033[2;37m$*\033[0m"; }

#Command alias
alias mkdir="mkdir -p"
alias orien=">/dev/null 2>&1"
alias conan="2>/dev/null"

#Path where the script is located
D_PATH="$(
	cd $(dirname $0)
	pwd
)"
D_PATH=${D_PATH/'/storage/emulated/'/'/data/media/'}
D_PATH=${D_PATH/'/sdcard/'/'/data/media/0/'}
#Current script
A_PATH="$(dirname "$(readlink -f "$0")")"

#Application package
moli1s=$(cat /proc/sys/kernel/random/uuid | md5sum | head -c 18)

random=$(date +%s%N | md5sum | head -c 18)

[ -f "/data/system/users/0/settings_ssaid.xml" ] && {
	conan cp -f /data/system/users/0/settings_ssaid.xml /data/local/tmp/settings_ssaid.xml
	conan abx2xml -i /data/local/tmp/settings_ssaid.xml
	moli=$(grep 'userkey' /data/local/tmp/settings_ssaid.xml | awk -F'"' '{print $6}')
	黄色 "- 当前系统Android ID\n  $(白色 $moli)\n"
	conan rm -f /data/local/tmp/settings_ssaid.xml
}

#Prompt user
浅色 "  点击右下角lm选择"

#Into the right
	echo -en "$(绿色 - 选择修改Android ID的方案)
[ 1:全局 | 2:局部 | 3:自定义 ]："
	read moli
	if [ "$moli" = "1" ]; then
		绿色 "- Android ID已重置为 $random"
		conan rm -rf /data/system/users/0/
		绿色 "- 操作完成，重启设备以便生效"
		sleep 0.3
		
	elif [ "$moli" = "2" ]; then
		绿色 "- Android ID已重置为 $random"
		conan rm -f "/data/system/users/0/settings_ssaid.xml"
		conan rm -rf /data/system/users/0/registered_services/
		conan rm -f /data/system/users/0/app_idle_stats.xml
		sleep 0.3
		
	elif [ "$moli" = "3" ]; then
		echo -en "$(黄色 - 输入需要自定义Android ID的应用包名)"
		echo
		read moli2s
		pm list packages -3 > apk
		if [[ "$(grep package:"$moli2s" apk)" ]]; then
		echo 
		rm -rf apk
		else
		clear
		红色 "没有这样的应用"
		rm -rf apk
		exit
		fi
		[ -f "/data/system/users/0/settings_ssaid.xml" ] && {
			conan cp -f /data/system/users/0/settings_ssaid.xml /data/local/tmp/settings_ssaid.xml
			conan abx2xml -i /data/local/tmp/settings_ssaid.xml
			moli3s=$(grep "$moli2s" /data/local/tmp/settings_ssaid.xml | awk -F'"' '{print $6}')
			黄色 "- 当前应用Android ID $(白色 $moli3s)"
			黄色 "- 随机应用Android ID $(白色 $moli1s)"
			{
				echo -en "$(红色 - 是否使用当前随机Android ID)
[ A:确定 | B:自定义 ]："
				read moli5s
				if [ "$moli5s" = "A" ] || [ "$moli5s" = "a" ] || [ ! -n "$moli5s" ]; then
					绿色 "- Android ID已重置为 $random"
					conan sed -i "s#${moli3s}#${moli1s}#g" /data/local/tmp/settings_ssaid.xml
					moli4s=$(grep "$moli2s" /data/local/tmp/settings_ssaid.xml | awk -F'"' '{print $6}')
					黄色 "- 当前应用Android ID $(白色 $moli4s)"
					conan xml2abx -i /data/local/tmp/settings_ssaid.xml
					conan cp -f /data/local/tmp/settings_ssaid.xml /data/system/users/0/settings_ssaid.xml
					conan rm -f /data/local/tmp/settings_ssaid.xml
				elif [ "$moli5s" = "B" ] || [ "$moli5s" = "b" ]; then
					echo -en "- 输入需要自定义的Android ID参数："
					read moli6s
					绿色 "- Android ID已重置为 $random"
					conan sed -i "s#${moli3s}#${moli6s}#g" /data/local/tmp/settings_ssaid.xml
					moli4s=$(grep "$moli2s" /data/local/tmp/settings_ssaid.xml | awk -F'"' '{print $6}')
					黄色 "- 当前应用Android ID $(白色 $moli4s)"
					conan xml2abx -i /data/local/tmp/settings_ssaid.xml
					conan cp -f /data/local/tmp/settings_ssaid.xml /data/system/users/0/settings_ssaid.xml
					conan rm -f /data/local/tmp/settings_ssaid.xml
                fi
            }
        }
    fi
echo "当前设备ID："
settings get secure android_id
(MATRIX="0123456789qwertyuiopasdfghjklzxcvbnm"
LENGTH="16"
while [ "${n:=1}" -le "$LENGTH" ]
do
PASS="$PASS${MATRIX:$'(($RANDOM%${#MATRIX}))':1}"
let n+=1
done
settings put secure android_id "$PASS"
echo 修改后设备ID：
echo "$PASS")
MODDIR=${0%/*}
function rand(){ 
min=$1
max=$(($2-$min+1))
num=$(cat /dev/urandom | head -n 10 | cksum | awk -F ' ' '{print $1}')
echo $(($num%$max+$min))
}
echo $(rand 1100000000 2000000000) > $MODDIR/ID
$MODDIR/main $(cat $MODDIR/ID)
echo "修改后主板ID"
cat ID
rm -rf ID
(kkk="0123456789qwertyuiopasdfghjklzxcvbnm"
nkl="$(expr $RANDOM % 4 + 8)"
while [ "${n:=1}" -le "$nkl" ]
do
lpo="$lpo${kkk:$'(($RANDOM%${#kkk}))':1}"
let n+=1
done
echo 原sn码：
getprop ro.serialno
resetprop ro.serialno $lpo
echo 修改后sn码：
getprop ro.serialno)

echo 所有ID全部重置完成！
