コード例 #1
0
ファイル: binary.py プロジェクト: skarphed/skarphed
    def get_by_filename(cls, filename):
        data_fetched = False
        configuration = Configuration()
        binary_cache_path = os.path.join(configuration.get_entry("global.binary_cache"),
                                         configuration.get_entry("core.instance_id"))

        if not os.path.exists(binary_cache_path):
            os.mkdir(binary_cache_path,True)

        db = Database()
        if os.path.exists(os.path.join(binary_cache_path, filename)):
            cachefile = open(os.path.join(binary_cache_path, filename),"rb")
            data = cachefile.read()
            cachefile.close()

            md5 = md5hash(data).hexdigest()
            sha256 = sha256hash(data).hexdigest()

            stmnt = "SELECT BIN_ID, BIN_MIME,   \
                     (SELECT BIN_DATA FROM BINARIES WHERE BIN_FILENAME = ? AND BIN_MD5 != ? AND BIN_SHA256 != ?) AS BIN_DATA \
                     FROM BINARIES WHERE BIN_FILENAME = ?  ;"
            cur = db.query(stmnt, (filename, md5, sha256, filename))
            row = cur.fetchonemap()
            if row is not None:
                data_fetched = True
                if row["BIN_DATA"] is None:
                    bin = Binary()
                    bin.set_id(row["BIN_ID"])
                    bin.set_filename(filename)
                    bin.set_mime(row["BIN_MIME"])
                    bin.set_data(data)
                    return bin
            else:
                raise BinaryException(BinaryException.get_msg(0, filename))
        if not data_fetched:
            stmnt = "SELECT BIN_ID, BIN_MIME, BIN_DATA FROM BINARIES WHERE BIN_FILENAME = ? ;"
            cur = db.query(stmnt, (filename,))
            row = cur.fetchonemap()
        if row is not None:
            bin = Binary()
            bin.set_id(row["BIN_ID"])
            bin.set_filename(filename)
            bin.set_mime(row["BIN_MIME"])
            bin.set_data(base64.b64decode(row["BIN_DATA"]))

            cachefile = open(os.path.join(binary_cache_path, filename),"wb")
            cachefile.write(bin.get_data())
            cachefile.close()

            return bin
        else:
            raise BinaryException(BinaryException.get_msg(0, filename))
コード例 #2
0
ファイル: binary.py プロジェクト: joker234/skarphed
 def get_by_md5(cls, md5):
     db = cls._core.get_db()
     stmnt = "SELECT BIN_FILENAME, BIN_ID, BIN_MIME, BIN_DATA FROM BINARIES WHERE BIN_MD5 = ? ;"
     cur = db.query(cls._core, stmnt, (md5, ))
     row = cur.fetchonemap()
     if row is not None:
         bin = Binary(cls._core)
         bin.set_id(row["BIN_ID"])
         bin.set_filename(row["BIN_FILENAME"])
         bin.set_mime(row["BIN_MIME"])
         bin.set_data(base64.b64decode(row["BIN_DATA"]))
         return bin
     else:
         raise BinaryException(BinaryException.get_msg(1, md5))
コード例 #3
0
ファイル: binary.py プロジェクト: joker234/skarphed
 def get_by_md5(cls, md5):
     db = cls._core.get_db()
     stmnt = "SELECT BIN_FILENAME, BIN_ID, BIN_MIME, BIN_DATA FROM BINARIES WHERE BIN_MD5 = ? ;"
     cur = db.query(cls._core , stmnt, (md5,))
     row = cur.fetchonemap()
     if row is not None:
         bin = Binary(cls._core)
         bin.set_id(row["BIN_ID"])
         bin.set_filename(row["BIN_FILENAME"])
         bin.set_mime(row["BIN_MIME"])
         bin.set_data(base64.b64decode(row["BIN_DATA"]))
         return bin
     else:
         raise BinaryException(BinaryException.get_msg(1, md5))
コード例 #4
0
ファイル: binary.py プロジェクト: skarphed/skarphed
 def get_by_id(cls, nr):
     db = Database()
     stmnt = "SELECT BIN_FILENAME, BIN_MIME, BIN_DATA FROM BINARIES WHERE BIN_ID = ? ;"
     cur = db.query(stmnt, (nr,))
     row = cur.fetchonemap()
     if row is not None:
         bin = Binary()
         bin.set_id(nr)
         bin.set_filename(row["BIN_FILENAME"])
         bin.set_mime(row["BIN_MIME"])
         bin.set_data(base64.b64decode(row["BIN_DATA"]))
         return bin
     else:
         raise BinaryException(BinaryException.get_msg(0, nr))