zoukankan      html  css  js  c++  java
  • fas文件格式解析

    1.fas文件称为一种快速加载文件,这种文件省去了加载时的翻译时间,所以相对较快一些.
    2.fas文件格式大体如下:
     
    垃圾数据或其他 fas文件标识
    data1size
    (ascii)
    ‘$’ data1
    (不确定是否加密)
    '$' data2size
    (ascii)
    '$' data2
    (加密)
    keysize
    (1字节)
    keydata '$' 编译时间及其他数据
     
    这里面fas文件标识类似 FAS4-FILE ; Do not change it! 
     
    python实现:
    import os
    
    def mixor(datapl,mipl):
        for a in datapl:
            if len(mipl) < len(datapl)+1:
                mipl += mipl
        
        jiemapl = ""
        for b in range(len(datapl)):
            newpl = ord(datapl[b]) ^ ord(mipl[b]) ^ ord(mipl[b+1])
            jiemapl += chr(newpl)
        ret = jiemapl
        
        return ret
    
    
    fr = open('acad.fas', 'rb')
    data = fr.read()
    fr.close()
    
    headflag = 'FAS4-FILE ; Do not change it!'
    
    
    
    aa = data.find(headflag)
    if(aa == -1):
        print 'error in find FAS4'
        sleep(4)
    
    data = data[aa-3 : ]
    i1 = data.find('$')
    tmp = data[34 : i1]
    ee = tmp.find('
    ')
    
    tlst = tmp[ : ee]
    dfg = int(tlst)
    toupl = data[ : i1+1]
    
    if(dfg != 1):
        ee1 = data[34 : i1]
        
        i1sta = i1+1
        de13 = ee1.find('
    ')
        da0lst = ee1[ : de13]
        num = int(da0lst)
        i1end = i1sta + num
    
        i2 = i1end+1
        strdat0 = data[i1sta : i1end]
        tmpl = data[i2 : i2+50]
    
        i3 = i2 + tmpl.find('$') + 1;
        tmpl1 = data[i2+2 : i3]
        de32 = tmpl1.find(' ')
        da1lst = tmpl1[ : de32]
        num1 = int(da1lst)
        i3end = i3 + num1
    
        strdat1 = data[i3 : i3end]
        print i3
        keylen = ord(data[i3end])
        keyend = i3end + keylen + 1
        keylst = data[i3end+1 : keyend]
    
        lastlst = data[keyend : ]
        zjlst = data[i2-1 : i3]
    
    
    ##    nstrlst0 = mixor(strdat0, keylst)
        nstrlst1 = mixor(strdat1, keylst)
    
        fpl1 = toupl + strdat0 + zjlst + nstrlst1 + str(keylen) + keylst + lastlst
    
        fw = open('a11.fas', 'wb')
        fw.write(fpl1)
        fw.close()
     
    Starry starry night ....
  • 相关阅读:
    误删表空间处理办法
    一步步开发网站系列-网站界面
    webstorm ftp发布问题
    TP5接受Vue跨域请求
    tp5上传图片添加永久素材到微信公众号
    将博客搬至CSDN
    swoole http_server 多进程并使用多进程处理消息
    高并发下,php与redis实现的抢购、秒杀功能
    SVN服务器搭建
    web服务器安全笔记
  • 原文地址:https://www.cnblogs.com/BlueAndGray/p/5019611.html
Copyright © 2011-2022 走看看