Example #1
0
def get_description():
    object_id = request.args.get('object_id')
    object_id = object_id.split(';')
    # unpack object_id # # TODO: put me in lib
    if len(object_id) == 3:
        object_type = object_id[0]
        type_id = object_id[1]
        correlation_id = object_id[2]
    elif len(object_id) == 2:
        object_type = object_id[0]
        type_id = None
        correlation_id = object_id[1]
    else:
        return jsonify({})

    # check if correlation_id exist
    # # TODO: return error json
    if not Correlate_object.exist_object(
            object_type, correlation_id, type_id=type_id):
        return Response(json.dumps(
            {
                "status": "error",
                "reason": "404 Not Found"
            },
            indent=2,
            sort_keys=True),
                        mimetype='application/json'), 404
    # oject exist
    else:
        res = Correlate_object.get_object_metadata(object_type,
                                                   correlation_id,
                                                   type_id=type_id)
        return jsonify(res)
Example #2
0
def is_valid_obj_to_export(obj_type, obj_subtype, obj_id):
    if not Correlate_object.is_valid_object_type(obj_type):
        return False
    if not Correlate_object.is_valid_object_subtype(obj_type, obj_subtype):
        return False
    if not Correlate_object.exist_object(obj_type, obj_id, type_id=obj_subtype):
        return False
    return True
Example #3
0
def show_correlation():
    if request.method == 'POST':
        object_type = request.form.get('object_type')
        type_id = request.form.get('type_id')
        correlation_id = request.form.get('correlation_id')
        max_nodes = request.form.get('max_nb_nodes_in')
        mode = request.form.get('mode')
        if mode:
            mode = 'inter'
        else:
            mode = 'union'

        ## get all selected correlations
        correlation_names = []
        correlation_objects = []
        #correlation_names
        correl_option = request.form.get('CryptocurrencyCheck')
        if correl_option:
            correlation_names.append('cryptocurrency')
        correl_option = request.form.get('PgpCheck')
        if correl_option:
            correlation_names.append('pgp')
        correl_option = request.form.get('UsernameCheck')
        if correl_option:
            correlation_names.append('username')
        correl_option = request.form.get('DecodedCheck')
        if correl_option:
            correlation_names.append('decoded')
        correl_option = request.form.get('ScreenshotCheck')
        if correl_option:
            correlation_names.append('screenshot')
        # correlation_objects
        correl_option = request.form.get('DomainCheck')
        if correl_option:
            correlation_objects.append('domain')
        correl_option = request.form.get('PasteCheck')
        if correl_option:
            correlation_objects.append('paste')

        # list as params
        correlation_names = ",".join(correlation_names)
        correlation_objects = ",".join(correlation_objects)

        # redirect to keep history and bookmark
        return redirect(
            url_for('correlation.show_correlation',
                    object_type=object_type,
                    type_id=type_id,
                    correlation_id=correlation_id,
                    mode=mode,
                    max_nodes=max_nodes,
                    correlation_names=correlation_names,
                    correlation_objects=correlation_objects))

    # request.method == 'GET'
    else:
        object_type = request.args.get('object_type')
        type_id = request.args.get('type_id')
        correlation_id = request.args.get('correlation_id')
        max_nodes = sanitise_nb_max_nodes(request.args.get('max_nodes'))
        mode = sanitise_graph_mode(request.args.get('mode'))

        expand_card = request.args.get('expand_card')

        correlation_names = sanitise_correlation_names(
            request.args.get('correlation_names'))
        correlation_objects = sanitise_correlation_objects(
            request.args.get('correlation_objects'))

        # # TODO: remove me, rename screenshot to image
        if object_type == 'image':
            object_type == 'screenshot'

        # check if correlation_id exist
        if not Correlate_object.exist_object(
                object_type, correlation_id, type_id=type_id):
            abort(404)  # return 404
        # oject exist
        else:
            dict_object = {
                "object_type": object_type,
                "correlation_id": correlation_id
            }
            dict_object["max_nodes"] = max_nodes
            dict_object["mode"] = mode
            dict_object["correlation_names"] = correlation_names
            dict_object["correlation_names_str"] = ",".join(correlation_names)
            dict_object["correlation_objects"] = correlation_objects
            dict_object["correlation_objects_str"] = ",".join(
                correlation_objects)
            dict_object["metadata"] = Correlate_object.get_object_metadata(
                object_type, correlation_id, type_id=type_id)
            if type_id:
                dict_object["metadata"]['type_id'] = type_id
            dict_object["metadata_card"] = get_card_metadata(
                object_type,
                correlation_id,
                type_id=type_id,
                expand_card=expand_card)
            return render_template("show_correlation.html",
                                   dict_object=dict_object,
                                   bootstrap_label=bootstrap_label)