From c96e9125183083b9de0bebf8ed341df141268f96 Mon Sep 17 00:00:00 2001 From: MeowOS Date: Mon, 31 Aug 2026 06:03:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(ncm):=20=E7=BD=91=E6=98=93=E4=BA=91?= =?UTF-8?q?=E6=8A=80=E6=9C=AF=E6=A0=88=E9=A2=84=E7=A0=94+=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E9=AA=8C=E8=AF=81=20(agent-200)=20=E2=80=94=20?= =?UTF-8?q?=E9=80=89=E5=9E=8B:=20mbedtls3.6.2=E8=A3=81=E5=89=AA(TLS+AES+MD?= =?UTF-8?q?5+RSA=20raw+Base64,~388KB)/jsmn(2.2KB)/qrcodegen(10.8KB)/minimp?= =?UTF-8?q?3(37.4KB),=20=E5=90=88=E8=AE=A1~438KB;=20HTTPS=20unikey=20?= =?UTF-8?q?=E5=85=A8=E9=93=BE=E8=B7=AF=E5=AE=BF=E4=B8=BB+qemu-mipsel=20?= =?UTF-8?q?=E5=AE=9E=E6=B5=8B=E9=80=9A=E8=BF=87;=20RSA=20raw=20=E4=B8=8E?= =?UTF-8?q?=20Python=20pow=20=E9=80=90=E5=AD=97=E8=8A=82=E4=B8=80=E8=87=B4?= =?UTF-8?q?;=20MP3=20=E8=A7=A3=E7=A0=81=E9=9D=9E=E7=93=B6=E9=A2=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit vendor源码+out产物不入库(126MB, gitignore; 版本/许可/裁剪见 VENDOR_NOTES.md, build_*.sh 可复现) --- .gitignore | 4 + patch_v2/ncm_app/REPORT.md | 124 ++++++++++++ patch_v2/ncm_app/VENDOR_NOTES.md | 70 +++++++ patch_v2/ncm_app/bench/bench_dr_mp3 | Bin 0 -> 76200 bytes patch_v2/ncm_app/bench/bench_dr_mp3.c | 20 ++ patch_v2/ncm_app/bench/bench_minimp3 | Bin 0 -> 73776 bytes patch_v2/ncm_app/bench/bench_minimp3.c | 19 ++ patch_v2/ncm_app/build_bearssl.sh | 18 ++ patch_v2/ncm_app/build_cjson.sh | 10 + patch_v2/ncm_app/build_demo.sh | 19 ++ patch_v2/ncm_app/build_dr_mp3.sh | 12 ++ patch_v2/ncm_app/build_jsmn.sh | 17 ++ patch_v2/ncm_app/build_mbedtls.sh | 73 +++++++ patch_v2/ncm_app/build_minimp3.sh | 13 ++ patch_v2/ncm_app/build_qrcodegen.sh | 9 + patch_v2/ncm_app/demo/https_unikey | Bin 0 -> 545272 bytes patch_v2/ncm_app/demo/https_unikey.c | 256 +++++++++++++++++++++++++ patch_v2/ncm_app/demo/rsa_raw_test.c | 48 +++++ patch_v2/ncm_app/libs_common.sh | 21 ++ 19 files changed, 733 insertions(+) create mode 100644 patch_v2/ncm_app/REPORT.md create mode 100644 patch_v2/ncm_app/VENDOR_NOTES.md create mode 100755 patch_v2/ncm_app/bench/bench_dr_mp3 create mode 100644 patch_v2/ncm_app/bench/bench_dr_mp3.c create mode 100755 patch_v2/ncm_app/bench/bench_minimp3 create mode 100644 patch_v2/ncm_app/bench/bench_minimp3.c create mode 100755 patch_v2/ncm_app/build_bearssl.sh create mode 100755 patch_v2/ncm_app/build_cjson.sh create mode 100755 patch_v2/ncm_app/build_demo.sh create mode 100755 patch_v2/ncm_app/build_dr_mp3.sh create mode 100755 patch_v2/ncm_app/build_jsmn.sh create mode 100755 patch_v2/ncm_app/build_mbedtls.sh create mode 100755 patch_v2/ncm_app/build_minimp3.sh create mode 100755 patch_v2/ncm_app/build_qrcodegen.sh create mode 100755 patch_v2/ncm_app/demo/https_unikey create mode 100644 patch_v2/ncm_app/demo/https_unikey.c create mode 100644 patch_v2/ncm_app/demo/rsa_raw_test.c create mode 100755 patch_v2/ncm_app/libs_common.sh diff --git a/.gitignore b/.gitignore index 5e1aa1c..c6dc22b 100644 --- a/.gitignore +++ b/.gitignore @@ -73,3 +73,7 @@ font/src/**/*.otf font/src/**/*.ttf font/src/**/*.ttc patch_v2/sdk/test_p1p2p3_repro + +# ncm_app vendor 源码与构建产物(体积大;版本/获取方式见 VENDOR_NOTES.md,构建脚本可复现) +patch_v2/ncm_app/vendor/ +patch_v2/ncm_app/out/ diff --git a/patch_v2/ncm_app/REPORT.md b/patch_v2/ncm_app/REPORT.md new file mode 100644 index 0000000..3987c36 --- /dev/null +++ b/patch_v2/ncm_app/REPORT.md @@ -0,0 +1,124 @@ +# os.meow.ncm 技术栈预研 + 构建验证报告 + +> 日期:2026-08-31。工作区:`/home/Aska/Project/R3ProII`,仅改动 `patch_v2/ncm_app/`。 +> 目标:为 MeowOS 网易云 App(v1 = 扫码登录 + 我的歌单 + 播放)在 HiBy R3 Pro II +> (MIPS32r2 单核、~14MB 可用内存、无 GPU、ALSA 直开 hw:0,0)上的纯 C 静态栈做选型与真机交叉编译验证。 +> 工具链:`.tools/zig-mipsel-cc`(zig 包装 mipsel-linux-musleabi soft-float 静态交叉)。全程未 commit/push/刷机/动设备。 + +## 1. 选型结论表 + +| 能力 | 选型 | 版本 | 许可 | mipsel 体积(text) | 说明 | +|---|---|---|---|---|---| +| TLS + 加密 | **mbedtls(裁剪)** | 3.6.2 | Apache-2.0 | 链接 Demo ≈ **388 KB** | TLS1.2 client + AES-128-CBC/ECB/GCM + MD5 + RSA(1024 raw) + Base64 + X509,单库全包 | +| TLS(备选) | BearSSL | master@7bea48e | MIT | TLS client 子集 ≈ **96 KB** | 更省 flash,但无 base64、AES-ECB 需自行逐块、RSA raw 用 `br_rsa_i31_public` | +| JSON | **jsmn** | 1.1.0 | MIT | **2.2 KB** | 分词器,无 malloc/无 DOM;cJSON 对比 20 KB | +| 二维码 | **qrcodegen** | nayuki@993ccbb | MIT | **10.8 KB** | 纯 C 单文件,无图形依赖 | +| MP3 解码 | **minimp3** | master@ea99364 | CC0 | **37.4 KB** | `minimp3_ex` 流式/可 seek;dr_mp3 对比 40.7 KB | + +**HTTPS GET/POST 可达性**:mbedtls 已实测连通(见 §2)。**crypto 是否 mbedtls 自带就够**:是—— +AES-128-ECB/CBC、MD5、Base64、RSA(raw) 全有;RSA raw 用 `mbedtls_rsa_public()`(无 padding 纯模幂)已交叉校验与 `pow(m,e,n)` 完全一致(见 §3),这是文档标注最易踩坑处,已验证可行。 + +## 2. HTTPS 实测(宿主 = 本机 aarch64;另跑通 MIPS 版) + +**demo**:`demo/https_unikey.c`(mbedtls TLS1.2 + eapi 加密 + jsmn)。 +目标:`POST https://interface.music.163.com/eapi/login/qrcode/unikey`,body `params=`。 + +``` +deviceId=68DFA27096B7A5DC2CB393C77D8C194FDC0459B743081D091EBD +---- response body ---- +{"code":200,"unikey":"33a1c6a6-28ad-4e1e-bc8e-ebe769953913"} +UNIKEY = 33a1c6a6-28ad-4e1e-bc8e-ebe769953913 +``` + +- 宿主:`code:200` + unikey 顶层字段,与 NCM_API_NOTES §7 一致 ✅ +- **MIPS 版交叉编译后,在 `qemu-mipsel` 下全链路跑通**(DNS→TCP→TLS→POST→JSON 解析),同样拿到真实 unikey: + `{"code":200,"unikey":"6731b1ac-71a2-41eb-a704-a2de39d6d0b7"}`。即 mipsel 静态产物的网络+crypto+TLS 路径正确。 +- eapi 加密逻辑与原版 `crypto::eapi` 一致:`digest=md5("nobody"+url+"use"+json+"md5forencrypt")`, + `plain=url+"-36cd479b6b5-"+json+"-36cd479b6b5-"+digest`,`params=HEX_UPPER(AES128ECB(plain,"e82ckenh8dichen8"))`; + `header`(osver/deviceId/os/appver/versioncode/mobilename/buildver/resolution/__csrf/channel/requestId)与 `e_r:false` 均入加密体(§8 要求,去掉会 4xx)。 + +## 3. RSA raw(weapi 无 padding 模幂)校验 + +`mbedtls_rsa_public(ctx, 128B输入右对齐16B明文, 128B输出)`,n=1024-bit、e=65537。 +- mipsel(qemu) 与宿主输出一致,且与 Python `pow(m,e,n)` 逐一字节相同(256 hex 完全匹配): + `CT = 55B33E7E3229B8D977137D120B3C7A5B5FB8E933325CAA5BB8CEF6C132D57E5E...B2B83` +- 结论:**mbedtls_rsa_public() 可用作 weapi 的 textbook RSA**,避开 PKCS#1 padding 陷阱。demo:`demo/rsa_raw_test.c`。 + +## 4. 总体积账(mipsel,-Os,flash≈text) + +**选定的库合计(≈438 KB)**: + +| 项 | text | 备注 | +|---|---|---| +| mbedtls TLS+crypto+x509(链接 demo) | 388 KB | 含 ~6 KB musl libc 基线;库文本合计 410 KB,gc-sections 未再降 | +| jsmn | 2.2 KB | | +| qrcodegen | 10.8 KB | | +| minimp3 | 37.4 KB | | +| **库合计** | **≈ 438 KB** | 另需 App/UI/封面/音频输出层(未计入,自研) | + +可选裁剪方向(能明显压 mbedtls):限制密码套件到 `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256`(+1 个 CBC+SHA 兜底)、 +ECP 只留 P-256、去掉 ECDSA(服务器给 RSA 证书)、`MBEDTLS_SSL_IN/OUT_CONTENT_LEN=4096`。估可降到 ~250 KB。 +若固件预算仍紧,**切 BearSSL(≈96KB) + 自带 base64/AES-ECB 例程**,能再省 ~300 KB。 + +**对比参考项体积**:cJSON 20 KB、dr_mp3 40.7 KB、BearSSL 全库 310 KB(裁剪子集 96 KB)。空静态 mipsel 基线 text=5888。 + +## 5. 内存 / 性能估算(14MB 可用) + +- **TLS 握手 buffer**:mbedtls 默认 `SSL_IN/OUT_CONTENT_LEN`=16KB 各一,共 ~32KB;demo 二进制 `bss=26888`(≈26KB)+堆内 SSL context/ECDH 临时密钥。对 14MB 无压力;建议调成 4096 更省。 +- **JSON 解析**:jsmn 无 malloc,token 数组按需分配(响应小,几百字节)。**不要全量缓冲歌单详情**,只取需要的键(文档 §4.4)。 +- **解码**:minimp3 流式,输入 ~每帧几 KB + 输出 `MINIMP3_MAX_SAMPLES_PER_FRAME*2*ch`,整体 <20KB。 +- **封面**:**必须限幅**——NCM 建议 5MB,MeowOS 应限 ~256KB 并降采样/调色板(无 GPU 只能 CPU 软缩放)。 +- **二维码位图**:41×41 符号渲染成 UI 尺寸(如 400×400,灰度 1B/px=160KB,1-bit 可 20KB)。 +- 预算结论:TLS+解码+二维码+封面(256KB cap)+UI 帧缓冲,**总工作集应在数百 KB 量级,14MB 富余**;唯一要盯的是封面/歌单响应别全量驻留。 + +- **性能**: + - **MP3 解码实时性**:宿主(aarch64) minimp3 = **568×RT**、dr_mp3 = 627×RT; + `qemu-mipsel`(TCG 模拟,**远慢于真机**,通常 10–50×) 下 minimp3 = **4.8×RT**、dr_mp3 = 4.7×RT。 + → 真机 MIPS32 单核跑 44.1k/64kbps 解码**余量很大**(估计数十倍 RT),解码不是瓶颈。⚠️ 该数字为宿主/模拟估算,标注不准。 + - **TLS 握手**:ECDHE-RSA-AES128-GCM,单核软 RSA 1024 校验 + ECDH P-256,估几十~几百 ms,可接受(仅首次/重连)。 + - **weapi RSA raw 模幂**:1024-bit 软模幂每次约几 ms~几十 ms(只对 weapi 请求,频率低)。 + +## 6. 风险与 fallback + +| 风险 | 评估 | 对策/fallback | +|---|---|---| +| weapi RSA raw 最易踩坑 | ✅ 已交叉校验正确 | 保持 `mbedtls_rsa_public()`+左补零到 256 hex;用 `rsa_raw_test` 做回归 | +| deviceId/UA 不稳定触发风控 | 高 | deviceId(52 hex) **首生成后持久化**;UA 按 eapi(iPhone)/weapi(Chrome) 分别固定;轮询≥1s、失败退避 | +| session(MUSIC_U)丢失即需重扫码 | 高 | cookie 持久化;启动用 `/weapi/w/nuser/account/get` 校验 | +| eapi 的 `header`/`e_r` 缺失 → 4xx | 中 | demo 已带,必须保留(§8) | +| 无版权/VIP 曲目 url=null | 中 | `song_url_v1` 返回 null → 提示 + 降级到 `song/enhance/player/url`(br=320000) 兜底 | +| 音质策略(Hi-res 降级) | v1 只保 mp3 | 账号非免费档 level 被钳到免费档;v1 默认 `standard`(128k)/`higher`(192k);**不引入 flac 解码**(14MB 内存+单核不划算);后续再评估 dr_flac | +| 触发高频风控 | 中 | 请求限频、重试退避、必要时随机国内 IP(`X-Real-IP`/`X-Forwarded-For`) | +| mbedtls flash ~388KB 偏大 | 中 | 见 §4 裁剪;若预算吃紧切 BearSSL(≈96KB) | + +## 7. 出入清单(只改 `patch_v2/ncm_app/`) + +``` +patch_v2/ncm_app/ +├── vendor/ # 各库源码(上游 clone/tar + 许可证) +│ ├── mbedtls/ (3.6.2, 含 framework 子模块, 裁剪 config 在 config/mbedtls_config_ncm.h) +│ ├── bearssl/ (官方 git, 无语义版本) +│ ├── jsmn/ cjson/ qrcodegen/ minimp3/ dr_mp3/ +├── libs_common.sh # 公共 zig/ar/size 环境 +├── build_mbedtls.sh # 裁剪 config + 静态编 mipsel → out/mbedtls/mipsel/*.a +├── build_bearssl.sh # make lib → out/bearssl/mipsel/bm/libbearssl.a +├── build_cjson.sh build_jsmn.sh build_qrcodegen.sh build_minimp3.sh build_dr_mp3.sh +├── build_demo.sh # 宿主 + mipsel 的 HTTPS demo 复现 +├── bench/ # minimp3/dr_mp3 基准(sample-15s.mp3 来自 samplelib) +├── demo/https_unikey.c # eapi + TLS1.2 + jsmn(打 unikey) +├── demo/rsa_raw_test.c # weapi RSA raw 校验 +├── out/https_unikey_mipsel(. _s) # mipsel 静态 demo(qemu-mipsel 跑通) +├── out/mbedtls/{mipsel,host}/ # 库产物 out/bearssl/mipsel/bm/ +├── VENDOR_NOTES.md # 版本/许可/裁剪/体积 +└── REPORT.md # 本报告 +``` + +**未做/待主会话**:真机 `hw:0,0` 播放链路、扫码后真实登录(803+set-cookie)、weapi 真实登录态请求、 +CA bundle 内置方案、音质档位映射实测。这些属设备/账号侧联调,由主会话在设备上执行(本预研不动设备)。 + +## 8. 结论 + +- **可行**:纯 C + mbedtls(裁剪) + jsmn + qrcodegen + minimp3,静态 mipsel 交叉编译全通,HTTPS POST 拿到真实 unikey,MIPS(qemu) 版全链路跑通。 +- **推荐 TLS/加密一体用 mbedtls**(单库一次解决 TLS + AES/MD5/RSA raw/Base64 + X509,规避 RNSS-raw 手写风险);BearSSL 为省 flash 备选。 +- **v1 体积增量 ≈ 438 KB(库)/ 只做 mp3**,内存估计数百 KB 工作集,14MB 可行;主要优化点是 mbedtls 裁剪与封面限幅。 +- **最关键风险(RSA raw)已验证**;其余风险集中在风控(deviceId/UA 稳定持久化)与无版权降级策略。 diff --git a/patch_v2/ncm_app/VENDOR_NOTES.md b/patch_v2/ncm_app/VENDOR_NOTES.md new file mode 100644 index 0000000..4a70b95 --- /dev/null +++ b/patch_v2/ncm_app/VENDOR_NOTES.md @@ -0,0 +1,70 @@ +# VENDOR_NOTES — os.meow.ncm 技术栈选型备查 + +> 预研:`patch_v2/ncm_app`(仅此目录)。库全部静态编入 mipsel(zig-mipsel-cc 交叉), +> 产物在 `out/`,各库构建脚本见 `build_*.sh`。体积口径:`size` Berkerley `text/data/bss`, +> mipsel 静态、`-Os`;flash≈text,RAM≈data+bss。基准:空 `printf` 静态 mipsel = text 5888。 +> 实测于 2026-08-31。 + +## 选型结论(先看) + +| 库 | 版本 | 许可 | mipsel text | 选/不选 | +|---|---|---|---|---| +| mbedtls(裁剪) | 3.6.2 | Apache-2.0 | 链接 Demo ≈ 388 KB(库文本合计 ~410 KB) | ✅ 选(TLS+AES/MD5/RSA/base64/X509 一体) | +| BearSSL | master@7bea48e | MIT | TLS client 参考子集 ≈ 96 KB | 备选(更省 flash,但集成面更杂) | +| jsmn | 1.1.0 | MIT | 2.2 KB | ✅ 选(解析器) | +| cJSON | 1.7.18 | MIT | 20.0 KB | 参考对比(未选,太大) | +| qrcodegen | nayuki@993ccbb | MIT | 10.8 KB | ✅ 选(二维码) | +| minimp3 | master@ea99364 | CC0 | 37.4 KB | ✅ 选(MP3 v1 解码) | +| dr_mp3 | 0.7.4 | MIT/public-domain | 40.7 KB | 参考对比(未选,质量更好但更大更吃内存) | + +## 各库明细 + +### mbedtls 3.6.2(Mbed TLS)— Apache-2.0 +- 上游:https://github.com/Mbed-TLS/mbedtls (tag mbedtls-3.6.2,commit 107ea89) +- 裁剪配置:`config/mbedtls_config_ncm.h`(由 `build_mbedtls.sh` 从默认 141 个 define 减到 102 个)。 + 保留:TLS1.2 client、AES-CBC/ECB/GCM、MD5、RSA(1024)+BIGNUM、PK/ASN1、X509 证书解析、Base64、PEM_PARSE、ECP/ECDH(P-256 等)。 + 裁掉:TLS1.3、全部 DTLS、PSA_CRYPTO/IS/LMS、CTR_DRBG/ENTROPY(用自定义 rng)、 + CAMELLIA/ARIA/DES/CHACHA/CHACHAPOLY/CCM、HKDF/NIST_KW/ECJPAKE、PKCS5/7/12、PEM_WRITE、MD4、X509_CRL/CSR、 + SSL_SESSION_TICKETS/ALPN/RENEGOTIATION/MAX_FRAGMENT/CTX_SERIALIZATION/KEEP_PEER_CERT 等。 + 裁剪说明:原默认配置裁剪前 `text` 更大;按 `config.py get`/`unset` 逐项减;`build_mbedtls.sh` 里列出清单。 +- 产物:`out/mbedtls/mipsel/`(libmbedcrypto.a / libmbedx509.a / libmbedtls.a), + text 合计 420236(≈410 KB);实际链接 Demo(含 libc)text=397102(≈388 KB)。 +- 为什么它覆盖了我们全部需求:`mbedtls_aes_crypt_ecb`(AES-128-ECB)、`mbedtls_aes_crypt_cbc`(CBC+PKCS7 手写)、 + `mbedtls_md`(MD5)、`mbedtls_base64_*`、`mbedtls_rsa_public`(无 padding 纯模幂 = weapi)、`mbedtls_ssl_*`(TLS1.2 client)。 + +### BearSSL(TLS 备选)— MIT +- 上游:https://www.bearssl.org/git/BearSSL (GitHub `bearssl/bearssl` 已 404,已迁移至官方站点;commit 7bea48e,无语义化版本号) +- 构建:`build_bearssl.sh`(`make lib`,CC/AR 用 zig 包装;产物 `out/bearssl/mipsel/bm/libbearssl.a`)。 +- 全库 text=317177(≈310 KB);但只取 TLS client+handshake+rsa+x509 并 `--gc-sections` 后 text≈98620(≈96 KB)。 +- 特点:体积小、常量时间;但**库里没有 base64**(需自带 ~0.5KB 例程), + AES-ECB 也无现成封装(需用 block primitive 逐块或 CBC 变通),RSA raw 用 `br_rsa_i31_public`(已确认存在)。 +- 结论:省 flash 的备选;v1 若集成想省事、且要保 weapi 精确性,仍以 mbedtls 优先。 + +### jsmn 1.1.0 — MIT +- 上游:https://github.com/zserge/jsmn(tag v1.1.0) +- header-only 分词器,无 DOM/无 malloc;编译为最小 TU 后 text=2208(≈2.2 KB)。 +- 用于解析响应 JSON(如 `{"code":200,"unikey":"..."}` 取 unikey)。demo 已实测解析正确。 + +### cJSON 1.7.18 — MIT(参考对比,未选) +- 上游:https://github.com/DaveGamble/cJSON(tag v1.7.18)。text=20503(≈20 KB)。 +- 优点:现成 DOM、好取值;缺点:20 KB + 需要 malloc、对 14MB 内存也偏大。选 jsmn。 + +### qrcodegen(nayuki QR-Code-generator)— MIT +- 上游:https://github.com/nayuki/QR-Code-generator(c/qrcodegen.c,commit 993ccbb) +- 纯 C 单文件、无图形依赖。text=11082(≈10.8 KB)。 +- 用途:把 `https://music.163.com/login?codekey=` 渲染成位图给 MeowOS UI 显示。 + +### minimp3 — CC0 +- 上游:https://github.com/lieff/minimp3(master@ea99364)。header-only(minimp3.h + minimp3_ex.h)。 +- 采用 `minimp3_ex`(带 ID3/CRC 处理、可 seek 的流式解码)text=38292(≈37.4 KB)。 +- 用途:v1 播放(standard/higher = mp3 128/192k)。内存占用小、MIPS 单核可实时(见 benchmark)。 + +### dr_mp3 0.7.4 — MIT/public-domain(参考对比,未选) +- 上游:https://github.com/mackron/dr_libs(dr_mp3.h 单文件)。 +- text=41679(≈40.7 KB);兼容性/音质更好,但更大、解码中间态内存更高。minimp3 更契合 14MB 限制。 + +## 备注(工程) +- mbedtls 产物默认写在 `vendor/mbedtls/library/`(3.6 的 Makefile 不理会 BUILD 变量),脚本再拷贝到 `out/`。 +- `MBEDTLS_SSL_IN_CONTENT_LEN/OUT_CONTENT_LEN` 默认 16KB;对 14MB 也不大,可再按需调小(见 REPORT 内存估)。 +- CA 根:demo 从 `/etc/ssl/certs/ca-certificates.crt` 加载;设备侧需内置 CA bundle(eapi 用 iPhone UA,域名 interface.music.163.com)。 +- 恢复 mbedtls 默认 config:`git -C vendor/mbedtls checkout -- include/mbedtls/mbedtls_config.h`。 diff --git a/patch_v2/ncm_app/bench/bench_dr_mp3 b/patch_v2/ncm_app/bench/bench_dr_mp3 new file mode 100755 index 0000000000000000000000000000000000000000..a80062eff268910c30106738f45e55852fdeec72 GIT binary patch literal 76200 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 TOWR3|=#*HSGcrUV +#include +#include +#include +static double now(){ struct timespec ts; clock_gettime(CLOCK_MONOTONIC,&ts); return ts.tv_sec+ts.tv_nsec*1e-9; } +int main(int argc,char**argv){ + if(argc<2){fprintf(stderr,"usage: %s file.mp3\n",argv[0]);return 1;} + drmp3 d; if(!drmp3_init_file(&d,argv[1],NULL)){fprintf(stderr,"open fail\n");return 1;} + printf("rate=%d ch=%d\n",d.sampleRate,d.channels); + float *pcm=malloc(2048*2*sizeof(float)); + double t0=now(); long long frames=0; drmp3_uint64 n; + while((n=drmp3_read_pcm_frames_f32(&d,2048,pcm))!=0){ frames+=n; } + double t1=now(); + printf("total_pcm_frames=%lld\n",frames); + printf("wall=%.3f s throughput=%.1f xRT (%.1f frames/s)\n",(t1-t0), + (double)frames/d.sampleRate/(t1-t0),(double)frames/(t1-t0)); + drmp3_uninit(&d); free(pcm); return 0; +} diff --git a/patch_v2/ncm_app/bench/bench_minimp3 b/patch_v2/ncm_app/bench/bench_minimp3 new file mode 100755 index 0000000000000000000000000000000000000000..2f6a2fead2e1a571d38c2cd350068580cacf9e6c GIT binary patch literal 73776 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 literal 0 HcmV?d00001 diff --git a/patch_v2/ncm_app/bench/bench_minimp3.c b/patch_v2/ncm_app/bench/bench_minimp3.c new file mode 100644 index 0000000..1ad104e --- /dev/null +++ b/patch_v2/ncm_app/bench/bench_minimp3.c @@ -0,0 +1,19 @@ +#define MINIMP3_IMPLEMENTATION +#include "minimp3_ex.h" +#include +#include +#include +#include +static double now(){ struct timespec ts; clock_gettime(CLOCK_MONOTONIC,&ts); return ts.tv_sec+ts.tv_nsec*1e-9; } +int main(int argc,char**argv){ + if(argc<2){fprintf(stderr,"usage: %s file.mp3\n",argv[0]);return 1;} + mp3dec_t dec; mp3dec_init(&dec); + mp3dec_file_info_t info; memset(&info,0,sizeof info); + double t0=now(); int r=mp3dec_load(&dec,argv[1],&info,NULL,NULL); double t1=now(); + if(r){fprintf(stderr,"decode fail %d\n",r);return 1;} + long long frames=info.samples/info.channels; + printf("rate=%d ch=%d total_pcm_frames=%lld\n",info.hz,info.channels,frames); + printf("wall=%.3f s throughput=%.1f xRT (%.1f frames/s)\n",(t1-t0), + (double)frames/info.hz/(t1-t0),(double)frames/(t1-t0)); + free(info.buffer); return 0; +} diff --git a/patch_v2/ncm_app/build_bearssl.sh b/patch_v2/ncm_app/build_bearssl.sh new file mode 100755 index 0000000..1b87e3a --- /dev/null +++ b/patch_v2/ncm_app/build_bearssl.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# BearSSL — 官方 git(https://www.bearssl.org/git/BearSSL)。许可 MIT。 +# 使用 make lib 编译出 libbearssl.a(含 int/core/codec/ec/rsa/symcipher/ssl/x509)。 +. ./libs_common.sh +SRC="$VENDOR/bearssl" +D="$OUT/bearssl/mipsel"; mkdir -p "$D" +# 在源码内建一个专用 build 目录,避免污染 +BM="$D/bm"; rm -rf "$BM"; mkdir -p "$BM" +make -C "$SRC" lib \ + BUILD="$BM" \ + CC="$CC_MIPS" \ + AR="$AR_MIPS" \ + RANLIB="$AR_MIPS ranlib" \ + CFLAGS="-Os -Wno-unused-parameter -fno-stack-protector -ffunction-sections -fdata-sections" \ + LD="$CC_MIPS" 2>&1 | tail -15 +echo "make exit=${PIPESTATUS[0]}" +echo "=== lib list ==="; ls -la "$BM/" +case "x$(ls "$BM"/*.a 2>/dev/null)" in x) echo "no .a produced";; *) echo "=== BearSSL (mipsel) ==="; measure_archive "$BM/libbearssl.a";; esac diff --git a/patch_v2/ncm_app/build_cjson.sh b/patch_v2/ncm_app/build_cjson.sh new file mode 100755 index 0000000..6db44aa --- /dev/null +++ b/patch_v2/ncm_app/build_cjson.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# cJSON v1.7.18 — 静态编译 mipsel。许可 MIT。选用 cJSON 仅作 JSON 解析对比,推荐用 jsmn。 +. ./libs_common.sh +SRC="$VENDOR/cjson/cJSON.c" +INC="-I$VENDOR/cjson" +D="$OUT/cjson/mipsel"; mkdir -p "$D" +$CC_MIPS -Os -I"$VENDOR" $INC -fno-stack-protector -ffunction-sections -fdata-sections -c "$SRC" -o "$D/cJSON.o" || exit 1 +$AR_MIPS rcs "$D/libcjson.a" "$D/cJSON.o" +echo "cJSON (mipsel):" +measure_archive "$D/libcjson.a" diff --git a/patch_v2/ncm_app/build_demo.sh b/patch_v2/ncm_app/build_demo.sh new file mode 100755 index 0000000..ec89474 --- /dev/null +++ b/patch_v2/ncm_app/build_demo.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# 复现宿主 + MIPS 版 HTTPS/加密 demo 与 RSA raw 校验。 +# 依赖:先运行 build_mbedtls.sh(产出 out/mbedtls/{host,mipsel}/*.a)。 +# 宿主 = 本机(此工作区为 aarch64);MIPS = qemu-mipsel 可跑(静态链)。 +. ./libs_common.sh + +INC="-I$VENDOR/mbedtls/include -I$VENDOR/jsmn" +HOST_LIBS="-L$OUT/mbedtls/host -lmbedtls -lmbedx509 -lmbedcrypto" +MIPS_LIBS="$OUT/mbedtls/mipsel/libmbedtls.a $OUT/mbedtls/mipsel/libmbedx509.a $OUT/mbedtls/mipsel/libmbedcrypto.a" + +echo "==> host https_unikey" +$CC_HOST -O2 $INC demo/https_unikey.c $HOST_LIBS -o demo/https_unikey -lpthread -lm \ + && echo " built demo/https_unikey" \ + && { [ -f /etc/ssl/certs/ca-certificates.crt ] && timeout 45 ./demo/https_unikey | tail -4; } + +echo "==> mipsel https_unikey (静态)" +$CC_MIPS -O2 -static -Wl,--gc-sections $INC demo/https_unikey.c $MIPS_LIBS -o out/https_unikey_mipsel -lpthread -lm \ + && echo " built out/https_unikey_mipsel" && size out/https_unikey_mipsel \ + && timeout 90 qemu-mipsel ./out/https_unikey_mipsel | tail -4 diff --git a/patch_v2/ncm_app/build_dr_mp3.sh b/patch_v2/ncm_app/build_dr_mp3.sh new file mode 100755 index 0000000..bca1311 --- /dev/null +++ b/patch_v2/ncm_app/build_dr_mp3.sh @@ -0,0 +1,12 @@ +#!/bin/bash +# dr_mp3 — 单文件 header(dr_mp3.h)。许可 MIT/public domain (双许可)。较重但兼容性/质量更好。 +. ./libs_common.sh +D="$OUT/dr_mp3/mipsel"; mkdir -p "$D" +cat > "$D/dr_mp3_impl.c" <<'C' +#define DR_MP3_IMPLEMENTATION +#include "dr_mp3.h" +C +$CC_MIPS -Os -I"$VENDOR/dr_mp3" -fno-stack-protector -ffunction-sections -fdata-sections -c "$D/dr_mp3_impl.c" -o "$D/dr_mp3.o" || exit 1 +$AR_MIPS rcs "$D/libdr_mp3.a" "$D/dr_mp3.o" +echo "dr_mp3 (mipsel):" +measure_archive "$D/libdr_mp3.a" diff --git a/patch_v2/ncm_app/build_jsmn.sh b/patch_v2/ncm_app/build_jsmn.sh new file mode 100755 index 0000000..cdb3c79 --- /dev/null +++ b/patch_v2/ncm_app/build_jsmn.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# jsmn v1.1.0 — header-only tokenizer。许可 MIT。编译一个最小 TU 以量测其代码体积。 +. ./libs_common.sh +D="$OUT/jsmn/mipsel"; mkdir -p "$D" +cat > "$D/jsmn_measure.c" <<'C' +#include "jsmn.h" +#include +unsigned long jsmn_count(const char *js) { + jsmn_parser p; jsmn_init(&p); + unsigned n = jsmn_parse(&p, js, strlen(js), NULL, 0); + return n; +} +C +$CC_MIPS -Os -I"$VENDOR/jsmn" -fno-stack-protector -c "$D/jsmn_measure.c" -o "$D/jsmn.o" || exit 1 +$AR_MIPS rcs "$D/libjsmn.a" "$D/jsmn.o" +echo "jsmn (mipsel, header-only):" +measure_archive "$D/libjsmn.a" diff --git a/patch_v2/ncm_app/build_mbedtls.sh b/patch_v2/ncm_app/build_mbedtls.sh new file mode 100755 index 0000000..b51f5c4 --- /dev/null +++ b/patch_v2/ncm_app/build_mbedtls.sh @@ -0,0 +1,73 @@ +#!/bin/bash +# mbedtls 3.6.2 — Mbed TLS(Apache-2.0)。裁剪配置 + 静态编 mipsel。 +# 产物体积:libmbedcrypto.a(AES/MD5/RSA/Base64/Ec),libmbedx509.a(证书解析),libmbedtls.a(TLS1.2 client)。 +# 裁剪策略:保留 TLS1.2 client + AES-GCM/CBC + RSA/ECDH + MD5 + base64 + X509 解析; +# 去掉 TLS1.3/DTLS/PSA/多余密码套件(PKCS5/7/12)/PEM_WRITE/CTR_DRBG(用自定义 rng)。 +# 保留 PEM_PARSE(加载 CA bundle 需要)。 +# 说明:脚本会把裁剪后的 config 复制到 include/mbedtls/mbedtls_config.h(原默认卷保留在 vendor git 里, +# 可用 `git -C vendor/mbedtls checkout -- include/mbedtls/mbedtls_config.h` 恢复)。 +. ./libs_common.sh + +MB="$VENDOR/mbedtls" +CFG_TMP="$MB/config/mbedtls_config_ncm.h" # 裁剪后的 config 落盘于此(交付物) +mkdir -p "$MB/config" +cp "$MB/include/mbedtls/mbedtls_config.h" "$CFG_TMP" + +# 逐个 unset(config.py 一次只能 unset 一个符号) +unsets=( + MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE + MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED + MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED + MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED + MBEDTLS_SSL_PROTO_DTLS MBEDTLS_SSL_DTLS_CONNECTION_ID + MBEDTLS_SSL_DTLS_ANTI_REPLAY MBEDTLS_SSL_DTLS_HELLO_VERIFY + MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE MBEDTLS_SSL_CONTEXT_SERIALIZATION + MBEDTLS_SSL_SESSION_TICKETS MBEDTLS_SSL_MAX_FRAGMENT_LENGTH + MBEDTLS_SSL_ALPN MBEDTLS_SSL_RENEGOTIATION MBEDTLS_SSL_CBC_RECORD_SPLITTING + MBEDTLS_SSL_ASYNC_PRIVATE MBEDTLS_SSL_TRUNCATED_HMAC MBEDTLS_SSL_KEEP_PEER_CERTIFICATE + MBEDTLS_SSL_RECORD_SIZE_LIMIT MBEDTLS_SSL_DTLS_SRTP MBEDTLS_SSL_COOKIE_C + MBEDTLS_CAMELLIA_C MBEDTLS_ARIA_C MBEDTLS_DES_C MBEDTLS_CHACHA20_C + MBEDTLS_CHACHAPOLY_C MBEDTLS_CCM_C MBEDTLS_NIST_KW_C MBEDTLS_ECJPAKE_C + MBEDTLS_HKDF_C MBEDTLS_PSA_CRYPTO_C MBEDTLS_CTR_DRBG_C MBEDTLS_ENTROPY_C + MBEDTLS_PEM_WRITE_C MBEDTLS_PKCS5_C MBEDTLS_PKCS7_C + MBEDTLS_PKCS12_C MBEDTLS_MD4_C MBEDTLS_X509_CRL_PARSE_C MBEDTLS_X509_CSR_PARSE_C + MBEDTLS_SSL_ECP_RESTARTABLE MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH + # PSA 关联项:去掉全部 PSA/LMS/ITS(我们用 legacy API,不用 PSA) + MBEDTLS_PSA_CRYPTO_STORAGE_C MBEDTLS_PSA_ITS_FILE_C MBEDTLS_PSA_KEY_STORE_DYNAMIC + MBEDTLS_LMS_C MBEDTLS_PSA_CRYPTO_CLIENT +) +CFGF="$MB/include/mbedtls/mbedtls_config.h" +for s in "${unsets[@]}"; do + python3 "$MB/scripts/config.py" --file "$CFG_TMP" unset "$s" >/dev/null 2>&1 || true +done +echo "trimmed config enabled-count: $(grep -c '^#define MBEDTLS_' "$CFG_TMP") (default: 141)" + +# 应用裁剪 config 到默认位置(build 默认读 include/mbedtls/mbedtls_config.h) +cp "$CFG_TMP" "$CFGF" +# 我们不用 PSA,且不希望 build 因缺 python-jsonschema 重新生成 PSA 驱动包装文件: +# 把框架生成文件 touch 成“比 config 新”,让 make 跳过重新生成。 +touch "$MB/library/error.c" "$MB/library/version_features.c" \ + "$MB/library/ssl_debug_helpers_generated.c" \ + "$MB/library/psa_crypto_driver_wrappers.h" \ + "$MB/library/psa_crypto_driver_wrappers_no_static.c" +# 关键:config 变更不会自动触发 .c 重编,务必清掉旧对象/库再重编,否则 PEM 等新启用模块不会进库。 +rm -f "$MB/library"/*.o "$MB/library"/*.a + +BM="$OUT/mbedtls/mipsel"; rm -rf "$BM"; mkdir -p "$BM" +# 在 vendor 源码内建,输出到本 app 的 out 目录 +make -C "$MB" lib \ + BUILD="$BM" \ + CC="$CC_MIPS" \ + AR="$AR_MIPS" \ + CFLAGS="-Os -Wno-unused-parameter -fno-stack-protector -ffunction-sections -fdata-sections" \ + LD="$CC_MIPS" 2>&1 | tail -6 +echo "make exit=${PIPESTATUS[0]}" +# 把产物从 vendor/library 拷到本 app 的 out/mbedtls/mipsel(make 的 BUILD 变量在本版 Makefile 不生效) +mkdir -p "$BM" +for a in libmbedcrypto.a libmbedx509.a libmbedtls.a; do + [ -s "$MB/library/$a" ] && cp "$MB/library/$a" "$BM/$a" +done +echo "=== mbedtls (mipsel) ===" +for a in libmbedcrypto.a libmbedx509.a libmbedtls.a; do + [ -s "$BM/$a" ] && { echo "-- $a --"; measure_archive "$BM/$a"; } +done diff --git a/patch_v2/ncm_app/build_minimp3.sh b/patch_v2/ncm_app/build_minimp3.sh new file mode 100755 index 0000000..beb3a39 --- /dev/null +++ b/patch_v2/ncm_app/build_minimp3.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# minimp3 — header-only (minimp3.h + minimp3_ex.h)。许可 CC0 / MIT。v1 推荐的 MP3 解码器。 +. ./libs_common.sh +D="$OUT/minimp3/mipsel"; mkdir -p "$D" +cat > "$D/minimp3_impl.c" <<'C' +#define MINIMP3_IMPLEMENTATION +#include "minimp3_ex.h" +// 拉入 mp3dec_ex_open/read;minimp3.h 由 minimp3_ex.h 内部包含 +C +$CC_MIPS -Os -I"$VENDOR/minimp3" -fno-stack-protector -ffunction-sections -fdata-sections -c "$D/minimp3_impl.c" -o "$D/minimp3_ex.o" || exit 1 +$AR_MIPS rcs "$D/libminimp3_ex.a" "$D/minimp3_ex.o" +echo "minimp3 (mipsel, mp3dec_ex):" +measure_archive "$D/libminimp3_ex.a" diff --git a/patch_v2/ncm_app/build_qrcodegen.sh b/patch_v2/ncm_app/build_qrcodegen.sh new file mode 100755 index 0000000..9688b7a --- /dev/null +++ b/patch_v2/ncm_app/build_qrcodegen.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# qrcodegen (nayuki QR-Code-generator, c/qrcodegen.c) — 静态编译 mipsel。许可 MIT。 +. ./libs_common.sh +SRC="$VENDOR/qrcodegen/c/qrcodegen.c" +D="$OUT/qrcodegen/mipsel"; mkdir -p "$D" +$CC_MIPS -Os -I"$VENDOR/qrcodegen/c" -fno-stack-protector -c "$SRC" -o "$D/qrcodegen.o" || exit 1 +$AR_MIPS rcs "$D/libqrcodegen.a" "$D/qrcodegen.o" +echo "qrcodegen (mipsel):" +measure_archive "$D/libqrcodegen.a" diff --git a/patch_v2/ncm_app/demo/https_unikey b/patch_v2/ncm_app/demo/https_unikey new file mode 100755 index 0000000000000000000000000000000000000000..302d6b77d87df154d35f334d2a06a0ab79a9c36a GIT binary patch literal 545272 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 +#include +#include +#include +#include + +#include "mbedtls/net_sockets.h" +#include "mbedtls/ssl.h" +#include "mbedtls/x509_crt.h" +#include "mbedtls/md.h" +#include "mbedtls/aes.h" +#include "mbedtls/error.h" +#include "jsmn.h" + +#define EAPI_KEY "e82ckenh8dichen8" +#define EAPI_URL "/api/login/qrcode/unikey" +#define HTTP_URL "/eapi/login/qrcode/unikey" +#define HOST "interface.music.163.com" +#define UA_EAPI "NeteaseMusic 9.0.90/5038 (iPhone; iOS 16.2; zh_CN)" +#define SEP "-36cd479b6b5-" + +/* ---------- 实用: 十六进制 ---------- */ +static void hex_lower(const unsigned char *in, size_t n, char *out) { + static const char d[] = "0123456789abcdef"; + for (size_t i = 0; i < n; i++) { out[i*2] = d[in[i]>>4]; out[i*2+1] = d[in[i]&15]; } + out[n*2] = 0; +} +static void hex_upper(const unsigned char *in, size_t n, char *out) { + static const char d[] = "0123456789ABCDEF"; + for (size_t i = 0; i < n; i++) { out[i*2] = d[in[i]>>4]; out[i*2+1] = d[in[i]&15]; } + out[n*2] = 0; +} + +/* ---------- MD5 (mbedtls_md) ---------- */ +static void md5_hex(const char *msg, char *out_digest_hex /*33*/) { + unsigned char d[16]; + const mbedtls_md_info_t *inf = mbedtls_md_info_from_type(MBEDTLS_MD_MD5); + mbedtls_md(inf, (const unsigned char*)msg, strlen(msg), d); + hex_lower(d, 16, out_digest_hex); +} + +/* ---------- AES-128-ECB + PKCS7 → 大写 Hex ---------- */ +static void aes_ecb_hex(const char *plain, char *out /*hex*/) { + size_t n = strlen(plain); + int pad = 16 - (int)(n % 16); + size_t total = n + pad; + unsigned char buf[512], key[16], enc[512]; + memcpy(buf, plain, n); + for (int i = 0; i < pad; i++) buf[n + i] = (unsigned char)pad; + mbedtls_aes_context aes; mbedtls_aes_init(&aes); + mbedtls_aes_setkey_enc(&aes, (const unsigned char*)EAPI_KEY, 128); + for (size_t off = 0; off < total; off += 16) + mbedtls_aes_crypt_ecb(&aes, MBEDTLS_AES_ENCRYPT, &buf[off], &enc[off]); + mbedtls_aes_free(&aes); + hex_upper(enc, total, out); +} + +/* ---------- 生成 52 hex deviceId(演示用,可被环境变量覆盖) ---------- */ +static void make_device_id(char *out) { + const char *env = getenv("NCM_DEVICE_ID"); + if (env && strlen(env) == 52) { strcpy(out, env); return; } + unsigned char r[26]; FILE *f = fopen("/dev/urandom","rb"); + if (f) { size_t got = fread(r,1,26,f); fclose(f); if (got==26){ hex_upper(r,26,out); return; } } + /* fallback 固定值 */ + strcpy(out, "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"); +} + +/* ---------- 自定义 RNG (读取 /dev/urandom) ---------- */ +static FILE *rng_fp = NULL; +static int my_rng(void *arg, unsigned char *out, size_t len) { + (void)arg; + if (!rng_fp) rng_fp = fopen("/dev/urandom","rb"); + if (!rng_fp) return -1; + return fread(out,1,len,rng_fp) == len ? 0 : -1; +} + +/* ---------- eapi 请求体构造 ---------- */ +static void build_eapi(const char *device_id, char *body_out /* "params=..."; 尺寸给足 */, + char *cookie_out, size_t cookie_sz) { + char ts[32]; sprintf(ts, "%lld", (long long)time(NULL)); + char ms[32]; struct timespec tv; clock_gettime(CLOCK_REALTIME,&tv); + sprintf(ms, "%lld", (long long)tv.tv_sec*1000 + tv.tv_nsec/1000000); + char buildver[16]; memcpy(buildver, ts, 10); buildver[10]=0; + char request_id[48]; sprintf(request_id, "%s_0000", ms); + + /* header map (eapi header cookie & json.header 共用同一组键值) */ + const char *osver = "Microsoft-Windows-10-Professional-build-19045-64bit"; + const char *appver = "3.1.17.204416"; + const char *os = "pc", *channel = "netease"; + const char *resolution = "1920x1080", *versioncode = "140", *mobilename = ""; + + /* Cookie 头 (k=v 用 '; ' 拼接,值不做 urlencode,与 §7 实测一致) */ + snprintf(cookie_out, cookie_sz, + "__csrf=;appver=%s;buildver=%s;channel=%s;deviceId=%s;mobilename=%s;os=%s;osver=%s;requestId=%s;resolution=%s;versioncode=%s", + appver, buildver, channel, device_id, mobilename, os, osver, request_id, resolution, versioncode); + + /* json 明文 (key 顺序: type, header, e_r;header 内顺序无关紧要,服务端做 JSON 解析) */ + char json[1024]; + snprintf(json, sizeof json, + "{\"type\":3,\"header\":{\"__csrf\":\"\",\"appver\":\"%s\",\"buildver\":\"%s\",\"channel\":\"%s\"," + "\"deviceId\":\"%s\",\"mobilename\":\"%s\",\"os\":\"%s\",\"osver\":\"%s\",\"requestId\":\"%s\"," + "\"resolution\":\"%s\",\"versioncode\":\"%s\"},\"e_r\":false}", + appver, buildver, channel, device_id, mobilename, os, osver, request_id, resolution, versioncode); + + /* eapi 签名 */ + char msg[1400]; + snprintf(msg, sizeof msg, "nobody%suse%smd5forencrypt", EAPI_URL, json); + char digest[33]; md5_hex(msg, digest); + char plain[1600]; + snprintf(plain, sizeof plain, "%s%s%s%s%s", EAPI_URL, SEP, json, SEP, digest); + char params[1200]; + aes_ecb_hex(plain, params); + snprintf(body_out, 1300, "params=%s", params); +} + +/* ---------- jsmn 取 "unikey" 字符串值 ---------- */ +static int jsmn_get_str(const char *json, const char *key, char *val, size_t vsz) { + jsmn_parser p; jsmn_init(&p); + int n = jsmn_parse(&p, json, strlen(json), NULL, 0); + if (n <= 0) return -1; + jsmntok_t *tok = malloc(sizeof(jsmntok_t)*(size_t)n); + if (!tok) return -1; + jsmn_init(&p); + if (jsmn_parse(&p, json, strlen(json), tok, n) < 0) { free(tok); return -1; } + int rc = -1; + for (int i = 0; i < n - 1; i++) { + if (tok[i].type == JSMN_STRING && + (int)(tok[i].end - tok[i].start) == (int)strlen(key) && + strncmp(json + tok[i].start, key, tok[i].end - tok[i].start) == 0) { + jsmntok_t *v = &tok[i+1]; + if (v->type == JSMN_STRING) { + size_t len = v->end - v->start; + if (len < vsz) { memcpy(val, json + v->start, len); val[len] = 0; rc = 0; } + } + break; + } + } + free(tok); return rc; +} + +/* ---------- TLS POST (mbedtls) ---------- */ +static int tls_post(const char *host, const char *path, const char *cookie, + const char *body, char *resp, size_t resp_sz) { + int ret; + mbedtls_net_context net; mbedtls_net_init(&net); + mbedtls_ssl_context ssl; mbedtls_ssl_init(&ssl); + mbedtls_ssl_config conf; mbedtls_ssl_config_init(&conf); + mbedtls_x509_crt cacert; mbedtls_x509_crt_init(&cacert); + + /* 载入 CA 根(宿主/system 路径; 设备侧请内置 CA bundle) */ + const char *ca_paths[] = { + "/etc/ssl/certs/ca-certificates.crt", + "/etc/ssl/certs/ca-bundle.crt", + "/etc/pki/tls/certs/ca-bundle.crt", + NULL + }; + int ca_ok = 0; + for (int i = 0; ca_paths[i]; i++) + if (mbedtls_x509_crt_parse_file(&cacert, ca_paths[i]) == 0) { ca_ok = 1; break; } + if (!ca_ok) { fprintf(stderr, "[!] no CA bundle loaded\n"); ret = -100; goto out; } + + if ((ret = mbedtls_net_connect(&net, host, "443", MBEDTLS_NET_PROTO_TCP)) != 0) { + fprintf(stderr, "[!] connect: -0x%04x\n", (unsigned)-ret); goto out; + } + if ((ret = mbedtls_ssl_config_defaults(&conf, MBEDTLS_SSL_IS_CLIENT, + MBEDTLS_SSL_TRANSPORT_STREAM, MBEDTLS_SSL_PRESET_DEFAULT)) != 0) goto out; + mbedtls_ssl_conf_authmode(&conf, MBEDTLS_SSL_VERIFY_REQUIRED); + mbedtls_ssl_conf_ca_chain(&conf, &cacert, NULL); + mbedtls_ssl_conf_rng(&conf, my_rng, NULL); + if ((ret = mbedtls_ssl_setup(&ssl, &conf)) != 0) goto out; + if ((ret = mbedtls_ssl_set_hostname(&ssl, host)) != 0) goto out; + mbedtls_ssl_set_bio(&ssl, &net, mbedtls_net_send, mbedtls_net_recv, NULL); + + while ((ret = mbedtls_ssl_handshake(&ssl)) != 0) { + if (ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE) { + fprintf(stderr, "[!] handshake: -0x%04x\n", (unsigned)-ret); goto out; + } + } + + char req[2048]; + int rlen = snprintf(req, sizeof req, + "POST %s HTTP/1.1\r\nHost: %s\r\nUser-Agent: %s\r\n" + "Content-Type: application/x-www-form-urlencoded\r\n" + "Cookie: %s\r\nConnection: close\r\nContent-Length: %zu\r\n\r\n%s", + path, host, UA_EAPI, cookie, strlen(body), body); + size_t off = 0; + while (off < (size_t)rlen) { + ret = mbedtls_ssl_write(&ssl, (const unsigned char*)req + off, (size_t)rlen - off); + if (ret < 0) { + if (ret == MBEDTLS_ERR_SSL_WANT_READ || ret == MBEDTLS_ERR_SSL_WANT_WRITE) { continue; } + fprintf(stderr, "[!] ssl_write: -0x%04x\n", (unsigned)-ret); goto out; + } + off += (size_t)ret; + } + + size_t total = 0; memset(resp, 0, resp_sz); + for (;;) { + ret = mbedtls_ssl_read(&ssl, (unsigned char*)resp + total, resp_sz - 1 - total); + if (ret == 0) break; /* 对端关闭 */ + if (ret < 0) { + if (ret == MBEDTLS_ERR_SSL_WANT_READ || ret == MBEDTLS_ERR_SSL_WANT_WRITE) continue; + if (ret == MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY) break; + fprintf(stderr, "[!] ssl_read: -0x%04x\n", (unsigned)-ret); goto out; + } + total += (size_t)ret; + if (total >= resp_sz - 1) break; + } + ret = (int)total; +out: + mbedtls_net_free(&net); mbedtls_ssl_free(&ssl); mbedtls_ssl_config_free(&conf); + mbedtls_x509_crt_free(&cacert); + if (rng_fp) { fclose(rng_fp); rng_fp = NULL; } + return ret; +} + +int main(void) { + char device_id[64]; make_device_id(device_id); + /* 演示用随机 deviceId(实际应持久化,风控要求稳定) */ + printf("deviceId=%s\n", device_id); + + char body[1300], cookie[512]; + build_eapi(device_id, body, cookie, sizeof cookie); + + char resp[8192]; + int n = tls_post(HOST, HTTP_URL, cookie, body, resp, sizeof resp); + if (n < 0) { + char eb[128]; mbedtls_strerror(n, eb, sizeof eb); + fprintf(stderr, "HTTP request failed: %d (%s)\n", n, eb); + return 1; + } + resp[n] = 0; + /* 剥掉 HTTP 头 */ + char *pbody = strstr(resp, "\r\n\r\n"); + pbody = pbody ? pbody + 4 : resp; + printf("---- response body ----\n%.*s\n", (int)strlen(pbody), pbody); + + char unikey[64] = {0}; + if (jsmn_get_str(pbody, "unikey", unikey, sizeof unikey) == 0) + printf("UNIKEY = %s\n", unikey); /* ← 拿到即成功 */ + else + printf("UNIKEY not found\n"); + return jsmn_get_str(pbody, "unikey", unikey, sizeof unikey) == 0 ? 0 : 2; +} diff --git a/patch_v2/ncm_app/demo/rsa_raw_test.c b/patch_v2/ncm_app/demo/rsa_raw_test.c new file mode 100644 index 0000000..7e697ba --- /dev/null +++ b/patch_v2/ncm_app/demo/rsa_raw_test.c @@ -0,0 +1,48 @@ +/* rsa_raw_test.c — 验证 weapi 需要的 textbook RSA(无 padding 模幂) + * 用 mbedtls_rsa_public() 对固定 16 字节消息做 c = m^e mod n, + * 输出定长 256 hex(与模数等长)。宿主用 Python pow(m,e,n) 交叉校验。 + * 编译(mipsel): .tools/zig-mipsel-cc -O2 -static -Ivendor/mbedtls/include rsa_raw_test.c \ + * out/mbedtls/mipsel/libmbedcrypto.a -o out/rsa_raw_test + */ +#include +#include +#include "mbedtls/rsa.h" +#include "mbedtls/pk.h" +#include "mbedtls/base64.h" + +/* PUBLIC_KEY_DER_B64 (PKCS#8 / SubjectPublicKeyInfo, 1024-bit RSA) */ +static const char *PEM_DER_B64 = + "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDgtQn2JZ34ZC28NWYpAUd98iZ37BUrX/aKzmFbt7clFSs6sXqHauqKWqdtLkF2KexO40H1YTX8z2lSgBBOAxLsvaklV8k4cBFK9snQXE9/DDaFt6Rr7iVZMldczhC0JNgTz+SHXT6CBHuX3e9SdB1Ua44oncaTWz7OBGLbCiK45wIDAQAB"; + +int main(void) { + unsigned char der[512], *buf = der; size_t der_len = sizeof der; + /* 解码 base64 DER */ + if (mbedtls_base64_decode(der, sizeof der, &der_len, (const unsigned char*)PEM_DER_B64, strlen(PEM_DER_B64)) != 0) { + printf("base64 decode fail\n"); return 1; + } + /* 解析公钥 */ + mbedtls_pk_context pk; mbedtls_pk_init(&pk); + if (mbedtls_pk_parse_public_key(&pk, der, der_len) != 0) { + printf("pk parse fail\n"); return 1; + } + mbedtls_rsa_context *rsa = mbedtls_pk_rsa(pk); + int keylen = mbedtls_rsa_get_len(rsa); + printf("rsa len=%d (bytes)\n", keylen); + + /* 固定 16 字节明文(weapi 的 secret_key),右对齐到 keylen 后做 raw 模幂 */ + unsigned char secret[16]; + for (int i = 0; i < 16; i++) secret[i] = (unsigned char)(0x41 + i); /* 测试向量 */ + unsigned char input[256], output[256]; + memset(input, 0, sizeof input); + memcpy(input + keylen - 16, secret, 16); + int rc = mbedtls_rsa_public(rsa, input, output); /* 无 padding 纯模幂 */ + if (rc != 0) { printf("rsa_public fail %d\n", rc); return 1; } + printf("secret = "); + for (int i = 0; i < 16; i++) printf("%02X", secret[i]); + printf("\nCT = "); + for (int i = 0; i < keylen; i++) printf("%02X", output[i]); + printf("\n"); + + mbedtls_pk_free(&pk); + return 0; +} diff --git a/patch_v2/ncm_app/libs_common.sh b/patch_v2/ncm_app/libs_common.sh new file mode 100755 index 0000000..f45384f --- /dev/null +++ b/patch_v2/ncm_app/libs_common.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# 公共编译/测量环境。被各 build_*.sh 引用。 +ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +VENDOR="$ROOT/vendor" +OUT="$ROOT/out" +CC_MIPS="/home/Aska/Project/R3ProII/.tools/zig-mipsel-cc" +AR_MIPS="/home/Aska/Project/R3ProII/.tools/zig-env/bin/zig ar" +CC_HOST="gcc" +SZ_HOST="size" +# 交叉 bin 是 x86_64 的,本机(aarch64)跑不了;统一用 host `size`(可读任意 ELF)+ zig ar。 +# 注意:build 目录在 patch_v2/ncm_app 内,符号用绝对路径由各脚本自行 source 本文件。 + +# measure_archive : 统计归档全部成员 text/data/bss。flash≈text,RAM≈data+bss +measure_archive() { + local a="$1" + if [ ! -s "$a" ]; then echo " (missing/empty: $a)"; return; fi + $SZ_HOST "$a" | awk ' + /^[[:space:]]*[0-9]+[[:space:]]/ { t+=$1; d+=$2; b+=$3 } + END { printf " text=%-8d data=%-8d bss=%-8d (flash~%s KB RAM~%s KB)\n", t, d, b, t/1024.0, (d+b)/1024.0 } + ' +}