Skip to content

About

TRAE CN(原 TRAE SOLO CN)桌面客户端凭据存储逆向 — 4/4 解密,98 个 API,ECDSA P-256 Token 刷新,每日签到。2026-10:Trae CN 1.107.1 重测通过,OAuth 迁移 api.trae.com.cn,新增网页授权登录与模型请求。纯 Node.js/TypeScript。

Topics

Resources

Stars

14 stars

Watchers

0 watching

Forks

Repository files navigation

TRAE CN — 凭证逆向工程

Windows 上 TRAE CN(原名 TRAE SOLO CN / TraeWork CN)桌面客户端凭证存储的系统性逆向工程。

2026-10-24 更新:桌面客户端已改名 Trae CN(%LOCALAPPDATA%\Programs\Trae CN),本地解密链路已在 Trae CN v1.107.1 重测通过(byteCrypto 新锚点);域名规划、登录 URL 与模型请求对齐 modelmux traecn 渠道实测(OAuth 迁至 api.trae.com.cn,模型走 trae-api-cn.mchost.guru)。详见 docs/FLOW.md §九。

成果

指标 数值
解密 4/4 凭证条目(100%,2026-10-24 在 Trae CN 1.107.1 重测通过)
API 端点发现 98 个 TRAE 专用路径(共 356 个)
成功调用 API 18 个可用 + 22 个需参数
Token 续期 完整 ECDSA P-256 设备证明流程(双端点候选)
每日签到 状态查询 + 领取
模型请求 remote 目录 45 模型 + 22 通道目录(2026-10-24 实测)
浏览器登录 网页授权 URL(20 参数)+ 本地回调 + agent-browser 打开
测试覆盖 18/18 通过

快速开始

零依赖 CLI(推荐,真实落地产物)

# 无需 npm install,Node >= 18 直接运行:
node scripts/trae-cli.mjs decrypt    # 解密凭据(本地,无网络)
node scripts/trae-cli.mjs validate  # 活性验证(2 次轻请求)
node scripts/trae-cli.mjs checkin   # 签到状态(--claim 才领取)
node scripts/trae-cli.mjs models    # 模型列表(2 次轻请求)
node scripts/trae-cli.mjs login-url # 网页授权登录 URL
node scripts/trae-cli.mjs refresh --yes  # 轮换凭据并写回 storage.json

TypeScript 工程

npm install
npm run phase6          # 解密验证(本地,无网络请求)
npm run dev -- models   # token 活性 + 模型列表(共 3 次轻请求)
npm run dev -- checkin  # 每日签到
npm run dev -- login    # 浏览器授权登录(agent-browser 打开授权页,人工授权一次)
npm run dev -- refresh  # 轮换 token(请先关闭 TRAE!会轮换凭据,非必要不执行)
npx vitest run          # 18/18 通过

⚠ 克制原则:models 是验证用最小请求集(3 次轻请求);refresh 会轮换凭据、checkin 会领取积分——频率过高会触发风控导致账号异常。

流程

阶段 目标 关键发现
1. 侦察 框架/版本/数据目录 Electron + VS Code fork,解包目录
2. 数据收集 定位凭证存储 storage.json 在 globalStorage/
3. 格式分析 熵值与魔数 自定义 byteCrypto 信封(非 DPAPI)
4. 加密识别 定位加密代码 out/main.js byteCrypto 模块
5. 密钥提取 获取 pepper 表 4 张 64B 表,锚点随版本轮换(双锚点候选:旧 Em=async / 新 userStorage.js 模块路径)
6. 解密验证 解密 + API 测试 4/4 解密成功,loginAllowed:true

API 发现(89 个端点已测试)

分类 认证头 可用 总数
iCube x-icube-token 8 23
UG/增长 Cloud-IDE-JWT + x-device-id 2 17
Cloudide x-cloudide-token 7 36
Connector Cloud-IDE-JWT 1 9
GTM Cloud-IDE-JWT 0 4

业务域(14 类)

① 核心 IDE     → 远程环境、项目、MCP、技能、聊天会话
② 账号体系     → 登录/设备绑定/OAuth/第三方集成
③ 商业化       → 支付/套餐/权益/积分计费
④ 增长体系     → 每日签到/活动/裂变/邀请码
⑤ 内容生态     → 模板/素材/Agent 分享
⑥ 企业集成     → 飞书/Connector/Supabase/Vercel
⑦ 运营配置     → 动态配置/特性开关/通知偏好
⑧ 设计可视化   → HTML→Figma/设计库/可视化编辑器
⑨ 扩展市场     → 插件/技能/Agent 发布与管理
⑩ IM 桥接      → 飞书/企业消息桥接

