intend to remove rsa and dsurveil dependencies, begin personnal encrypted method of index
This commit is contained in:
parent
e93b062efa
commit
7ea35b6aa8
|
@ -245,6 +245,7 @@ you can remove index but all presents files on the box %s will be unrecoverable
|
||||||
if o.list :
|
if o.list :
|
||||||
if impst.index != None:
|
if impst.index != None:
|
||||||
impst.index.print(True,'-'*120+'\n -- INDEX '+impst.rootBox+'\n'+'-'*120)
|
impst.index.print(True,'-'*120+'\n -- INDEX '+impst.rootBox+'\n'+'-'*120)
|
||||||
|
impst.index.impracrypt()
|
||||||
elif o.add :
|
elif o.add :
|
||||||
impst.addFile(o.add[0],o.add[1],o.user,o.category)
|
impst.addFile(o.add[0],o.add[1],o.user,o.category)
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
# ~~ package core ~~
|
# ~~ package core ~~
|
||||||
|
|
||||||
from base64 import urlsafe_b64encode
|
from base64 import urlsafe_b64encode
|
||||||
|
from binascii import b2a_base64, a2b_base64
|
||||||
from email.encoders import encode_base64
|
from email.encoders import encode_base64
|
||||||
from email.header import Header
|
from email.header import Header
|
||||||
from email.mime.base import MIMEBase
|
from email.mime.base import MIMEBase
|
||||||
|
@ -42,7 +43,7 @@ from os import remove, urandom, sep
|
||||||
from os.path import abspath, dirname, join, realpath, basename, getsize, splitext
|
from os.path import abspath, dirname, join, realpath, basename, getsize, splitext
|
||||||
from re import split as regsplit
|
from re import split as regsplit
|
||||||
from impra.imap import ImapHelper, ImapConfig
|
from impra.imap import ImapHelper, ImapConfig
|
||||||
from impra.util import __CALLER__, Rsa, RuTime, Noiser, Randomiz, RuTime, hash_sha256, formatBytes, randomFrom, bstr, quote_escape, stack, run, file_exists, get_file_content
|
from impra.util import __CALLER__, Rsa, RuTime, Noiser, Randomiz, RuTime, hash_sha256, formatBytes, randomFrom, bstr, quote_escape, stack, run, file_exists, get_file_content, get_file_binary
|
||||||
|
|
||||||
DEBUG = True
|
DEBUG = True
|
||||||
|
|
||||||
|
@ -72,7 +73,7 @@ class ConfigKey:
|
||||||
# part n°, hash, lns, lne, pos
|
# part n°, hash, lns, lne, pos
|
||||||
hpart = hash_sha256(self.salt+name+'.part'+d)[:-3]+str(ord(hroot[i])).rjust(3,'0')
|
hpart = hash_sha256(self.salt+name+'.part'+d)[:-3]+str(ord(hroot[i])).rjust(3,'0')
|
||||||
lst.append((d, hpart, self.noiser.lns, self.noiser.lne, self.rdmz.get()))
|
lst.append((d, hpart, self.noiser.lns, self.noiser.lne, self.rdmz.get()))
|
||||||
dic['head'] = (name,count,hroot,self.getKey())
|
dic['head'] = [name,count,hroot,self.getKey()]
|
||||||
if not noSorted :
|
if not noSorted :
|
||||||
lst = sorted(lst, key=lambda lst: lst[4])
|
lst = sorted(lst, key=lambda lst: lst[4])
|
||||||
dic['data'] = lst
|
dic['data'] = lst
|
||||||
|
@ -103,7 +104,7 @@ class FSplitter :
|
||||||
self.DIR_OUTBOX = self.wkdir+sep+'outbox'+sep
|
self.DIR_OUTBOX = self.wkdir+sep+'outbox'+sep
|
||||||
self.DIR_DEPLOY = self.wkdir+sep+'deploy'+sep
|
self.DIR_DEPLOY = self.wkdir+sep+'deploy'+sep
|
||||||
|
|
||||||
def addFile(self, fromPath, label):
|
def addFile(self, fromPath, label, fixCount = False):
|
||||||
""""""
|
""""""
|
||||||
rt = RuTime(eval(__CALLER__()))
|
rt = RuTime(eval(__CALLER__()))
|
||||||
fsize = getsize(fromPath)
|
fsize = getsize(fromPath)
|
||||||
|
@ -113,7 +114,9 @@ class FSplitter :
|
||||||
elif fsize < 22200000 : minp, maxp = 12, 22
|
elif fsize < 22200000 : minp, maxp = 12, 22
|
||||||
elif fsize < 48000000 : minp, maxp = 22, 32
|
elif fsize < 48000000 : minp, maxp = 22, 32
|
||||||
elif fsize < 222000000 : minp, maxp = 32, 42
|
elif fsize < 222000000 : minp, maxp = 32, 42
|
||||||
|
if not fixCount :
|
||||||
if count < minp : count = randomFrom(maxp,minp)
|
if count < minp : count = randomFrom(maxp,minp)
|
||||||
|
else: count = fixCount
|
||||||
if not count > 62 :
|
if not count > 62 :
|
||||||
hlst = self._split(fromPath, self.ck.getHashList(label,count, True))
|
hlst = self._split(fromPath, self.ck.getHashList(label,count, True))
|
||||||
else :
|
else :
|
||||||
|
@ -133,6 +136,7 @@ class FSplitter :
|
||||||
p += 1
|
p += 1
|
||||||
m.close()
|
m.close()
|
||||||
hlst['data'] = sorted(hlst['data'], key=lambda lst: lst[4])
|
hlst['data'] = sorted(hlst['data'], key=lambda lst: lst[4])
|
||||||
|
hlst['head'].append(psize)
|
||||||
rt.stop()
|
rt.stop()
|
||||||
return hlst
|
return hlst
|
||||||
|
|
||||||
|
@ -250,6 +254,8 @@ class ImpraIndex:
|
||||||
`encdata` : str
|
`encdata` : str
|
||||||
initial content of the index encrypted with rsa
|
initial content of the index encrypted with rsa
|
||||||
"""
|
"""
|
||||||
|
self.ck = ConfigKey('b-gs_bv1qyb_UFUwPWhm8xM3KJU1k2UBNfjgRBQhvkY2KYI_BF0RBTiqoqDaJlaP')
|
||||||
|
self.fspl = FSplitter(self.ck,join(rsa.dpath,'wk')+sep)
|
||||||
self.rsa = rsa
|
self.rsa = rsa
|
||||||
self.dic = {}
|
self.dic = {}
|
||||||
self.id = id
|
self.id = id
|
||||||
|
@ -326,6 +332,58 @@ class ImpraIndex:
|
||||||
""""""
|
""""""
|
||||||
return self.rsa.encrypt(self.toString().replace('\'', self.QUOTE_REPL))
|
return self.rsa.encrypt(self.toString().replace('\'', self.QUOTE_REPL))
|
||||||
|
|
||||||
|
def impracrypt(self):
|
||||||
|
""""""
|
||||||
|
data = self.toString().replace('\'', self.QUOTE_REPL)
|
||||||
|
|
||||||
|
with open(self.rsa.dpath+'.tmpdecd2', mode='w', encoding='utf-8') as o:
|
||||||
|
o.write(data)
|
||||||
|
|
||||||
|
hlst = self.fspl.addFile(self.rsa.dpath+'.tmpdecd2','.index',12)
|
||||||
|
print(hlst['head'])
|
||||||
|
hlst['data'] = sorted(hlst['data'], reverse=True, key=lambda lst: lst[4])
|
||||||
|
data = b''
|
||||||
|
encA = []
|
||||||
|
for row in hlst['data']:
|
||||||
|
data += get_file_binary(self.fspl.DIR_OUTBOX+row[1]+'.ipr')
|
||||||
|
encA.append(get_file_binary(self.fspl.DIR_OUTBOX+row[1]+'.ipr'))
|
||||||
|
print(row)
|
||||||
|
encData = b2a_base64(data)
|
||||||
|
with open(self.rsa.dpath+'.tmpencd2', mode='wb') as o:
|
||||||
|
o.write(encData)
|
||||||
|
print('-- enc DATA --')
|
||||||
|
#print(encData)
|
||||||
|
decData = a2b_base64(encData)
|
||||||
|
print(type(decData))
|
||||||
|
print(len(decData))
|
||||||
|
#print(str(decData))
|
||||||
|
encB = hlst['head'][1]*[None]
|
||||||
|
stpos = 0
|
||||||
|
tsize = 0
|
||||||
|
print('total size : '+str(len(decData)))
|
||||||
|
for row in hlst['data']:
|
||||||
|
thesize = row[2]+hlst['head'][4]+row[3]
|
||||||
|
print(str(row[4])+' - '+row[1]+' ('+str(thesize)+')')
|
||||||
|
print('spos = '+str(stpos))
|
||||||
|
print(stpos)
|
||||||
|
epos = stpos+row[2]+hlst['head'][4]+row[3]
|
||||||
|
print('epos = '+str(epos)+'('+str(row[2])+','+str(hlst['head'][4])+','+str(row[3])+') ['+str(thesize)+']')
|
||||||
|
print(epos)
|
||||||
|
dd = decData[stpos:epos]
|
||||||
|
stpos = epos+1
|
||||||
|
print('----------')
|
||||||
|
print(dd)
|
||||||
|
print('-----------------------------------')
|
||||||
|
tsize += thesize
|
||||||
|
with open(self.fspl.DIR_OUTBOX+row[1]+'.ipr2', mode='wb') as o:
|
||||||
|
o.write(dd)
|
||||||
|
print('total size : '+str(tsize))
|
||||||
|
print('-- decoding DATA2 --')
|
||||||
|
for row in hlst['data']:
|
||||||
|
print(row)
|
||||||
|
hlst['data'] = sorted(hlst['data'], reverse=False, key=lambda lst: lst[4])
|
||||||
|
self.fspl.deployFile(hlst, '.dec', True)
|
||||||
|
|
||||||
def print(self,withoutCatg=False, header=''):
|
def print(self,withoutCatg=False, header=''):
|
||||||
"""Print index content as formated bloc"""
|
"""Print index content as formated bloc"""
|
||||||
data = self.toString(withoutCatg,True).split(';')
|
data = self.toString(withoutCatg,True).split(';')
|
||||||
|
|
|
@ -74,6 +74,15 @@ def get_file_content(fileName):
|
||||||
r.close()
|
r.close()
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
def get_file_binary(fileName):
|
||||||
|
"""Get file content of `fileName`
|
||||||
|
:Returns: `str`
|
||||||
|
"""
|
||||||
|
r = open(fileName, "rb")
|
||||||
|
data = r.read()
|
||||||
|
r.close()
|
||||||
|
return data
|
||||||
|
|
||||||
def hash_sha256(data):
|
def hash_sha256(data):
|
||||||
"""Get a sha256 hash of str `data`
|
"""Get a sha256 hash of str `data`
|
||||||
:Returns: `str`
|
:Returns: `str`
|
||||||
|
|
Loading…
Reference in New Issue
Block a user