Example #1
0
    def __init__(self, root, filename, compress):
        rel_name = os.path.relpath(filename, root)
        rel_name = rel_name.replace('\\', '/')

        size = os.stat(filename)[stat.ST_SIZE]
        f = open(filename, 'rb')
        self.filename = '/' + rel_name
        if compress == True:
            tmp_buf = f.read()
            max_compressed_size = dlib.dmLZ4MaxCompressedSize(size)
            self.resource = dlib.dmLZ4CompressBuffer(tmp_buf, size,
                                                     max_compressed_size)
            self.compressed_size = len(self.resource)
            # Store uncompressed if gain is less than 5%
            # We believe that the shorter load time will compensate in this case.
            comp_ratio = sys.float_info.max
            if size == 0:
                print "Warning! Size of %s is 0" % (self.filename)
            else:
                comp_ratio = float(self.compressed_size) / float(size)
            if comp_ratio > 0.95:
                self.resource = tmp_buf
                self.compressed_size = 0xFFFFFFFFL
        else:
            self.resource = f.read()
            self.compressed_size = 0xFFFFFFFFL

        if os.path.splitext(filename)[-1] in ENCRYPTED_EXTS:
            self.flags = 1
            self.resource = dlib.dmEncryptXTeaCTR(self.resource, KEY)
        else:
            self.flags = 0
        self.size = size
        f.close()
Example #2
0
 def testCrypt(self):
     key = "12345678abcdefgh"
     s = "ABCDEFGH12345678XYZ"
     enc = dlib.dmEncryptXTeaCTR(s, key)
     self.assertEqual(
         "\x81\xb4\xa1\x04\x2d\xac\xe5\xcb\x77\x89\xec\x11\x61\xc3\xdc\xfa\xb9\xa3\x25",
         enc)
     dec = dlib.dmDecryptXTeaCTR(enc, key)
     self.assertEqual(s, dec)
Example #3
0
    def __init__(self, root, filename, compress, hashpostfix):
        rel_name = os.path.relpath(filename, root)
        rel_name = rel_name.replace('\\', '/')

        size = os.stat(filename)[stat.ST_SIZE]
        f = open(filename, 'rb')
        self.path = '/' + rel_name
        self.path_size = len(self.path)
        the_hash_str = ('awesome hash here' +
                        str(hashpostfix)).ljust(HASH_MAX_LENGTH)
        the_hash_bytes = bytearray(the_hash_str)  #b'awesomehash'
        self.hash = the_hash_bytes
        self.hash_size = len(the_hash_bytes)
        if compress == True:
            tmp_buf = f.read()
            max_compressed_size = dlib.dmLZ4MaxCompressedSize(size)
            self.resource = dlib.dmLZ4CompressBuffer(tmp_buf, size,
                                                     max_compressed_size)
            self.compressed_size = len(self.resource)
            # Store uncompressed if gain is less than 5%
            # We believe that the shorter load time will compensate in this case.
            comp_ratio = sys.float_info.max
            if size == 0:
                print "Warning! Size of %s is 0" % (self.path)
            else:
                comp_ratio = float(self.compressed_size) / float(size)
            if comp_ratio > 0.95:
                self.resource = tmp_buf
                self.compressed_size = 0xFFFFFFFFL
        else:
            self.resource = f.read()
            self.compressed_size = 0xFFFFFFFFL

        if os.path.splitext(filename)[-1] in ENCRYPTED_EXTS:
            self.flags = 1
            self.resource = dlib.dmEncryptXTeaCTR(self.resource, KEY)
        else:
            self.flags = 0
        self.size = size
        f.close()