#!/system/bin/sh
# 终极兼容随机伪装 - 专为 MT 管理器 Root 优化
# 保证使用的命令全部存在于标准 Android 系统

WLAN=$(ls /sys/class/net/ | grep -E '^wlan[0-9]' | head -n 1)
if [ -z "$WLAN" ]; then
    echo "未找到无线接口"
    exit 1
fi
echo "无线接口: $WLAN"

# 生成随机十六进制字符串的函数 (兼容 busybox 缺失)
randhex() {
    # 尝试用 busybox xxd，失败则用 od 再不行用 $RANDOM 拼凑
    local len=$1
    local result=""
    if command -v busybox >/dev/null 2>&1 && busybox xxd -p -l "$len" /dev/urandom 2>/dev/null; then
        return
    fi
    if command -v od >/dev/null 2>&1; then
        result=$(od -A n -t x1 -N "$len" /dev/urandom | tr -d ' \n')
        if [ -n "$result" ]; then
            echo "$result"
            return
        fi
    fi
    # 最差兜底：用 $RANDOM 循环生成（可能碰撞概率高，但凑合用）
    for i in $(seq 1 "$len"); do
        result="$result$(printf '%02x' $((RANDOM % 256)))"
    done
    echo "$result"
}

# 随机 MAC (单播)
NEW_MAC=""
while [ ${#NEW_MAC} -lt 17 ]; do
    b1=$((RANDOM % 256))
    b1=$((b1 & 0xFE))          # 单播位
    NEW_MAC=$(printf '%02x:%02x:%02x:%02x:%02x:%02x' \
        $b1 $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)))
done

# 随机主机名（使用 /dev/urandom 或者 RANDOM）
if [ -c /dev/urandom ]; then
    NEW_HOST="$(busybox xxd -p -l 4 /dev/urandom)$(busybox xxd -p -l 2 /dev/urandom)" 2>/dev/null
fi
if [ -z "$NEW_HOST" ]; then
    NEW_HOST="host-$(date +%s | tail -c5)-$(printf '%04x' $RANDOM)"
fi

# 随机 Android ID
NEW_ID=$(randhex 16)

# 随机 TTL (64~255)
NEW_TTL=$(( (RANDOM % 192) + 64 ))

echo "生成的 MAC: $NEW_MAC"
echo "主机名: $NEW_HOST"
echo "新 Android ID: $NEW_ID"
echo "新 TTL: $NEW_TTL"

# ---- 开始修改 ----
echo "1. 断开 WiFi..."
svc wifi disable
sleep 2

echo "2. 修改 MAC..."
ip link set "$WLAN" down
ip link set "$WLAN" address "$NEW_MAC" 2>/dev/null && echo "   MAC 修改成功" || echo "   MAC 修改失败"
ip link set "$WLAN" up

echo "3. 修改主机名..."
setprop net.hostname "$NEW_HOST"
echo "$NEW_HOST" > /proc/sys/kernel/hostname 2>/dev/null

echo "4. 修改 Android ID..."
settings put secure android_id "$NEW_ID" 2>/dev/null && echo "   Android ID 修改成功" || echo "   Android ID 修改失败"

echo "5. 修改 TTL..."
echo "$NEW_TTL" > /proc/sys/net/ipv4/ip_default_ttl 2>/dev/null && echo "   TTL 修改成功" || echo "   TTL 修改失败"
echo "$NEW_TTL" > /proc/sys/net/ipv6/conf/all/hop_limit 2>/dev/null

echo "6. 开启 WiFi 并重连..."
svc wifi enable
sleep 3
cmd wifi reconnect 2>/dev/null
sleep 5

echo "当前 IP: $(ip addr show $WLAN 2>/dev/null | grep 'inet ' | awk '{print $2}' | head -1)"
echo "当前 MAC: $(cat /sys/class/net/$WLAN/address)"
echo "完成。"