• nolog-linuxdo

    首先安卓设备是 OnePlus 12, Android 16, OOS, KernelSU root. 手机端使用 Bettbox, 非透明代理, Win 使用 Clash Party 仅系统代理非 TUN

    - 已通过 HMA OSS 对 ChatGPT 进行了白名单隐藏

    - 然后 Play Integrity 三绿

    ChatGPT App 扫 Codex Desktop 的 Remote 二维码, 死活连不上, 提示 Pairing failed.

    同一个号, 同一台电脑, 换台没 root 的备用机秒连. 起初以为是 KSU, PI 没过, 或者是 Clash/Mihomo 的分流问题. 折腾一圈发现都不行.

    然后让 ChatGPT 搓了个只记录, 不修改结果的 LSPosed probe, 记录到了这些东西:```
    DEVICE_KEY_GENERATE phase=begin
    DEVICE_KEY_PROTECTION phase=begin

    DEVICE_KEY_PROTECTION
    status=throw
    java.security.ProviderException

    stack:
    AndroidKeyStoreSecretKeyFactorySpi#getKeyInfo
    AndroidKeyStoreKeyFactorySpi#engineGetKeySpec
    KeyFactory#getKeySpec
    ...

    PAIRING_ERROR
    httpStatus=<none>
    ``看逻辑, ChatGPT 在 Remote 配对时, 会先在本地生成一把设备密钥 (KeyPairGenerator.getInstance("EC", "AndroidKeyStore"), secp256r1), 然后调 KeyFactory.getKeySpec(privateKey, KeyInfo.class)` 校验这把 key 是不是硬件级别 (hardware-backed) 且不可导出的.

    结果我的手机在读取 KeyInfo 这里直接抛了 ProviderException.

    一开始怀疑是 TEE 被 root 搞坏了, 又让它专门写了个 Demo 测本地 AndroidKeyStore, 结果 insideSecureHardware=true, 完全正常.

    实际上上面的分析我也不懂, 是 GPT 自己分析的.

    最后发现是因为 TEESimulator 这个模块, ChatGPT 拒绝了 TEESimulator 模拟的 KeyStore.

    然后删掉了 /data/adb/tricky_store/target.txt 中的 com.openai.chatgpt

    删完强停重启 ChatGPT, 再扫码, 直接配对成功.

    ChatGPT 真是我的神.

    所以呢,

    - 跟 PI 三绿无关: 两绿 ChatGPT 的普通功能就能正常使用.

    - 跟 Root 检测无关: 启动时 Sentry 确实会扫 su 路径, 但那只是设备诊断报点 (当时 Sentry 拿到的是 rooted=false), 不是阻断 Remote 配对的原因.

    - 跟网络/代理无关: 报错发生在本地密钥生成阶段, httpStatus=<none>, 请求连手机都没出.

    主楼
  • nolog-linuxdo

    图片

    编辑有 bug 吗? 用的都是英文标点, 发出这部分就变成中文标点了 ^-^

    #1
  • Reno

    /data/adb/tricky_store/target.txt

    我也深受这个问题苦难,可是我的小米手机,没这个data/adb目录,整个系统也搜不到target.txt文件

    #2
  • nolog-linuxdo

    如果你没有 root 且没有安装帖子中提到的模块的话是没有 target.txt 这个文件的

    没有 root 连不上应该考虑排查一下网络问题

    #3
  • NB

    macos 的倒是挺正常的,就是链接慢

    #4
  • Reno

    有root,没安装TEESimulator模块。正常使用android achatgpt ,只有远程控制不行,开全局也不行。

    #5

发表回复

登录后回复