• jsc和luac文件 xxtea 解密.


     1 # -*- coding: utf-8 -*- 
     2 import xxtea
     3 import os
     4 
     5 src = "./assets/src"
     6 dst = "./assets/srcd"
     7 
     8 xxtea_sign = ""
     9 xxtea_key = "fc9853c5-78f9-55"
    10 xxtea_sign_len = len(xxtea_sign)
    11 xxtea_key_len = len(xxtea_key)
    12 
    13 files = []
    14 exts = [".luac",".jsc"]
    15 
    16 def deep_iterate_dir(rootDir):
    17     for lists in os.listdir(rootDir):
    18         path = os.path.join(rootDir, lists)
    19         if os.path.isdir(path):
    20            deep_iterate_dir(path)
    21         elif os.path.isfile(path):
    22             ext = os.path.splitext(path)[1]
    23             if ext in exts:
    24                 files.append(path)
    25 
    26 
    27 # 处理一个文件
    28 def handle_file(file):
    29     with open(file,"rb") as fd:
    30         con = fd.read()
    31         c2 = xxtea.decrypt(con, xxtea_key,padding=False)
    32         fd.close()
    33         return c2
    34 
    35 # 保存文件
    36 def save_file(file,outData):
    37     dst_rootpath = os.path.split(file)[0]
    38     try:
    39         # print "creating dir (%s)" % (dst_rootpath)
    40         os.makedirs(dst_rootpath)
    41     except OSError:
    42         if os.path.exists(dst_rootpath) == False:
    43             # There was an error on creation, so make sure we know about it
    44             raise Exception("Error: create directory %s failed." % dst_rootpath)
    45 
    46     if file.endswith("c"):
    47         file = file[:-1]
    48     with open(file,"wb") as fd:
    49         con = fd.write(outData)
    50         fd.close()
    51 
    52 # 获取绝对路径
    53 def normalize_path(i):
    54     tmp = os.path.normpath(i)
    55     if not os.path.isabs(tmp):
    56         tmp = os.path.abspath(tmp)
    57     return tmp
    58 
    59 # 获取相对路径
    60 def get_relative_path(luafile):
    61     try:
    62         pos = luafile.index(src)
    63         return luafile[len(src)+1:]
    64     except ValueError:
    65         raise Exception("get_relative_path error")
    66 
    67 def handle_all_files():
    68     for file in files:
    69         con = handle_file(file)
    70         if con:
    71             path = os.path.join(dst,get_relative_path(file))
    72             save_file(path,con)
    73         else:
    74             print ("handle %s file error" % file)
    75 
    76 def main():
    77     global src
    78     global dst
    79     src = normalize_path(src)
    80     dst = normalize_path(dst)
    81 
    82     if not os.path.exists(dst):
    83         os.makedirs(dst)
    84 
    85     deep_iterate_dir(src)
    86     handle_all_files()
    87 
    88 if __name__ == "__main__":
    89     main()
  • 相关阅读:
    08Alpha版(内部测试版)发布
    意见汇总
    第一阶段SCRUM
    团队总结
    与学习通app对比分析
    团队第一阶段评价
    第一阶段完成情况说明
    效绩评估 第二阶段
    效绩评估 第一阶段
    软件对比
  • 原文地址:https://www.cnblogs.com/dzqdzq/p/11669558.html
Copyright © 2020-2023  润新知