Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # ServerKey Editor
- # joe, 26/12/2014
- import e32,zntxhanpyd
- class KeyEditor:
- def __init__(self,fp):
- self.fp=fp
- self.status=0
- self.size=0
- self.key=''
- self.version=''
- self.third=0
- if self.fp.endswith('exe'):
- self.third=1
- def _rep(self,n,st):
- data=n-len(st)
- bit=''
- for i in range(data):
- bit+='\x00'
- return st+bit
- def run(self,new):
- mx=(250000,400000)[self.third]
- klen=216
- try:
- f=open(self.fp)
- f.seek(28)
- head=f.read(2)
- f.close()
- if head=='\xfcz':
- try:
- print 'Un-compressing...'
- zntxhanpyd.uncompress(self.fp,self.fp)
- print 'Un-compress OK'
- except:
- pass
- e32.ao_sleep(1E-02)
- f=open(self.fp,'a+')
- f.seek(0,2)
- self.size=f.tell()
- f.seek(0,0)
- f.seek(self.size-mx)
- print 'File:', self.fp, '(%d bytes)' %self.size
- print 'Reading data...'
- print
- data=f.read()
- tpos=data.find('Data traffic')
- f.seek(tpos+(self.size-mx))
- data=(f.read(25000),f.read())[self.third]
- mark=[
- ('ew==','Original'),
- ('Lw==','Voltano'),
- ('9Q==','Vodaphone'),
- ('Gw==','Mini5 Chinese')
- ]
- for st,ver in mark:
- if data.find(st)!=-1:
- end=data.find(st)
- start=end-(klen-len(st))
- old=data[start:end+len(st)]
- kpos=(start+tpos)+(self.size-mx)
- if new!='' and new!=old:
- f.seek(kpos)
- if len(new)>klen:
- new=new[:klen]
- else:
- new=self._rep(klen,new)
- f.write(new)
- self.key,self.version,self.status=new,ver,1
- else:
- self.key,self.version,self.status=old,ver,0
- finally:
- f.close()
- def getsize(self):
- return self.size
- def getkey(self):
- return self.key
- def getversion(self):
- return self.version
- def __repr__(self):
- stat=('Read Only (Not Changed)','Changed')[self.status]
- return 'File: %s\nServer Key: %s\nServer Version: %s\nFilesize: %d bytes\nStatus: %s' %(self.fp,self.key,self.version,self.size,stat)
- if __name__=='__main__':
- # test
- op='E:/system/apps/OperaMini/OperaMini.app' # v2
- op='e:/sys/bin/OperaMini.exe' # v3
- key='wd16t34slndG/ hBoECbJIPhkgRMhvLi+a7+loD/aThbJyNs68oD3cDNm53jpPFXnFZqIUtKxOB5SGjN/IrFAbN30GjEUrstPS/554MWqK6iCT8mJy4vcv47FzvUXa/1AWfIpuRv6AlEmspX5xAnnX29kFe4JT9f139OVofQxZoxaCOiN6JHcTdONTpqpucANxgSgQo46paKMz6da8JkUew=='
- key=''
- ed=KeyEditor(op)
- ed.run(key)
- print ed
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement