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了,应该是他们又改了啥,也可能少参数了,以前是能获取到的
