星之后裔2有人能解包吗

如题
貌似是包内部分有加密,BOSS怪物之类的没加密,角色全加密了


馋得不得了只能说(

# script for decrypting bundles from ASTRA: Knights of Veda (.resource)
# created by spiritovod

get CHECK extension
if CHECK != "resource"
	cleanexit
endif

get KEY filename
get FOLDER filepath
string FOLDER ! "\"
string NAME p "decrypted/%s/%s" FOLDER KEY

math HEADER = 0x40
encryption xor KEY
log NAME 0 HEADER
encryption "" ""

get SIZE asize
math SIZE - HEADER
append
log NAME HEADER SIZE

基本没静态立绘,没意思

佬 我该用什么方法来运行这段代码?

同问

解出来了,感谢大佬

大佬 能不能说一下 怎么运行这段代码

把代码命名为.bms文件,用quickbms运行,然后用assetstudio打开。但是不知道为什么我没解密成功,只是把源文件复制到输出目录里了。请教路过的大佬

import os
import subprocess
import tkinter as tk
from tkinter import filedialog
from tkinter import ttk
import fnmatch
import threading

def get_quickbms_executable(file_path):
file_size = os.path.getsize(file_path)
# 检查文件大小是否大于3GB
if file_size > 3 * 1024 * 1024 * 1024:
return “quickbms_4gb_files.exe”
else:
return “quickbms.exe”

def extract_files(bms_script, input_folder, file_pattern, progress_var, total_files):
current_files = 0
for root, dirs, files in os.walk(input_folder):
for filename in fnmatch.filter(files, file_pattern):
file_path = os.path.join(root, filename)
quickbms_executable = get_quickbms_executable(file_path)
output_folder_name = os.path.splitext(filename)[0]
output_folder = os.path.join(root, output_folder_name)

        if not os.path.exists(output_folder):
            os.makedirs(output_folder)
        
        command = [quickbms_executable, "-o", "-F", file_pattern, bms_script, file_path, output_folder]
        subprocess.run(command, check=True)
        
        # 更新进度
        current_files += 1
        progress_var.set((current_files / total_files) * 100)
        window.update_idletasks()  # 更新Tkinter界面

def select_bms_script():
return filedialog.askopenfilename(filetypes=[(“BMS files”, “*.bms”)])

def select_input_folder():
return filedialog.askdirectory()

def select_file_pattern():
pattern = tk.simpledialog.askstring(“Input”, “Enter the file extension pattern to extract (e.g., '.ext’):“, initialvalue=”.file”)
return pattern

def on_extract():
bms_script = bms_script_path.get()
input_folder = input_folder_path.get()
file_pattern = file_pattern_path.get()

if not bms_script or not input_folder or not file_pattern:
    messagebox.showerror("Error", "All fields are required.")
    return

# 统计文件数量
total_files = 0
for root, dirs, files in os.walk(input_folder):
    total_files += len(fnmatch.filter(files, file_pattern))

# 设置进度变量
progress_var = tk.DoubleVar()

# 启动解包线程
threading.Thread(target=extract_files, args=(bms_script, input_folder, file_pattern, progress_var, total_files)).start()

# 创建进度条
progress_bar = ttk.Progressbar(window, orient="horizontal", length=100, mode="determinate", maximum=100, variable=progress_var)
progress_bar.grid(row=4, column=0, columnspan=3, padx=10, pady=10)

def main():
global window
window = tk.Tk()
window.title(“quickbms批量解包工具”)
window.geometry(“800x600”)

# Create entry fields
global bms_script_path, input_folder_path, file_pattern_path
bms_script_path = tk.StringVar()
input_folder_path = tk.StringVar()
file_pattern_path = tk.StringVar()

# Create and place labels and entry fields
tk.Label(window, text="选择BMS脚本:").grid(row=0, column=0, padx=10, pady=10)
tk.Entry(window, textvariable=bms_script_path).grid(row=0, column=1, padx=10, pady=10)

tk.Label(window, text="选择文件夹:").grid(row=1, column=0, padx=10, pady=10)
tk.Entry(window, textvariable=input_folder_path).grid(row=1, column=1, padx=10, pady=10)

tk.Label(window, text="输入文件后缀名:").grid(row=2, column=0, padx=10, pady=10)
tk.Entry(window, textvariable=file_pattern_path).grid(row=2, column=1, padx=10, pady=10)

# Create buttons for selecting script and folder
tk.Button(window, text="选择脚本", command=lambda: bms_script_path.set(select_bms_script())).grid(row=0, column=2, padx=10, pady=10)
tk.Button(window, text="选择路径", command=lambda: input_folder_path.set(select_input_folder())).grid(row=1, column=2, padx=10, pady=10)
tk.Button(window, text="选择后缀名", command=lambda: file_pattern_path.set(select_file_pattern())).grid(row=2, column=2, padx=10, pady=10)

# Create extract button
tk.Button(window, text="解包", command=on_extract).grid(row=3, column=0, columnspan=3, padx=10, pady=10)

window.mainloop()

if name == “main”:
main()

复制这个代码,改成py文件 放到quickbms目录里 双击运行就行了 我也是看你的才知道这个是bms文件代码

厉害啊,直接写个GUI

代码用了,还是不行,因为本质还是调用quickbms,不知道怎么回事还是解不开。可能是我的电脑问题,能分享一下解密后的包吗?

解完 用AS了吗 我这边完全正常

不行,看quickbms控制台信息就是把resource复制了一遍

重新下一个试试 :joy:

不行,只是把文件复制了一遍,as读取不了
屏幕截图 2024-11-10 142127
屏幕截图 2024-11-10 140457

通过百度网盘分享的文件:星之后裔2解包
链接:百度网盘 请输入提取码
提取码:6666
–来自百度网盘超级会员V7的分享 下载完直接as读取就ok了

路過實測了一下,該bms代碼只能用於手游端,pc版本不行。會解密失敗。

感谢大佬

原来如此,当时百思不得其解,最后还在脚本中加了调试日志,发现根本没有解密过程,原来都是因为用的端游的缘故