求助,dmm游戏ぼくらの放課後戦争 解包

只会抓包拿到已有的卡的资源。有没有办法解包到所有的卡的资源,卡面图片、CG和音频等。
游戏链接:ログイン - FANZA

這遊戲和deepone 孤兒的工作同款無法在沒腳色的時候拿到連接

孤儿的工作实际上是可以的
https://minasigo-no-shigoto-app-g-server.orphans-order.com/mnsg/user/getVersion
拿版本

https://minasigo-no-shigoto-pd-native-res.orphans-order.com/2.5.072/resource.json
拿资产列表

只不过拿到的资产列表是加密的,我这里给解密函数

import json
import hashlib
from Crypto.Cipher import AES
from Crypto.Util import Counter
from Crypto.Util.Padding import unpad
from base64 import b64encode, b64decode
from typing import Union


def cjson(data: Union[str, bytes]) -> dict:
    if isinstance(data, bytes):
        data = data.decode("utf-8")
    return json.loads(data)


def EVPKDF(password, salt, keySize=32, ivSize=16, iterations=1, hashAlgorithm="md5"):
    if isinstance(password, str):
        password = password.encode("utf-8")

    final_length = keySize + ivSize
    key_iv = b""
    block = None

    while len(key_iv) < final_length:
        hasher = hashlib.new(hashAlgorithm)
        if block:
            hasher.update(block)
        hasher.update(password)
        hasher.update(salt)
        block = hasher.digest()
        for _ in range(1, iterations):
            block = hashlib.new(hashAlgorithm, block).digest()
        key_iv += block

    key, iv = key_iv[:keySize], key_iv[keySize:final_length]
    return key, iv


def decrypt(data):
    passphase_hash = b64encode(hashlib.sha256('#mnsg#manifest'.encode('utf-8')).digest())
    passphase = passphase_hash[:0x20]

    salt = data[8:16]
    ciphertext = data[16:]
    key, iv = EVPKDF(passphase, salt)
    ctr = Counter.new(AES.block_size * 8, initial_value=int.from_bytes(iv, byteorder='big'))
    aes = AES.new(key, AES.MODE_CTR, counter=ctr)
    dec = aes.decrypt(ciphertext)
    try:
        return cjson(unpad(dec, 16))
    except:
        try:
            return cjson(dec[:-dec[-1]])
        except:
            return cjson(dec[:dec.rfind(b'}') + 1])


def decrypt_json_file(input_file: str, output_file: str):

    with open(input_file, 'rb') as file:
        encrypted_data = b64decode(file.read())

    decrypted_data = decrypt(encrypted_data)

    with open(output_file, 'w', encoding='utf-8') as file:
        json.dump(decrypted_data, file, ensure_ascii=False, indent=4)


if __name__ == "__main__":
    input_path = "resource.json"
    output_path = "decrypted_resource.json"
    decrypt_json_file(input_path, output_path)


解密后,链接自己拼一下就好了。md5那里优先选3的

普通资源像立绘卡面啥的能,寝不行(指孤儿的工作)

hh我更喜欢立绘点其他的没兴趣,费时费力去看cg不如直接看片

這只能拿普通例繪寢拿不到

寢只能拿你有的腳色,如果輸入你沒有的腳色會返回你沒有權限

有鉴权那确实没办法,关服的时候找个全角色大佬借号拆(

这种方式也适用于放课后战争这游戏吗?如果只是要卡面的话