{% extends "base.html" %} {% block content %}

Analysis Workspace

{{ job.sample_name }}

Mode: {{ job.preset_label }} | Created: {{ job.created_at_text }} {% if job.started_at_text != '-' %}| Started: {{ job.started_at_text }}{% endif %} {% if job.finished_at_text != '-' %}| Finished: {{ job.finished_at_text }}{% endif %} {% if job.duration is not none %}| Duration: {{ job.duration }}s{% endif %}

{{ job.status }} Report: {{ job.report_file_label if job.report_file_label else 'N/A' }} {% if job.ai_file_label %}AI Report: {{ job.ai_file_label }}{% endif %} {% if job.status == 'queued' and job.queue_position %}Queue Position: #{{ job.queue_position }}{% endif %}
{% if job.status in ['queued', 'running'] %}
{% if job.status == 'queued' %} Your analysis is queued. Waiting jobs: {{ job.queued_total }} {% else %} Analysis is running. This page refreshes automatically. {% endif %}
{% endif %} {% if job.status == 'failed' %}

Execution Error

{{ job.error_message if job.error_message else 'Analyzer returned an error.' }}
{% endif %} {% if job.report_load_error and job.status in ['completed', 'failed'] %}

Report Read Error

{{ job.report_load_error }}
{% endif %} {% if job.status == 'completed' and job.report_loaded %} {% set ai_text = job.ai_ui.ai_output if job.ai_ui.ai_output else job.report_ui.ai_output %} {% set ai_iocs = job.ai_ui.ai_iocs if job.ai_ui.ai_iocs else job.report_ui.ai_iocs %} {% if ai_text %}

AI Analysis Narrative

{{ ai_text }}
{% endif %} {% if ai_iocs %}

AI Extracted IOCs

{% for ioc in ai_iocs %} {% if ioc.count and ioc.count > 0 %}

{{ ioc.kind }}

{{ ioc.count }}
    {% for value in ioc["values"] %}
  • {{ value }}
  • {% endfor %}
{% endif %} {% endfor %}
{% endif %}
{% if job.report_ui.metadata %}

Metadata

{% for item in job.report_ui.metadata %}
{{ item.label }}
{{ item.value }}
{% endfor %}
{% endif %} {% set vt = job.report_ui.vt_section %} {% if vt and (vt.available or vt.error) %}

VirusTotal File Scan

{% if vt.error %}

{{ vt.error }}

{% else %} {% if vt.summary %}
{% for item in vt.summary %}
{{ item.label }} {{ item.value }}
{% endfor %}
{% endif %} {% if vt.threat_categories or vt.threat_names %}
{% if vt.threat_categories %}

Threat Categories

{{ vt.threat_categories|length }}
    {% for item in vt.threat_categories %}
  • {{ item.value }} ({{ item.count }})
  • {% endfor %}
{% endif %} {% if vt.threat_names %}

Threat Names

{{ vt.threat_names|length }}
    {% for item in vt.threat_names %}
  • {{ item.value }} ({{ item.count }})
  • {% endfor %}
{% endif %}
{% endif %} {% if vt.detections %}
{% for row in vt.detections %} {% endfor %}
Engine Result Category Method
{{ row.engine }} {{ row.result }} {{ row.category }} {{ row.method }}
{% endif %} {% endif %}
{% endif %} {% if job.report_ui.categories %}

Category Heatmap

{% for row in job.report_ui.categories %}
{{ row.name }} {{ row.count }}
{% endfor %}
{% endif %} {% set perm = job.report_ui.permissions_section %} {% if perm and perm.available %}

Android Permissions

Dangerous {{ perm.counts.dangerous }}
Special {{ perm.counts.special }}
Info {{ perm.counts.info }}
{% if perm.rows %}
{% for row in perm.rows %} {% endfor %}
Permission State
{{ row.name }} {{ row.state_label }}
{% endif %}
{% endif %} {% if job.report_ui.mitre_rows %}

MITRE ATT&CK Mapping

{% for tactic in job.report_ui.mitre_rows %}

{{ tactic.tactic }}

{{ tactic.technique_count }} techniques | {{ tactic.score }} score
{% for row in tactic.techniques %} {% endfor %}
Technique Score Matched APIs
{{ row.technique }} {{ row.score }} {{ row.matched_apis|join(', ') if row.matched_apis else '-' }}
{% endfor %}
{% endif %} {% if job.report_ui.interesting_patterns %}

Interesting String Patterns

    {% for value in job.report_ui.interesting_patterns %}
  • {{ value }}
  • {% endfor %}
{% endif %} {% if job.report_ui.source_pattern_rows %}

Source Pattern Findings

{% for row in job.report_ui.source_pattern_rows %}

{{ row.file_name }}

{{ row.pattern_count }} patterns
{% if row.categories %}

Categories: {{ row.categories|join(', ') }}

{% endif %} {% if row.patterns %}
{% for pattern in row.patterns %} {% endfor %}
Pattern
{{ pattern }}
{% endif %}
{% endfor %}
{% endif %} {% if job.report_ui.matched_rules_rows %}

Matched YARA Rules

{% for row in job.report_ui.matched_rules_rows %}

{{ row.name }}

{{ row.count }} hits
{% for sample in row.samples %} {% endfor %}
Offset Pattern
{{ sample.offset if sample.offset else '-' }} {{ sample.pattern }}
{% endfor %}
{% endif %} {% if job.report_ui.sections or job.report_ui.extra_panels %}

Core Findings

{% for section in job.report_ui.sections %}

{{ section.title }}

{{ section.count }}
    {% for item in section["items"] %}
  • {{ item }}
  • {% endfor %}
{% endfor %} {% for section in job.report_ui.extra_panels %}

{{ section.title }}

{{ section.count }}
    {% for item in section["items"] %}
  • {{ item }}
  • {% endfor %}
{% endfor %}
{% endif %} {% if job.report_ui.windows_api_categories %}

Windows API Categories

{% for section in job.report_ui.windows_api_categories %}

{{ section.name }}

{{ section.count }}
    {% for api in section.apis %}
  • {{ api }}
  • {% endfor %}
{% endfor %}
{% endif %}
{% endif %} {% if job.status == 'completed' and not job.report_loaded and not job.report_load_error %}

No Report Data

{% if job.report_expected %}

A report was expected, but no readable JSON file was found.

{% else %}

This mode can complete without generating a JSON report.

{% endif %}
{% endif %}
{% if auto_refresh %} {% endif %} {% endblock %}