Skip to content

Instantly share code, notes, and snippets.

@esterTion
Created November 13, 2024 06:45
Show Gist options
  • Save esterTion/2e52dd4e2047c5ffc69a2f783013d01e to your computer and use it in GitHub Desktop.
Save esterTion/2e52dd4e2047c5ffc69a2f783013d01e to your computer and use it in GitHub Desktop.
阿B的图片加密。。

触发条件:

  • 不含mobi_app=iphone_comicmobi_app=android_comic(触发web加密),或
  • version6.8.5及以上(触发app加密)

额外需求:

app加密时需要发送m1参数,参数不是有效的加密参数时,返回加密域名下未经加密处理的响应

格式粗看:

文件头为

bool encrypted
long dataSize

encrypted == false:
dataSize为0,响应去除5字节文件头即为图片未加密内容

encrypted == true:
文件头后跟随dataSize的内容,后跟随 aes密钥(web加密)或JWK EC公钥(app加密)

解密流程(web)

提取图片地址的cpx参数并base64解码,得到的数据中,0x1开始0x20长度数据为AES key,0x3c开始0x10长度的数据为AES IV,
对响应的内容部分前0x5010字节进行AES-256-CBC解密(多出来的0x10为AES padding,正常处理会自动去除)
解密得到的内容和0x5010后的未加密部分拼接,得到原始图片

解密流程(app)(未完成)

????? 获得 ??? key 和 IV
对响应的内容部分前0x6410字节进行 ??? 解密
解密得到的内容和0x5010后的未加密部分拼接,得到原始图片

额外笔记

流程逻辑来自 https://s1.hdslb.com/bfs/manga-static/manga-pc/static/js/bili.599a7faf18.js
web部分为对密文
CEpQTVYaSwsFR1dLLSQ8QyojLUVIRwUKS1c6QkRSXDFNSwsHR1cyWlFDWV88QkUFEUZbMl1NQVg8EkBDW0hTHk8IAENVTCgkPUonJydDRU8AGEpbNF1NWlk0SU8IAkNVNV9RQlBSOEhDCBlDSTNRQ15RNBcU
base64解码后,使用密钥 shaolaijiemilaoniangdedaima 进行循环字符异或 (haha very funny)
得到aes配置

{
	"1":{"al":"AES-CBC","ak":[1,33],"an":[60,76],"at":[0,20]},
	"2":{"al":"AES-CBC","ak":[1,33],"an":[60,76],"at":[0,20]}
}

在web加密配置旁边疑似有一个相似流程的配置获取函数,但是此函数内的所有变量都不存在
由于flutter反编译基本等于不存在,故而app加密逻辑若是无法推算出来,基本无法还原其逻辑
(可以猜想app和web类似,也是使用aes,但是key和iv从何而来,以及api发送的m1有何作用,无从知晓)

目前如何应对

  • 现阶段只要带上mobi_app=iphone_comic即可获得未加密图片,在阿B切断所有旧版本app的使用前,这条路应该不会出问题
    • 至于切断时间是一个月,一个季度,一年,或者永远,就要看漫画部的营收了(这么看来应该会很快,毕竟漫画快倒闭了)
  • web加密逻辑已经完全理解,可以正常通过web渠道拿到加密流程的图片并正常解密,并且即使更换流程逻辑应该也不难跟进修改
@esterTion
Copy link
Author

切断时间竟然是一周!漫画部倒闭的速度远超我的想象!

1X@A73BUQ~I {5AE2{2OZJV

@esterTion
Copy link
Author

esterTion commented Nov 17, 2024

{
  "is_banned":true,
  "banned_sub_type":5,
  "banned_reason":"接到投诉您存在侵犯版权内容行为,违反相关版权规则,现封禁30天处理。"
}

666


阿b怎么周日还在加班啊

@shadlc
Copy link

shadlc commented Dec 14, 2024

原来您也曾研究过这部分

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment