游戏数据文件解密

梦辰...大约 1 分钟Python脚本Python文件

游戏数据文件解密

注意

这是Python文档,并非Lua文档!

此脚本用于解密迷你世界的各种加密数据文件
使用之前请确保已经安装Python3并配置好环境变量
Python脚本由Four_cps协助编写

用到的库

import zlib
import os

其中zlib库需要自行安装

使用方法

  1. 找到cvs等数据文件
  2. 十六进制编码打开文件
  3. 删除文件头前8个字节
  4. 重命名csv文件为main.csv
  5. 运行xor.py
  6. 运行zlib.py
  7. 输出的_main.csv即为解密后的文件

xor.py

def xor(data, key):
    key_len = len(key)
    data_len = len(data)
    key= data_len//key_len*key+key[:data_len%key_len]
    return bytearray(a^b for a, b in zip(*map(bytearray, [data, key])))
 
with open("main.csv", 'rb') as f:
    data = f.read()
 
key = b"\xd6\x02\x08\x00\xf4\xfe\xff\x3f\x01\x00\x00\x00\xd0\xca\x01\x00"
res = xor(data, key)
 
with open("main.csv.dec", 'wb') as f:
    print(res)
    f.write(res)

zlib.py

import zlib
import os

def decompress(infile, dst):
    infile = open(infile, 'rb')
    dst = open(dst, 'wb')
    decompress = zlib.decompressobj()
    data = infile.read(1024)
    while data:
        dst.write(decompress.decompress(data))
        data = infile.read(1024)
    dst.write(decompress.flush())

if __name__ == "__main__":
    for file_name in os.listdir():
        if (file_name[-3:] == "csv"):
            with open(file_name, 'rb') as in_file:
                with open(file_name+"_", 'wb') as out_file:
                    out_file.write(in_file.read()[8:])

    for file_name in os.listdir():
        if file_name[-3:] == "dec":
            decompress(file_name, "_" + file_name[:-9] + ".csv")
    
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.14.7