Beispiel #1
0
def hello_world():
    if request.method == 'POST':
        file = request.files['file']
        filename = secure_filename(file.filename)
        save_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
        file.save(save_path)
        sha256 = hashdigest(save_path)['sha256']
        normalized_name_path = os.path.join(app.config['UPLOAD_FOLDER'], sha256)
        try:
            os.rename(save_path, normalized_name_path)
        except OSError:
            #  File already here on windows raise exception
            os.remove(save_path)
        job = {'path': normalized_name_path, 'name': filename}
        job_queue.put(job)
        return "%s (%s) saved to %s - job : %s" % (filename, sha256, normalized_name_path, job)
    else:
        return render_template('submit.html')
Beispiel #2
0
    def _populate(self):
        """
            Compute data related to the file : type, hash, version,....
        """

        #Hash
        h = hashdigest(self.path)
        sha256 = h['sha256'].lower()

        #Type
        et = self.exif_tools
        metadata = et.get_metadata(self.path)
        #self.name = metadata['File:FileName']

        #Extension
        if '.' in self.name:
            self.extension = self.name.split('.')[-1].lower()
        else:
            self.extension = ""

        file = Session().query(File).filter_by(sha256=sha256).all()
        if len(file) != 0:
            self.new_file = False
            self.file = file[0]
        else:
            try:
                type = metadata['File:FileType'].lower()
            except KeyError:
                type = "unknown"
            try:
                mimetype = metadata['File:MIMEType'].lower()
            except KeyError:
                mimetype = "unknown"
            self.file = File(
                md5=h['md5'].lower(),
                sha1=h['sha1'].lower(),
                sha256=h['sha256'].lower(),
                type=type,
                mimetype=mimetype,
                size=metadata['File:FileSize'],
            )
            Session().add(self.file)
            Session().commit()
Beispiel #3
0
 def test_hashdigest(self):
     stream = StringIO("The quick brown fox jumps over the lazy dog")
     r = hashdigest("Tools\exiftool.py")
     self.assertEqual(r['md5'], "b5504d2e2cb89f1883d8d9736c67b87c")
     self.assertEqual(r['sha1'], "f74f2998f8f24bfa71292d0b4d492ce245d4b0e9")
     self.assertEqual(r['sha256'], "abfcccf9d3db8eeca9e35e3854f0b2262563c778754a573fb1d92010e36345ba")