Beispiel #1
0
def gen_sample_view(sample_id, graph=None, fctaddr=None):
    """
    Generates a sample's view (template). We split the view because of the
    disassembly view, which is directly included in the sample's view, but
    not "by default".
    """
    sample = api.samplecontrol.get_by_id(sample_id)
    if sample is None:
        abort(404)
    machex_export_form = ExportMachexForm(sampleid=sample.id)
    set_sample_abstract_form = SampleAbstractForm()
    add_family_form = AddSampleToFamilyForm()
    families_choices = [(f.id, f.name) for f in Family.query.order_by('name')]
    add_family_form.parentfamily.choices = families_choices
    change_tlp_level_form = ChangeTLPForm()
    machoc_compare_form = CompareMachocForm()
    sample_metadata = []
    for i in sample.s_metadata:
        sample_metadata.append(
            {"type": SampleMetadataType.tostring(i.type_id), "value": i.value})

    if add_family_form.validate_on_submit():
        family_id = add_family_form.parentfamily.data
        family = api.familycontrol.get_by_id(family_id)
        if family is None:
            abort(404)
        api.familycontrol.add_sample(sample, family)
    if set_sample_abstract_form.validate_on_submit():
        abstract = set_sample_abstract_form.abstract.data
        api.samplecontrol.set_abstract(sample, abstract)
    elif sample.abstract is not None:
        set_sample_abstract_form.abstract.default = sample.abstract
        set_sample_abstract_form.abstract.data = sample.abstract
    if change_tlp_level_form.validate_on_submit():
        level = change_tlp_level_form.level.data
        api.samplecontrol.set_tlp_level(sample, level)
    machoc_comparison_results = None
    if machoc_compare_form.validate_on_submit():
        comparison_level = machoc_compare_form.percent.data
        if comparison_level < 1:
            comparison_level = 1
        elif comparison_level > 100:
            comparison_level = 100
        comparison_level = float(comparison_level) / 100
        machoc_comparison_results = api.samplecontrol.machoc_diff_with_all_samples(
            sample, comparison_level)

    return render_template("sample.html",
                           sample=sample,
                           abstractform=set_sample_abstract_form,
                           checklists=api.samplecontrol.get_all_checklists(),
                           changetlpform=change_tlp_level_form,
                           compareform=machoc_compare_form,
                           expform=machex_export_form,
                           hresults=machoc_comparison_results,
                           metasample=sample_metadata,
                           addfamilyform=add_family_form,
                           graph=graph,
                           fctaddr=fctaddr)
Beispiel #2
0
def machexport():
    """
    Machex export form handling.
    """
    machex_export_form = ExportMachexForm()
    if machex_export_form.validate_on_submit():
        sample_id = machex_export_form.sampleid.data
        sample = api.samplecontrol.get_by_id(sample_id)
        if sample is None:
            abort(404)
        fnamexp = False
        fmachexp = False
        fstringexp = False
        fmeta = False
        aabstract = False
        sabstract = False
        fullmachoc = False
        if machex_export_form.machocfull.data:
            fullmachoc = True
        if machex_export_form.estrings.data:
            fstringexp = True
        if machex_export_form.metadata.data:
            fmeta = True
        if machex_export_form.fnames.data:
            fnamexp = True
        if machex_export_form.fmachoc.data:
            fmachexp = True
        if machex_export_form.abstracts.data:
            sabstract = True
        if machex_export_form.analysis_data.data:
            aabstract = True
        retv = api.samplecontrol.machexport(sample,
                                            machocfull=fullmachoc,
                                            strings=fstringexp,
                                            metadata=fmeta,
                                            fmachoc=fmachexp,
                                            fname=fnamexp,
                                            sabstract=sabstract,
                                            aabstracts=aabstract)
        response = make_response(json.dumps(retv))
        response.headers["Content-Type"] = "text/plain"
        return response
