From 5f01e1a5ddbda2840fd89be5d07d7d3447267e38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=85=8E=E9=A5=BC=E6=9E=9C=E5=AD=90=E5=8D=B7=E9=B2=A8?= =?UTF-8?q?=E9=B1=BC=E8=BE=A3=E6=A4=92?= Date: Sun, 21 Dec 2025 00:56:51 +0800 Subject: [PATCH] =?UTF-8?q?refactor(scripts):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E8=B7=A8=E5=B9=B3=E5=8F=B0ID=E4=BF=AE=E6=94=B9=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=E7=9A=84ESM=E5=85=BC=E5=AE=B9=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除Linux和macOS脚本中的增强权限标识描述 - 改进IIFE注入代码以支持ESM环境降级处理 - 删除macOS脚本中冗余的系统MAC地址修改函数 - 清理相关日志和结果输出中对MAC地址修改的引用 - 统一各平台脚本的设备识别绕过逻辑描述 --- scripts/run/cursor_linux_id_modifier.sh | 6 +- scripts/run/cursor_mac_id_modifier.sh | 223 +----------------------- scripts/run/cursor_win_id_modifier.ps1 | 6 +- 3 files changed, 10 insertions(+), 225 deletions(-) diff --git a/scripts/run/cursor_linux_id_modifier.sh b/scripts/run/cursor_linux_id_modifier.sh index 09b8660..d21730b 100755 --- a/scripts/run/cursor_linux_id_modifier.sh +++ b/scripts/run/cursor_linux_id_modifier.sh @@ -783,9 +783,9 @@ modify_cursor_js_files() { fi # ========== 方法B: IIFE运行时劫持(crypto.randomUUID) ========== - # 使用IIFE包装,兼容webpack打包的bundle文件,无需import语法 - # 劫持crypto.randomUUID从源头拦截所有UUID生成 - local inject_code=";(function(){/*__cursor_patched__*/var _cr=require('crypto'),_orig=_cr.randomUUID;_cr.randomUUID=function(){return'${new_uuid}';};if(typeof globalThis!=='undefined'){globalThis.__cursor_machine_id='${machine_id}';globalThis.__cursor_mac_machine_id='${mac_machine_id}';globalThis.__cursor_dev_device_id='${device_id}';globalThis.__cursor_sqm_id='${sqm_id}';}try{var _os=require('os'),_origNI=_os.networkInterfaces;_os.networkInterfaces=function(){var r=_origNI.call(_os);for(var k in r){if(r[k]){for(var i=0;i "${file}.new" @@ -1590,203 +1590,6 @@ modify_cursor_js_files() { fi } -# 增强的系统MAC地址修改函数,支持多种兼容性检测和修改方法 -change_system_mac_address() { - log_info "开始尝试修改所有活动的 Wi-Fi/Ethernet 接口的系统 MAC 地址..." - echo - - # 环境兼容性预检查 - detect_macos_environment - local env_compatible=$? - - if [[ $env_compatible -ne 0 ]]; then - echo -e "${YELLOW}⚠️ [兼容性警告]${NC} 检测到可能存在MAC地址修改限制的环境:" - echo -e "${YELLOW} • macOS版本: $MACOS_VERSION${NC}" - echo -e "${YELLOW} • 硬件类型: $HARDWARE_TYPE${NC}" - echo -e "${YELLOW} • SIP状态: $SIP_STATUS${NC}" - echo - echo -e "${BLUE}💡 [建议]${NC} 在此环境中,传统的ifconfig方法可能失败。" - echo -e "${BLUE} 脚本将自动尝试多种兼容性方法,包括第三方工具。${NC}" - echo - - # 检查第三方工具可用性 - local tools_available=false - if command -v spoof-mac >/dev/null 2>&1; then - echo -e "${GREEN}✅ 检测到 spoof-mac 工具${NC}" - tools_available=true - fi - if command -v macchanger >/dev/null 2>&1; then - echo -e "${GREEN}✅ 检测到 macchanger 工具${NC}" - tools_available=true - fi - - if [[ $tools_available == false ]]; then - echo -e "${YELLOW}⚠️ 未检测到第三方MAC修改工具${NC}" - echo -e "${BLUE}💡 建议安装: brew install spoof-mac 或 brew install macchanger${NC}" - echo - - # 🔧 Apple Silicon智能替代方案 - if [[ "$HARDWARE_TYPE" == "Apple Silicon" ]]; then - echo -e "${BLUE}🔧 [智能方案]${NC} 检测到Apple Silicon环境,MAC地址修改受硬件限制" - echo -e "${BLUE}💡 [自动切换]${NC} 将自动使用JS内核修改实现更直接的设备识别绕过" - echo - - log_info "🔄 [智能切换] 自动切换到JS内核修改方案..." - if modify_cursor_js_files; then - log_info "✅ [成功] JS内核修改完成,已实现设备识别绕过" - log_info "💡 [说明] 此方案比MAC地址修改更直接有效,完美适配Apple Silicon" - return 0 - else - log_warn "⚠️ [警告] JS内核修改失败,将继续尝试MAC地址修改" - fi - fi - - # 非Apple Silicon环境或JS修改失败时,询问是否继续MAC地址修改 - read -p "是否继续尝试MAC地址修改?(y/n): " continue_choice - if [[ ! "$continue_choice" =~ ^(y|yes)$ ]]; then - log_info "用户选择跳过MAC地址修改" - return 1 - fi - fi - fi - - echo -e "${YELLOW}[警告]${NC} 即将尝试修改您所有活动的 Wi-Fi 或以太网接口的 MAC 地址。" - echo -e "${YELLOW}[警告]${NC} 此更改是 ${RED}临时${NC} 的,将在您重启 Mac 后恢复为原始地址。" - echo -e "${YELLOW}[警告]${NC} 修改 MAC 地址可能会导致临时的网络中断或连接问题。" - echo -e "${YELLOW}[警告]${NC} 请确保您了解相关风险。此操作主要影响本地网络识别,而非互联网身份。" - echo - - local active_interfaces=() - local potential_interfaces=() - local default_route_interface="" - - # 0. 尝试获取默认路由接口,作为后备 - log_info "尝试通过路由表获取默认网络接口 (用于后备)..." - default_route_interface=$(route get default | grep 'interface:' | awk '{print $2}') - if [ -n "$default_route_interface" ]; then - log_info "检测到默认路由接口 (后备): $default_route_interface" - else - log_warn "未能通过路由表获取默认接口 (后备)。" - fi - - # 1. 获取所有 Wi-Fi 和 Ethernet 接口名称 - log_info "正在检测 Wi-Fi 和 Ethernet 接口..." - while IFS= read -r line; do - if [[ $line == "Hardware Port: Wi-Fi" || $line == "Hardware Port: Ethernet" ]]; then - read -r dev_line # 读取下一行 Device: enX - device=$(echo "$dev_line" | awk '{print $2}') - if [ -n "$device" ]; then - log_debug "检测到潜在接口: $device ($line)" - potential_interfaces+=("$device") - fi - fi - done < <(networksetup -listallhardwareports) - - if [ ${#potential_interfaces[@]} -eq 0 ]; then - log_warn "未能通过 networksetup 检测到任何 Wi-Fi 或 Ethernet 接口。" - # 检查是否有路由表接口作为后备 - if [ -n "$default_route_interface" ]; then - log_warn "将使用路由表检测到的接口 '$default_route_interface' 作为后备。" - potential_interfaces+=("$default_route_interface") - else - log_warn "路由表也未能提供后备接口。" - # 在此情况下,potential_interfaces 仍为空,后续逻辑会处理 - fi - fi - - # 2. 检查哪些接口是活动的 - log_info "正在检查接口活动状态..." - for interface_name in "${potential_interfaces[@]}"; do - log_debug "检查接口 '$interface_name' 状态..." - if ifconfig "$interface_name" 2>/dev/null | grep -q "status: active"; then - log_info "发现活动接口: $interface_name" - active_interfaces+=("$interface_name") - else - log_debug "接口 '$interface_name' 非活动或不存在。" - fi - done - - # 3. 检查是否找到活动接口 - if [ ${#active_interfaces[@]} -eq 0 ]; then - log_warn "未找到任何活动的 Wi-Fi 或 Ethernet 接口可供修改 MAC 地址。" - echo -e "${YELLOW}未找到活动的 Wi-Fi 或 Ethernet 接口。跳过 MAC 地址修改。${NC}" - return 1 # 返回错误码,表示没有接口被修改 - fi - - log_info "将尝试为以下活动接口修改 MAC 地址: ${active_interfaces[*]}" - echo - - # 4. 🚀 循环处理找到的活动接口(增强版) - local overall_success=true - local successful_interfaces=() - local failed_interfaces=() - - echo -e "${BLUE}🚀 [开始] 开始处理 ${#active_interfaces[@]} 个活动接口...${NC}" - echo - - # 处理每个接口 - for i in "${!active_interfaces[@]}"; do - local interface_name="${active_interfaces[$i]}" - local interface_num=$((i + 1)) - - echo -e "${YELLOW}╔══════════════════════════════════════════════════════════════╗${NC}" - echo -e "${YELLOW}║ 处理接口 $interface_num/${#active_interfaces[@]}: $interface_name ║${NC}" - echo -e "${YELLOW}╚══════════════════════════════════════════════════════════════╝${NC}" - echo - - if _change_mac_for_one_interface "$interface_name"; then - log_info "✅ [成功] 接口 '$interface_name' MAC地址修改成功" - successful_interfaces+=("$interface_name") - else - log_warn "⚠️ [失败] 接口 '$interface_name' MAC地址修改失败" - failed_interfaces+=("$interface_name") - overall_success=false - fi - - echo - echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" - echo - done - - # 📊 显示处理结果统计 - echo -e "${BLUE}📊 [统计] MAC地址修改结果统计:${NC}" - echo " ✅ 成功: ${#successful_interfaces[@]} 个接口" - if [ ${#successful_interfaces[@]} -gt 0 ]; then - for interface in "${successful_interfaces[@]}"; do - echo " • $interface" - done - fi - echo " ❌ 失败: ${#failed_interfaces[@]} 个接口" - if [ ${#failed_interfaces[@]} -gt 0 ]; then - for interface in "${failed_interfaces[@]}"; do - echo " • $interface" - done - fi - echo - - log_info "📋 [完成] 所有活动接口的MAC地址修改尝试完成" - - if $overall_success; then - return 0 # 所有尝试都成功 - else - # 🔧 MAC地址修改失败时自动切换到JS内核修改 - echo - log_warn "⚠️ [警告] MAC地址修改失败或部分失败" - log_info "🔧 [智能切换] 自动切换到JS内核修改方案..." - log_info "💡 [说明] JS内核修改直接修改Cursor设备检测逻辑,绕过效果更好" - - if modify_cursor_js_files; then - log_info "✅ [成功] JS内核修改完成,已实现设备识别绕过" - log_info "💡 [结果] 虽然MAC地址修改失败,但JS内核修改提供了更直接的解决方案" - return 0 - else - log_error "❌ [失败] JS内核修改也失败了" - log_error "💥 [严重] 所有设备识别绕过方案都失败了" - return 1 - fi - fi -} - @@ -2752,17 +2555,7 @@ main() { log_info "💡 [建议] 请尝试'重置环境+修改机器码'选项" fi - # 🔧 智能设备识别绕过(MAC地址修改或JS内核修改) - echo - log_info "🔧 [设备识别] 开始智能设备识别绕过..." - log_info "💡 [说明] 将根据系统环境自动选择最佳方案(MAC地址修改或JS内核修改)" - if change_system_mac_address; then - log_info "✅ [成功] 设备识别绕过完成(使用MAC地址修改)" - else - log_warn "⚠️ [警告] 设备识别绕过失败或部分失败" - log_info "💡 [提示] 但可能已通过JS内核修改实现了绕过效果" - fi # 🚫 禁用自动更新(仅修改模式也需要) echo @@ -2818,12 +2611,6 @@ main() { log_info "🔧 [设备识别] 开始智能设备识别绕过..." log_info "💡 [说明] 将根据系统环境自动选择最佳方案(MAC地址修改或JS内核修改)" - if change_system_mac_address; then - log_info "✅ [成功] 设备识别绕过完成(使用MAC地址修改)" - else - log_warn "⚠️ [警告] 设备识别绕过失败或部分失败" - log_info "💡 [提示] 但可能已通过JS内核修改实现了绕过效果" - fi # 🔧 关键修复:修复应用签名问题(防止"应用已损坏"错误) echo @@ -2862,7 +2649,6 @@ main() { echo -e "${BLUE} 🎯 修改结果总结 ${NC}" echo -e "${GREEN}================================${NC}" echo -e "${GREEN}✅ JSON配置文件修改: 完成${NC}" - echo -e "${GREEN}✅ MAC地址修改: 完成${NC}" echo -e "${GREEN}✅ 自动更新禁用: 完成${NC}" echo -e "${GREEN}================================${NC}" echo @@ -2877,7 +2663,6 @@ main() { echo log_info "💡 [重要提示] 完整的Cursor破解流程已执行:" echo -e "${BLUE} ✅ 机器码配置文件修改${NC}" - echo -e "${BLUE} ✅ 系统MAC地址修改${NC}" echo -e "${BLUE} ✅ 自动更新功能禁用${NC}" echo -e "${BLUE} ✅ 权限修复和验证${NC}" echo diff --git a/scripts/run/cursor_win_id_modifier.ps1 b/scripts/run/cursor_win_id_modifier.ps1 index b3d6f10..e217825 100644 --- a/scripts/run/cursor_win_id_modifier.ps1 +++ b/scripts/run/cursor_win_id_modifier.ps1 @@ -197,9 +197,9 @@ function Modify-CursorJSFiles { } # ========== 方法B: IIFE运行时劫持(crypto.randomUUID) ========== - # 使用IIFE包装,兼容webpack打包的bundle文件,无需import语法 - # 劫持crypto.randomUUID从源头拦截所有UUID生成 - $injectCode = ";(function(){/*__cursor_patched__*/var _cr=require('crypto'),_orig=_cr.randomUUID;_cr.randomUUID=function(){return'$newUuid';};if(typeof globalThis!=='undefined'){globalThis.__cursor_machine_id='$machineId';globalThis.__cursor_mac_machine_id='$macMachineId';globalThis.__cursor_dev_device_id='$deviceId';globalThis.__cursor_sqm_id='$sqmId';}try{var _os=require('os'),_origNI=_os.networkInterfaces;_os.networkInterfaces=function(){var r=_origNI.call(_os);for(var k in r){if(r[k]){for(var i=0;i