Files
Astral/docs/netdelivery说明.md
T
Txiaochen 3e30dffb31 v0版本完成:新增 4 篇详细文档(README 精简内容的落点)
README 为了防冗余做了精简,被移出的详细内容写成文档放这里:

- 功能票使用说明.md      买票/用票的完整原理、报文依据、playCredit 公式、实测记录
- 账号转生说明.md        reincarnate 完整流程、分批规则(避开 2 首)、
                          续关登录依据、登出 type=1 依据、playlog 合成、迁移范围
- 常见坑与注意事项.md    二维码 / 账号状态 / 功能票 / 副作用 / 日志 / 网络 /
                          不入库清单 + .gitignore 行尾注释的坑
- netdelivery说明.md     DLI 协议、amdaemon.exe 字符串出处、用法与实测结论
2026-10-07 11:23:47 +08:00

3.6 KiB
Raw Blame History

netdelivery.py 说明(ALL.Net DLI)

本文是 README.md 里 netdelivery 部分的详细版(含运行原理)。


一、DLI 是什么

DLI = Download Instruction(配信指示書)。

机台做完 ALL.Net 认证后,AMDaemon 会再问一次「我该下什么包」:

POST http://at.sys-allnet.cn/net/delivery/instruction
body = title_id=SDGB&title_ver=<版本>&client_id=<Keychip 短值>

→ result=1&uri=<patch 指示書 URL>|<option 指示書 URL>

指示書本身是个 INI(日文注释),真正要下的包写在 INSTALLn= 里:

[COMMON]    INSTALL1=https://.../SDGB_1.56.00_..._1_1.55.01.app
[OPTIONAL]  INSTALL1=https://.../SDGB_A031_..._0.opt
            INSTALL2=https://.../SDGB_A005_..._0.opt

★ 只有 INSTALLn= 才是要下载的包; EXISTn= 是「本机应该已经有的文件」,只是文件名,不是下载项。


二、协议出处

全部来自 source/amdaemon.exe 的字符串(数字是文件内偏移):

字符串 偏移
http://at.sys-all.cn/net/initialize @0x788170
http://at.sys-all.cn/net/delivery/instruction @0x788198
title_id=%s&title_ver=%s&client_id=%s @0x7882b8
ALWE_NETDELIVER_PHASE_GET_DLINST_INFO @0x63bde0
ALWE_NETDELIVER_PHASE_APP_IMAGE_INFO @0x63be08
ALWE_NETDELIVER_PHASE_OPT_IMAGE_INFO @0x63be30
"Net deliver param - dli uri : %s." @0x63c3f8
ALE_ABEX_STAT_DLINSTR_OK / _ERR_DLINSTR_NG @0x638600
alAbEx_lite Ver 4.00.01 @0x784a31

协议是 ALL.Net alAbEx v4:AES-128-CBC 信封,明文是 key=value&...。

请求 = AES-CBC( 16 字节全 0 前缀 || 明文, IV = 全 0 )
响应 = 16 字节 IV || 密文

三、用法

python netdelivery.py                 # 用 config.py 里的机台查,然后**多选下载**
python netdelivery.py A63E01ABCDE     # 指定 Keychip
python netdelivery.py --list          # 只列清单 + 直链,不下载
python netdelivery.py --all           # 全下(不交互)
python netdelivery.py --only 1,3      # 只下第 1、3 项(不交互)
python netdelivery.py --ver 1.55      # 指定上报版本(默认 config.MAI_ENCODING)
python netdelivery.py --out D:\SDGB2026\update
python netdelivery.py --insecure      # 关掉 TLS 校验(CDN 证书有问题时用)

交互选择支持:逗号/空格分隔、区间(1-3)、a=全选、n=全不选、q=退出。

下载带断点续传(.part 临时文件 + Range,下完改名)与进度/速率显示。


四、实测结论(2026-10-06)

结论 证据
title_ver 决定拿哪份指示書 1.55 → patch 1.56 + opt A005;1.56 → 仅 opt A031;≤1.54 → uri=null
client_id 必须是 11 位短值 发 15 位完整 Keychip → result=-3;发小写 → result=-2
包可以断点续传 返回 206 + Content-Range
已下架的历史包会回 504 这是华立 CDN 的状态,不是脚本的问题

实测清单(--ver 1.56):

  序号  类型  大小          来源段/键              文件名
  [ 1]  opt   7.25 MB       COMMON/INSTALL1       SDGB_A031_20260909101347_0.opt
  [ 2]  opt   3.00 MB       OPTIONAL/INSTALL1     SDGB_A005_20260610180958_0.opt

下载并校验字节数完全一致:SDGB_A031...opt = 7602176、SDGB_A005...opt = 3145728。


五、注意

  • 默认下载到 download/(已加入 .gitignore,.app 动辄上 GB)。
  • 需要同目录下的 authv1.py 提供 ALL.Net 协议层。
  • 这是只读操作,不写任何账号数据。