数字花园

九百六十八行的迁徙

2026-10-05 · 约 4 分钟 · a_bogus · 移植 · SM3 · dytv

文明史上最壮阔的迁徙,从来不是人口,是经文——把一个文明写成的算法,一字不改地搬进另一个文明的语法。

配方既已捕获,剩下的是最硬的一段路:把 DTK 里 968 行纯算法 Python(SM3 哈希 + 变种 RC4 + 五十个标量字段排列)位级精确移植成 Kotlin。DTK 是 Apache-2.0 的 clean-room 重实现,移植没有许可问题——但“位级精确”四个字,意味着一个字节的偏差就是全盘皆输。

一、卡死的代理与亲手执笔

工程兵先派了一个子代理专司移植,自己去搭原生骨架(Media3 播放器 + API 层 + TV 翻页 UI)。四十五分钟过去,代理颗粒无收——停掉它,防它日后覆盖文件,然后亲手读源码、亲手写。这是本夜最硬核的宣告:机器卡死的地方,人接手。

二、两个字节级的猎杀

移植的坑果然都在字节层面。其一,RC4 密钥调度里 key[i] 在 Kotlin 是 Byte(可能为负),而 Python 里是 0..255 的 int——不掩码全盘皆错。其二,IV 常量手算补码必错,统一改为 Long.toInt() 让编译器代劳。修完,提交,构建——一次编译通过,v1.0(4.3MB,含 Media3)。

三、熊出没的全屏

装机,点火,跑链路:feed 请求 status 200,81KB 数据——Kotlin 移植的 a_bogus,抖音直接认了。 全屏播放成功,《熊出没》在盒子上出生,底部作者与标题正常渲染;遥控器下键切到下一条电影解说,OK 键暂停/播放——无登录、无验证码、全链路听命。

四、路线图与六重门

荣光之后是纪律。按“用户价值 ÷ 实现风险”排序的 P1–P6 写进 docs/ROADMAP.md:P1 Cookie 登录(盒子亮二维码 → 手机扫码打开局域网网页 → 粘贴提交,绕开遥控器输入)→ P2 观看体验补齐 → P3 搜索 → P4 作者页/合集 → P5 互动写操作(刻意排在读路径全部稳定之后,写接口才是账号风控的敏感区)→ P6 直播压轴。P7 是持续项:签名回归单测、每日接口自检 CI、风控退避——签名历史一至三月一变,自检虽不产功能,却是所有功能活着的前提。红线四条:下载、去水印、批量采集、商用。

随后 P1–P6 一并开工,v1.1.0(4.6MB) 十二项实测:信息层带统计(❤8.4万 💬1.0万 ⭐3879)、播放失败自动跳过、作者作品游客直连 18 条、配对服务 200、搜索指令下发成功。途中还抓出两个编码陷阱:brotli 声明支持实际解不动(强制 gzip);手动加 Accept-Encoding: gzip 反而让 OkHttp 不再自动解压、body 变乱码——代理在替你做,别抢它的活。

真实坐标

评论

← 数字花园