def upload_view(): upload_file = request.files['file'] file_stream = upload_file.stream.read() if file_stream: #: Collect upload file data sample = { 'filename': secure_filename(upload_file.filename), 'sha1': hashlib.sha1(file_stream).hexdigest().upper(), 'sha256': hashlib.sha256(file_stream).hexdigest().upper(), 'md5': hashlib.md5(file_stream).hexdigest().upper(), 'ssdeep': pydeep.hash_buf(file_stream), 'filesize': len(file_stream), 'filetype': magic.from_buffer(file_stream), 'filemime': upload_file.mimetype, 'upload_date': r.now(), 'uploaded_by': "api", # g.user 'detection_ratio': dict(infected=0, count=0), 'filestatus': "Processing" } insert_in_samples_db(sample) update_upload_file_metadata(sample) #: Run all configured scanners sample['detection_ratio'] = scan_upload(file_stream, sample) #: Done Processing File sample['filestatus'] = 'Complete' sample['scancomplete'] = r.now() update_sample_in_db(sample) found = is_hash_in_db(sample['md5']) if found: return jsonify(found) else: return jsonify( dict(error='Not a valid API end point.', response=404)), 404 else: return jsonify(dict(error='Missing Parameters', response=400)), 400
def upload_view(): upload_file = request.files['file'] file_stream = upload_file.stream.read() if file_stream: #: Collect upload file data sample = {'filename': secure_filename(upload_file.filename), 'sha1': hashlib.sha1(file_stream).hexdigest().upper(), 'sha256': hashlib.sha256(file_stream).hexdigest().upper(), 'md5': hashlib.md5(file_stream).hexdigest().upper(), 'ssdeep': pydeep.hash_buf(file_stream), 'filesize': len(file_stream), 'filetype': magic.from_buffer(file_stream), 'filemime': upload_file.mimetype, 'upload_date': r.now(), 'uploaded_by': "api", # g.user 'detection_ratio': dict(infected=0, count=0), 'filestatus': "Processing"} insert_in_samples_db(sample) update_upload_file_metadata(sample) #: Run all configured scanners sample['detection_ratio'] = scan_upload(file_stream, sample) #: Done Processing File sample['filestatus'] = 'Complete' sample['scancomplete'] = r.now() update_sample_in_db(sample) found = is_hash_in_db(sample['md5']) if found: return jsonify(found) else: return jsonify(dict(error='Not a valid API end point.', response=404)), 404 else: return jsonify(dict(error='Missing Parameters', response=400)), 400
def upload(): form = SearchForm(request.form) if request.method == 'POST': # TODO: use secure_filename for upload_file in request.files.getlist('files[]'): file_stream = upload_file.stream.read() file_md5 = hashlib.md5(file_stream).hexdigest().upper() #: Add file hash to Bloomfilter unless it is already there #: Check if user wishes to force a sample rescan if file_md5 not in bf or form.force.data: bf.add(file_md5) #: Collect upload file data sample = {'filename': secure_filename(upload_file.filename.encode('utf-8')), 'sha1': hashlib.sha1(file_stream).hexdigest().upper(), 'sha256': hashlib.sha256(file_stream).hexdigest().upper(), 'md5': file_md5, 'ssdeep': pydeep.hash_buf(file_stream), 'filesize': len(file_stream), 'filetype': magic.from_buffer(file_stream), 'filemime': upload_file.mimetype, 'upload_date': r.now(), 'uploaded_by': "jmaine", # g.user 'detection_ratio': dict(infected=0, count=0), 'filestatus': 'Processing'} insert_in_samples_db(sample) update_upload_file_metadata(sample) #: Run all configured scanners sample['detection_ratio'] = scan_upload(file_stream, sample) #: Done Processing File sample['filestatus'] = 'Complete' sample['scancomplete'] = r.now() update_sample_in_db(sample) #: Once Finished redirect user to the samples page return redirect(url_for('.samples')) return render_template('samples.html')
def upload(): form = SearchForm(request.form) if request.method == 'POST': # TODO: use secure_filename for upload_file in request.files.getlist('files[]'): file_stream = upload_file.stream.read() file_md5 = hashlib.md5(file_stream).hexdigest().upper() #: Add file hash to Bloomfilter unless it is already there #: Check if user wishes to force a sample rescan if file_md5 not in bf or form.force.data: bf.add(file_md5) #: Collect upload file data sample = { 'filename': secure_filename(upload_file.filename.encode('utf-8')), 'sha1': hashlib.sha1(file_stream).hexdigest().upper(), 'sha256': hashlib.sha256(file_stream).hexdigest().upper(), 'md5': file_md5, 'ssdeep': pydeep.hash_buf(file_stream), 'filesize': len(file_stream), 'filetype': magic.from_buffer(file_stream), 'filemime': upload_file.mimetype, 'upload_date': r.now(), 'uploaded_by': "anonymous", # g.user 'detection_ratio': dict(infected=0, count=0), 'filestatus': 'Processing' } insert_in_samples_db(sample) update_upload_file_metadata(sample) #: Run all configured scanners sample['detection_ratio'] = scan_upload(file_stream, sample) #: Done Processing File sample['filestatus'] = 'Complete' sample['scancomplete'] = r.now() update_sample_in_db(sample) else: # flash('File {0} already submitted. Visit: {1}'.format(secure_filename(upload_file.filename.encode('utf-8')), file_md5), 'error') flash( 'File {} already submitted.'.format( secure_filename(upload_file.filename.encode('utf-8'))), 'error') return redirect(url_for('.index')) #: Once Finished redirect user to the samples page return redirect(url_for('.samples')) # return render_template('samples.html') return render_template('samples.html')