Beispiel #3
0
def machexport(sample_id):
    """
    Machex export form handling.
    """
    machex_export_form = ExportMachexForm()
    sample = api.get_elem_by_type("sample", sample_id)
    if machex_export_form.validate_on_submit():
        fnamexp = False
        fmachexp = False
        fstringexp = False
        fmeta = False
        aabstract = False
        sabstract = False
        fullmachoc = False
        if machex_export_form.machocfull.data:
            fullmachoc = True
        if machex_export_form.estrings.data:
            fstringexp = True
        if machex_export_form.metadata.data:
            fmeta = True
        if machex_export_form.fnames.data:
            fnamexp = True
        if machex_export_form.fmachoc.data:
            fmachexp = True
        if machex_export_form.abstracts.data:
            sabstract = True
        if machex_export_form.analysis_data.data:
            aabstract = True
        retv = api.samplecontrol.machexport(sample,
                                            machocfull=fullmachoc,
                                            strings=fstringexp,
                                            metadata=fmeta,
                                            fmachoc=fmachexp,
                                            fname=fnamexp,
                                            sabstract=sabstract,
                                            aabstracts=aabstract)
        return jsonify(retv)
    return abort(400)
Beispiel #4
0
def machexport(sample_id):
    """
    Machex export form handling.
    """
    machex_export_form = ExportMachexForm()
    sample = api.get_elem_by_type("sample", sample_id)
    if machex_export_form.validate_on_submit():
        fnamexp = False
        fmachexp = False
        fstringexp = False
        fmeta = False
        aabstract = False
        sabstract = False
        fullmachoc = False
        if machex_export_form.machocfull.data:
            fullmachoc = True
        if machex_export_form.estrings.data:
            fstringexp = True
        if machex_export_form.metadata.data:
            fmeta = True
        if machex_export_form.fnames.data:
            fnamexp = True
        if machex_export_form.fmachoc.data:
            fmachexp = True
        if machex_export_form.abstracts.data:
            sabstract = True
        if machex_export_form.analysis_data.data:
            aabstract = True
        retv = api.samplecontrol.machexport(sample,
                                            machocfull=fullmachoc,
                                            strings=fstringexp,
                                            metadata=fmeta,
                                            fmachoc=fmachexp,
                                            fname=fnamexp,
                                            sabstract=sabstract,
                                            aabstracts=aabstract)
        return jsonify(retv)
    return abort(400)
Beispiel #5
0
def gen_sample_view(sample_id, graph=None, fctaddr=None):
    """
    Generates a sample's view (template). We split the view because of the
    disassembly view, which is directly included in the sample's view, but
    not "by default".
    """
    sample = api.samplecontrol.get_by_id(sample_id)
    if sample is None:
        abort(404)
    machex_export_form = ExportMachexForm(sampleid=sample.id)
    set_sample_abstract_form = SampleAbstractForm()
    add_family_form = AddSampleToFamilyForm()
    families_choices = [(f.id, f.name) for f in Family.query.order_by('name')]
    add_family_form.parentfamily.choices = families_choices
    change_tlp_level_form = ChangeTLPForm()
    machoc_form = CompareMachocForm()

    if add_family_form.validate_on_submit():
        family_id = add_family_form.parentfamily.data
        family = api.familycontrol.get_by_id(family_id)
        if family is None:
            abort(404)
        api.familycontrol.add_sample(sample, family)
    if set_sample_abstract_form.validate_on_submit():
        abstract = set_sample_abstract_form.abstract.data
        api.samplecontrol.set_abstract(sample, abstract)
    elif sample.abstract is not None:
        set_sample_abstract_form.abstract.default = sample.abstract
        set_sample_abstract_form.abstract.data = sample.abstract
    if change_tlp_level_form.validate_on_submit():
        level = change_tlp_level_form.level.data
        api.samplecontrol.set_tlp_level(sample, level)
    machoc_comparison_results = None
    if machoc_form.validate_on_submit():
        machoc_comparison_results = parse_machoc_form(sample, machoc_form)

    return render_template("sample.html",
                           sample=sample,
                           abstractform=set_sample_abstract_form,
                           checklists=api.samplecontrol.get_all_checklists(),
                           changetlpform=change_tlp_level_form,
                           compareform=machoc_form,
                           expform=machex_export_form,
                           hresults=machoc_comparison_results,
                           addfamilyform=add_family_form,
                           graph=graph,
                           fctaddr=fctaddr)