43 lines
2.0 KiB
Markdown
43 lines
2.0 KiB
Markdown
# core 算法模块
|
||
|
||
已还原算法按职责拆分到以下入口:
|
||
|
||
- `core.sig`: `sig`, `build_sig_plaintext`, `body_md5`
|
||
- `core.tokensig`: `__NStokensig`,调用方显式传入账号的 `client_salt`
|
||
- `core.sig3`: KWSG `10418` 的 `__NS_sig3`
|
||
- `core.xfalcon`: `__NS_xfalcon` digest / `$TE_` / value
|
||
- `core.enc_data`: KWSG `10400` 的 `encData` / ZT envelope
|
||
- `core.atlas_sign`: 通用 `atlasSign` 短 ZT envelope,
|
||
`head8 + xor16(24-byte digest)`
|
||
- `core.reward_sign`: reward body `sign`
|
||
- `core.dfp_sign`: DFP / unifiedId 的 `10405 atlasSign` 输入拼接与签名封装
|
||
- `core.device_id`: Java 层可见的 `did` / `oDid` / `rdid` 本地派生辅助和 `egid` 格式校验
|
||
- `core.constants`: 静态算法常量
|
||
- `core.captured_profile`: 当前抓到的本机/账号样本值
|
||
|
||
`core.kwsg` 只作为旧代码兼容聚合层,不再放算法实现。`out/*` 中的分析
|
||
和请求构造脚本优先从 `core` 分类模块导入。
|
||
|
||
注意:`did`、`oDid`、`rdid`、`egid`、`api_st`、`tokenClientSalt`
|
||
都不是通用算法常量。它们与设备、账号或登录态绑定,当前样本放在
|
||
`core.captured_profile`,换账号/设备时应替换 profile。`core.device_id`
|
||
只覆盖 APK Java 层已经定位到的本地派生路径;`egid` 仍走 DFP/KSecurity
|
||
链路,当前不要伪造成简单 hash。
|
||
|
||
`oDid` 当前已确认是初始化阶段保留下来的原始本地 DID:
|
||
`FoundationInfoInitModule -> deviceid/i.e() -> ss9/a.b`,公共参数
|
||
`q01/g.getODid()` 最终读取 `ss9.a.b`。后续云端刷新 `did` 时只更新
|
||
`ss9.a.a`,不会覆盖 `ss9.a.b`。
|
||
|
||
`egid` 链路当前已拆到:
|
||
|
||
```text
|
||
DFP lite kNN -> sq0.b -> core.enc_data.kwsg_10400_raw(deviceInfo)
|
||
DFP form -> core.dfp_sign.dfp_atlas_sign(sign)
|
||
```
|
||
|
||
`10405 atlasSign` 与已还原的 `10418` sign 分支共用
|
||
`innerFlag=true` digest 管线;区别主要在输入字符串由 DFP Java builder
|
||
决定。`core.dfp_sign` 固化了 `gdfp_report`、`unified_log_report`、
|
||
`unified_id_mapping`、`unified_repair/fetch/checkRepair` 的输入拼接规则。
|