雀魂有没有解包的方法

雀魂的年兽还有一部分动态皮肤还挺不错的
虽然可以用网页开发者工具提取出已经加载了的皮肤资源,但是一些过期的活动内容却完全无法用此方法得到了
QQ截图20240810145710

我记得没错也只是隐藏版本号,自己找吧,挺简单的

2020.3.48f1

一年之后,雀魂把角色立绘给加密了

只是资产名处理了下,加密个锤子。。

import os
import shutil
import sys


class MajsetDecryptor:
    def __init__(self):
        self.char_list = "abcdefghijklmnopqrstuvwxyz0123456789@$_-"
        self.char_map = {cnt: i for i, cnt in enumerate(self.char_list)}
        self.char_list_len = len(self.char_list)

    def decrypt(self, enc):
        r = []
        d = -17

        for cnt in enc:
            if cnt in self.char_map:
                i = self.char_map[cnt]
                ni = (i + d) % self.char_list_len
                r.append(self.char_list[ni])
            else:
                r.append(cnt)
            d -= 1

        return "".join(r)

    def parse(self, f):
        ne = os.path.splitext(f)[0]
        li = ne.rfind("_")

        if li != -1:
            enc = ne[:li]
        else:
            enc = ne

        return enc

    def process(self, i, o):
        cnt = 0
        for r, _, f in os.walk(i):
            for ff in f:
                if ff.endswith(".majset"):
                    op = os.path.join(r, ff)
                    fs = self.decrypt(self.parse(ff)).replace("$@$", os.sep)
                    tp = os.path.join(o, fs + ".majset")
                    tf = os.path.dirname(tp)

                    if not os.path.exists(tf):
                        os.makedirs(tf)
                    shutil.copy2(op, tp)

                    print(f"{ff} -> {fs}.majset")
                    cnt += 1

        print(cnt)


if __name__ == "__main__":

    i = sys.argv[1]

    i = i.replace('"', "").replace("'", "")
    o = os.path.join(os.path.dirname(os.path.abspath(i)), "Renamed_Assets")

    MajsetDecryptor().process(i, o)

我提到的是这个…资产名未还原的情况也是可以读取的,但是spine的图集读取不了

原因找到了,是as的版本问题导致的读取问题,打扰了

版本号还可以用2022.3.22f1,我试了没问题

理论上随便输,只要符合版本号格式就行

1 个赞