核心发现

byteCrypto 信封

偏移    长度    内容
0       6       header = 74 63 05 10 00 00 ("tc" + ver5 + 0x10)
6       32      random(crypto.getRandomValues)
38      n*16    AES-128-CBC(key, iv, SHA512(plaintext) || plaintext)

密钥派生:pepper = Vie[i] ^ Qie[i] → derived = SHA512(SHA512(random) || pepper) → key = derived[0:16], iv = derived[16:32]

ExchangeToken(Token 续期)

端点双候选(2026-10 对齐 modelmux 实测):新 https://api.trae.com.cn/cloudide/api/v3/trae/oauth/ExchangeToken 优先,旧 https://api.trae.cn/trae/api/v3/oauth/ExchangeToken 自动回退。请求体:

{
  "ClientID": "en1oxy7wnw8j9n",
  "RefreshToken": "<当前>",
  "DeviceInfo": { "DeviceID": "...", "PlatformCode": "SOLO_PC", ... },
  "DeviceProof": {
    "Signature": "<ECDSA P-256 SHA-256 base64>",
    "Timestamp": "<unix 秒>",
    "Nonce": "<32 位 hex>"
  }
}

签名原文(path 按当前尝试的端点计算):"POST\n<path>\n<ClientID>\n<RefreshToken>\n<Timestamp>\n<Nonce>"

发现的 3 个坑:x-cloudide-token 必须为空字符串、DeviceProof 字段名必须 PascalCase、DeviceInfo 指纹必须与注册时一致。 注意:网页授权凭据(login 命令产物)与 IDE 本地解密凭据不同源——前者刷新用简化 body(无设备签名),见 traeUpstream.ts。

可用 API(18 个)

iCube:user, notifications/preferences, avatar/random, report/token, showcase/list, templates/list, templates/favorites, templates/scenes

UG:checkin_credits/status, checkin_credits/claim

Cloudide:GetUserInfo, CheckLogin, CheckPay, GetUserEmailSuffix, GetUserSupabaseToken, GetUserVercelToken, oauth/GetRefreshToken

Connector:GetFeishuPermissionTree

项目结构

src/
├── index.ts                          ← CLI(11 个命令)
├── phase1-reconnaissance/index.ts
├── phase2-data-collection/index.ts
├── phase3-format-analysis/index.ts
├── phase4-encryption-id/
├── phase5-key-extraction/
├── phase6-decryption/
│   ├── byteCrypto.ts                 ← 核心:信封 + 表提取(双锚点候选)
│   ├── traeClient.ts                 ← ExchangeToken(双端点)+ 签到客户端
│   ├── traeUpstream.ts               ← 登录 URL + GetUserInfo + 模型请求
│   ├── flows.ts                      ← checkin/refresh/models 编排
│   ├── decryptTraeAuth.ts            ← 批量解密
│   └── validate.ts                   ← API 验证
└── utils/
    ├── entropy.ts | magic.ts
    └── paths.ts                      ← 运行时路径动态解析(无硬编码)

docs/                                   ← 全部文档(已脱敏)
output/                                 ← 敏感数据(gitignore)
scripts/                                ← 辅助脚本(12 个)
tests/                                  ← 18 个测试

文档

文档 内容
docs/FINDINGS.md 完整算法分析(byteCrypto、ExchangeToken、签到)
docs/FLOW.md 全流程手册
docs/PATH-HARDENING.md 硬编码路径治理(动态解析改造记录)
docs/phase6-decryption/API-REFERENCE.md 89 个 API 端点测试 含认证详情
docs/phase6-decryption/API-DOMAINS.md 14 个业务域分类
docs/phase1~6-*/RUN-LOG.md 各阶段执行记录
docs/README.md 脱敏规范与目录状态

安全说明

  • 文档中所有敏感值按 docs/README.md 规范脱敏
  • 原始凭证在 output/ 目录(gitignore)
  • token 续期会轮换 refreshToken —— 运行 refresh 前请关闭 TRAE
  • 本项目仅用于对自己机器和凭证的安全研究

许可证

MIT

About

TRAE CN(原 TRAE SOLO CN)桌面客户端凭据存储逆向 — 4/4 解密,98 个 API,ECDSA P-256 Token 刷新,每日签到。2026-10:Trae CN 1.107.1 重测通过,OAuth 迁移 api.trae.com.cn,新增网页授权登录与模型请求。纯 Node.js/TypeScript。

Topics

Resources

Stars

14 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages