求助大佬,Megaha:Re 异世界实干记,解包

import requests
import json
import msgpack
from Crypto.Cipher import AES
import base64
from Crypto.Util.Padding import unpad, pad


def xor(enc, k):
    return "".join(chr(ord(c) ^ k) for c in enc)


def parse(data):
    return msgpack.unpackb(
        unpad(
            AES.new(
                base64.b64decode(
                    xor("ypqoI-OwPJmPI.uTO.OuKpm,JsSGSJGoDvekGHejNpH ", 29).replace(
                        "\\", "/"
                    )
                ),
                AES.MODE_CBC,
                base64.b64decode(xor("O,dsS/(2+OGqs%2+jd[PL\\  ", 29)),
            ).decrypt(base64.b64decode(msgpack.unpackb(data, raw=False)["p"])),
            AES.block_size,
        ),
        raw=False,
    )


def encrypt(data: dict) -> str:
    return base64.b64encode(
        AES.new(
            base64.b64decode(
                xor("ypqoI-OwPJmPI.uTO.OuKpm,JsSGSJGoDvekGHejNpH ", 29).replace(
                    "\\", "/"
                )
            ),
            AES.MODE_CBC,
            base64.b64decode(xor("O,dsS/(2+OGqs%2+jd[PL\\  ", 29)),
        ).encrypt(pad(msgpack.packb(data, use_bin_type=True), AES.block_size))
    ).decode("utf-8")


headers = {
    "User-Agent": "UnityPlayer/2022.3.62f2 (UnityWebRequest/1.0, libcurl/8.10.1-DEV)",
    "Accept-Encoding": "deflate, gzip",
    "Accept-ViewType": "7",
    "X-Unity-Version": "2022.3.62f2",
}

payload = {
    "c": "Index",
    "dgs_adult": 1,
    "app_vc": {
        "os": 1,
        "catalog": "",
        "use_cdn": "https://gina.sangduoan.com/prod",
        "app_ver": "1.13.000",
        "app_type": 1,
    },
}


response = requests.post(
    "https://prod.karen-megahare.com/i.php",
    data={"p": encrypt(payload)},
    headers=headers,
)
print(json.dumps(parse(response.content), indent=4))

变更:突然发现下发的json里面没有hash key了,应该是他们又改了啥,也可能少参数了,以前是能获取到的

2 个赞