From b0ce1db68387c06549f619c4908e7dae34f7c430 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: Wed, 14 Jan 2026 22:30:19 +0800 Subject: [PATCH] =?UTF-8?q?```=20fix(cursor):=20=E4=BF=AE=E5=A4=8DLinux?= =?UTF-8?q?=E5=92=8CMac=E8=84=9A=E6=9C=AC=E4=B8=AD=E6=AD=A3=E5=88=99?= =?UTF-8?q?=E8=A1=A8=E8=BE=BE=E5=BC=8F=E8=BD=AC=E4=B9=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复了cursor_linux_id_modifier.sh和cursor_mac_id_modifier.sh脚本中的正则表达式转义问题, 解决了raw单引号字符串中的\'引发的语法错误,并纠正正则转义以匹配实际main.js代码结构, 使Linux和Windows脚本逻辑保持一致。更新了createHash和digest函数的正则匹配模式, 以及return语句的匹配逻辑。 ``` --- scripts/run/cursor_linux_id_modifier.sh | 9 +++++---- scripts/run/cursor_mac_id_modifier.sh | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/scripts/run/cursor_linux_id_modifier.sh b/scripts/run/cursor_linux_id_modifier.sh index 5575e6d..e77be35 100755 --- a/scripts/run/cursor_linux_id_modifier.sh +++ b/scripts/run/cursor_linux_id_modifier.sh @@ -1275,8 +1275,9 @@ if True: i += 1 return None - hash_re = re.compile(r'createHash\\([\"\\']sha256[\"\\']\\)') - sig_re = re.compile(r'^async function (\\w+)\\((\\w+)\\)') + # 修复:避免 raw 单引号字符串中的 \\' 引发语法错误;并纠正正则转义以匹配实际 main.js 代码结构(与 Win 脚本逻辑对齐) + hash_re = re.compile(r"createHash\(\s*['\"]sha256['\"]\s*\)") + sig_re = re.compile(r'^async function (\w+)\((\w+)\)') hash_matches = list(hash_re.finditer(window)) diag(f"marker_index={marker_index} window_len={len(window)} sha256_createHash={len(hash_matches)}") @@ -1315,8 +1316,8 @@ if True: name, param = sm.group(1), sm.group(2) # 特征校验:sha256 + hex digest + return param ? raw : hash - has_digest = re.search(r'\\.digest\\([\"\\']hex[\"\\']\\)', func_text) is not None - has_return = re.search(r'return\\s+' + re.escape(param) + r'\\?\\w+:\\w+\\}', func_text) is not None + has_digest = re.search(r"\.digest\(\s*['\"]hex['\"]\s*\)", func_text) is not None + has_return = re.search(r'return\s+' + re.escape(param) + r'\?\w+:\w+\}', func_text) is not None if idx <= 3: diag(f"候选#{idx}: {name}({param}) len={len(func_text)} digest={has_digest} return={has_return}") if not has_digest: diff --git a/scripts/run/cursor_mac_id_modifier.sh b/scripts/run/cursor_mac_id_modifier.sh index 54d657a..4987884 100644 --- a/scripts/run/cursor_mac_id_modifier.sh +++ b/scripts/run/cursor_mac_id_modifier.sh @@ -2002,8 +2002,9 @@ if True: i += 1 return None - hash_re = re.compile(r'createHash\\([\"\\']sha256[\"\\']\\)') - sig_re = re.compile(r'^async function (\\w+)\\((\\w+)\\)') + # 修复:避免 raw 单引号字符串中的 \\' 引发语法错误;并纠正正则转义以匹配实际 main.js 代码结构(与 Win 脚本逻辑对齐) + hash_re = re.compile(r"createHash\(\s*['\"]sha256['\"]\s*\)") + sig_re = re.compile(r'^async function (\w+)\((\w+)\)') hash_matches = list(hash_re.finditer(window)) diag(f"marker_index={marker_index} window_len={len(window)} sha256_createHash={len(hash_matches)}") @@ -2042,8 +2043,8 @@ if True: name, param = sm.group(1), sm.group(2) # 特征校验:sha256 + hex digest + return param ? raw : hash - has_digest = re.search(r'\\.digest\\([\"\\']hex[\"\\']\\)', func_text) is not None - has_return = re.search(r'return\\s+' + re.escape(param) + r'\\?\\w+:\\w+\\}', func_text) is not None + has_digest = re.search(r"\.digest\(\s*['\"]hex['\"]\s*\)", func_text) is not None + has_return = re.search(r'return\s+' + re.escape(param) + r'\?\w+:\w+\}', func_text) is not None if idx <= 3: diag(f"候选#{idx}: {name}({param}) len={len(func_text)} digest={has_digest} return={has_return}") if not has_digest: