347,21 → 347,32 |
return zlib.decompress(cleardata_gz[:-padlen], 15, 2**15) |
|
class DataReader(object): |
def __init__(self, filename, data): |
def __init__(self, filename): |
self._impl = None |
self._data = data |
self._check_header(filename) |
def _check_header(self, filename): |
self._data = None |
self._filename = filename |
f = None |
try: |
if not os.access(filename, os.R_OK): |
raise IOError('File \'%s\' not accessible' % filename) |
f = open(filename, "rb") |
# Encrypted data |
self._data = f.read() |
finally: |
if f: |
f.close() |
self._check_header() |
def _check_header(self): |
header = self._data[0:12] |
magic = header[0:4] |
if magic != "rvl\x00": |
raise IOError('File \'%s\' not in the correct format' % filename) |
raise IOError('File \'%s\' not in the correct format' % self._filename) |
data_version = header[4] |
app_version = header[6:9] |
if data_version == '\x01': |
self._impl = DataReaderV1() |
else: |
raise IOError('File \'%s\' is in a newer, unsupported, data format' % filename) |
raise IOError('File \'%s\' is in a newer, unsupported, data format' % self._filename) |
def get_xml(self, password): |
return self._impl.get_xml(self._data, password) |
|
461,17 → 472,7 |
sys.exit(os.EX_USAGE) |
|
# ---------- PASSWORDS FILE DECRYPTION AND DECOMPRESSION ---------- # |
f = None |
try: |
if not os.access(datafile, os.R_OK): |
raise IOError('File \'%s\' not accessible' % datafile) |
f = open(datafile, "rb") |
# Encrypted data |
data = f.read() |
finally: |
if f: |
f.close() |
xmldata = DataReader(datafile, data).get_xml(password) |
xmldata = DataReader(datafile).get_xml(password) |
|
# ---------- QUERIES ---------- # |
if dump_xml: |