示例#1
0
def logs(task_uid, log_type):
    analysis = AnalysisProxy(minio, task_uid)
    with NamedTemporaryFile() as f:
        # Copy Range header if it exists
        headers = {}
        if "Range" in request.headers:
            headers["Range"] = request.headers["Range"]
        analysis.get_log(log_type, f, headers=headers)
        return send_file(f.name, mimetype="text/plain")
示例#2
0
def get_analysis_metadata(analysis_uid):
    db_result = db.select_metadata_by_uid(analysis_uid)
    if db_result is not None:
        return db_result

    # Cache miss, have to ask MinIO
    analysis = AnalysisProxy(minio, analysis_uid)
    metadata = analysis.get_metadata()

    try:
        db.insert_metadata(analysis_uid, metadata)
    except Exception:
        app.logger.exception("Failed to insert %s metadata", analysis_uid)

    return metadata
示例#3
0
def update_metadata_cache():
    """ Scans whole MinIO bucket and fetch missing metadata files """
    for analysis in AnalysisProxy(minio, None).enumerate():
        try:
            get_analysis_metadata(analysis.uid)
        except NoSuchKey:
            # Well, we tried. Too bad
            pass
示例#4
0
def pcap_dump(task_uid):
    """
    Return archaive containing dump.pcap along with extracted tls sessions
    keys in format acceptable by wireshark.
    """
    analysis = AnalysisProxy(minio, task_uid)
    try:
        with NamedTemporaryFile() as f_pcap, NamedTemporaryFile() as f_keys, NamedTemporaryFile() as f_archive:
            with ZipFile(f_archive, 'w', ZIP_DEFLATED) as archive:
                analysis.get_pcap_dump(f_pcap)
                archive.write(f_pcap.name, 'dump.pcap')
                try:
                    analysis.get_wireshark_key_file(f_keys)
                    archive.write(f_keys.name, 'dump.keys')
                except NoSuchKey:
                    # No dumped keys.
                    pass
            f_archive.seek(0)
            return send_file(f_archive.name, mimetype='application/zip')
    except NoSuchKey:
        abort(404, description="No network traffic avaible.")
示例#5
0
def graph(task_uid):
    analysis = AnalysisProxy(minio, task_uid)
    with NamedTemporaryFile() as tmp:
        analysis.get_graph(tmp)
        return send_file(tmp.name, mimetype="text/plain")
示例#6
0
def list_logs(task_uid):
    analysis = AnalysisProxy(minio, task_uid)
    return jsonify(list(analysis.list_logs()))
示例#7
0
def dumps(task_uid):
    analysis = AnalysisProxy(minio, task_uid)
    with NamedTemporaryFile() as tmp:
        analysis.get_dumps(tmp)
        return send_file(tmp.name, mimetype="application/zip")
示例#8
0
def logindex(task_uid, log_type):
    analysis = AnalysisProxy(minio, task_uid)
    with NamedTemporaryFile() as f:
        analysis.get_log_index(log_type, f)
        return send_file(f.name)
示例#9
0
def apicall(task_uid, pid):
    analysis = AnalysisProxy(minio, task_uid)
    with NamedTemporaryFile() as f:
        analysis.get_apicalls(f, pid)
        return send_file(f.name)
示例#10
0
def processed(task_uid, which):
    analysis = AnalysisProxy(minio, task_uid)
    with NamedTemporaryFile() as f:
        analysis.get_processed(f, which)
        return send_file(f.name, mimetype="application/json")