安装包700游戏内热更新近6个G
1 个赞
import os
class AesEcbPBKDF1:
def __init__(self):
from hashlib import sha1
from Crypto.Cipher import AES
from Crypto.Util import Counter
self.aes, self.count, self.sha1 = AES, Counter, sha1
def getkey(self, password, salt, keylen, count):
index, count = 1, count - 1
hashval = self.sha1((password.encode('utf-8') if isinstance(password, str) else password) + salt).digest()
for i in range(count - 1):
hashval = self.sha1(hashval).digest()
hashder = self.sha1(hashval).digest()
while len(hashder) < keylen:
hashder += self.sha1(bytes([index + 48]) + hashval).digest()
index += 1
return hashder[:keylen]
def decrypt(self, data, password, salt, keylen=16, count=100):
return self.aes.new(self.getkey(password, salt, keylen, count), self.aes.MODE_CTR, counter=self.count.new(64, suffix=b'\x00' * 8, little_endian=True)).decrypt(data)
def decrypt_ab_files(input_folder):
pbkdf1 = AesEcbPBKDF1()
for root, _, files in os.walk(input_folder):
for file in files:
if file.endswith('.ab'):
file_path = os.path.join(root, file)
salt = file.replace('.ab', '').encode('utf-8')
with open(file_path, 'rb') as f:
file_bytes = f.read()
decrypted_data = pbkdf1.decrypt(file_bytes, 'System.Byte[]', salt, 32, 100)
with open(file_path, 'wb') as f:
f.write(decrypted_data)
if __name__ == "__main__":
input_folder = "/home/rikka/Downloads/UnpackGames/moon"
decrypt_ab_files(input_folder)
4 个赞
大佬,我装了依赖库,路径也设定了,但是运行没有效果是怎么回事?求教
头疼,整理火葬场
大佬,热更的包包是bundles格式,运行好像没效果怎么回事?求教
感谢
原文我已经删除了,但我还是很疑惑。游戏资源和数值都是被加密的,游戏厂商应该都不会希望被解密,他们的条款里也不会区分是解密资源还是数值,理论上解资源也可以成为他们发律师函的对象,事实上资源里有很多未来的东西,厂商不太可能希望这些东西被公开。
大佬,请教个问题,我想找游戏里角色们的属性数值配置文件,但找了好久没找到,能指点下方向吗
都在LuaScript.bin里,这个二进制文件应该可以拆出很多子表格,至于怎么拆我也不知道
1 个赞
感谢,不过我研究了好久,我想用lua读取这个文件,但这个好像不是lua文件,解不开,完全解不开
我去,这算法是不可逆的么,PBKDF1好像算哈希,可惜了