Light紫星 发表于 2023-8-21 15:06

某安卓端xxtea加密的游戏资源的解密

游戏名称:5a+75YWJ5LmL5peF

这是前段时间,帮一个群友解密的某游戏,代码贴一下,欢迎互相交流

import xxtea#pip install xxtea-py

def decrypt_xxtea_file(orig_path, new_path, xxtea_key, xxtea_sign):
    # 读取原文件
    orig_file = open(orig_path, "rb")
    encrypt_bytes = orig_file.read()
    if(encrypt_bytes==0):
      
      encrypt_bytes = encrypt_bytes
      #print(encrypt_bytes)
    else:
      encrypt_bytes = encrypt_bytes
    orig_file.close()
    # 解密文件
    allbytes=b''
    j=0
    decrypt_bytes=b''
    for j in range(0,len(encrypt_bytes)):
      decrypt_bytes = xxtea.decrypt(encrypt_bytes[:j], xxtea_key)
      if(decrypt_bytes!=b''):
            print(j,decrypt_bytes)
            break
    allbytes=decrypt_bytes+encrypt_bytes
    #print(allbytes)
    new_file = open(new_path, "wb")
    new_file.write(allbytes)
    new_file.close()
    print("Done with " + orig_path)
   
def getKeyOfFile(filename):
    data = open(filename,'rb').read()
    dex = bytes.fromhex('436f707972696768742843292c323031372c447261676f6e50756e636853746f726d20546563682e436f2e2c4c74642e')
    def getv12(d):
      return dex
    v9=0x7
    v10=0x30
    #v12=0x28
    v13=data
    #0x6f
    v15=data

    v16 =( v15 + v13)
   #0x141
    v17 = (v15 + v15 + v13)

    v18 = (v15 + v13 + v17)
    v19 = (v18 + v17 + v18)
    v20 = (v17 + v18 + v19)
    #print('v20',v20)

    v21=0
    v21=12
    v37=[]
    print('v21', v16 - 13 * (((1321528399 * v16) >> 32) >> 2))
    if (( v16 - 13 * (((1321528399 * v16) >> 32) >> 2)) <= 8 ):
      v21 = 8;
      v37=
    else:
      v21 = v16 - 13 * (((1321528399 * v16) >> 32) >> 2);
      v37=
      v22 = v19 + v20;
      v37 =getv12( v22 % v10);
      if ( v21 != 9 ):
          v23 = v20 + v22;
          v37 = getv12( v23 % v10);
          if (v21 != 10):
            v24 = v22 + v23;
            v37 = getv12(v24 % v10);
            if (v21 == 12):
            v37 = getv12( (v23 + v24) % v10);
      print("警告:key长度超过8",v21)
      
   
    v37 = getv12(v13 % v10)
    v37 = getv12( v15 % v10)
    v37 = getv12( v16 % v10)
    v37 = getv12 (v17 % v10)
    v37 = getv12(v18 % v10)
    v37 = getv12 ((v17 + v18) % v10)
    v37 = getv12 (v19 % v10)
    v37 = getv12( v20 % v10)
    #79 31 44 6d 79 65 2e 63
    #79 31 44 6d 79 65 2e 63 a8 3e 34 8a            y1Dmye.c.>4.
    l=8
    if(v21==8):
      l=8
    else:
      l=v21+1
    return bytes(v37),data[:l]

name='01669ba70974393a58ebb573a7562924'
ext='png'
key,sign = getKeyOfFile(name+'.'+ext)
print('key is ',key,sign)
decrypt_xxtea_file(name+'.'+ext,name+'_out.'+ext,key,sign)

yinxingren 发表于 2023-12-28 16:13

so文件找到密匙
ASzaqw.1223&*(��&%&**()
用xxtea解不了,请问有什么工具可以用这种密匙解密吗?

1015723349 发表于 2023-8-22 08:59

老哥能帮我看看守塔不能停么   是个联网的塔防游戏   比较容易搜到的数据只要修改都会数据异常然后有一些数据我搜不到 不知道是我搜的有问题还是数据加密了

fishes207569 发表于 2023-8-21 16:41

支持 辛苦了

zhangxu521 发表于 2023-8-21 18:46

厉害厉害谢谢

xiahaihua 发表于 2023-8-21 22:57

支持,鼓励

t188733 发表于 2023-8-22 10:26

感谢楼主

wasm2023 发表于 2023-8-22 12:19

感谢分享,666

twl288 发表于 2023-8-22 15:04

高手啊技术

slslsl 发表于 2023-8-22 19:12

大佬辛苦,学习了!

eplq 发表于 2023-8-23 00:26

http://p0.meituan.net/csc/8f33cafda795654ebc80c2086315be6546779.png
luac使用了luajit加密,话说解密了以后能做什么呢,最近也在学习手游之类的游戏,大多数都教解密之类的,但解出来了不知道下一步要做什么了{:1_908:}
页: [1] 2 3
查看完整版本: 某安卓端xxtea加密的游戏资源的解密