{{ _('Report Preview') }} {{ _('Back') }}

{{ _('Attacker Profile Report') }}

{{ _('Generated:') }} {{ generated_at }} | {{ _('Profile ID:') }} {{ profile.profile_id }}

{{ _('Detection Event Timeline — based on WAF alerts and file system monitoring.') }} {{ _('Full attack chain reconstruction requires SIEM/NDR integration.') }}
{{ _('Risk Score') }}
{{ "%.0f"|format(profile.risk_score * 100) }}
{{ _('IP Pool Size') }}
{{ profile.ip_pool|length }}
{{ _('Files Targeted') }}
{{ profile.target_files|length }}
{{ _('Attack Type') }}
{{ attack_type }}
{{ _('Tool Fingerprint') }}{{ profile.ua_fingerprint or _('Unknown') }}
{{ _('First Seen') }}{{ profile.created_at.strftime('%Y-%m-%d %H:%M') }}
{{ _('Last Seen') }}{{ profile.last_seen.strftime('%Y-%m-%d %H:%M') if profile.last_seen else _('N/A') }}
{{ _('Status') }}{{ profile.status.upper() }}
{{ _('Total Events') }}{{ events|length }}

{{ _('MITRE ATT&CK Mapping') }}

{% for tag in mitre_tags %} {{ tag.id }} {{ tag.name }} [{{ tag.tactic }}] {% endfor %}

{{ _('Detection Event Timeline') }}

{% if events %}
{% for evt in (events|reverse|list)[:50] %}
{{ evt.timestamp.strftime('%Y-%m-%d %H:%M:%S') if evt.timestamp else _('N/A') }}
{{ evt.event_type.upper() }} — {{ evt.waf_rule_id or evt.file_path or _('Detection') }}
{{ _('IP:') }} {{ evt.src_ip }} {% if evt.url %} {{ _('URL:') }} {{ evt.url[:80] }}{% endif %} {% if evt.waf_score > 0 %} {{ _('Score:') }} {{ "%.2f"|format(evt.waf_score) }}{% endif %}
{% endfor %}
{% else %}

{{ _('No detection events recorded.') }}

{% endif %}

{{ _('Associated IPs') }} ({{ profile.ip_pool|length }})

{% for ip in (profile.ip_pool|list)[:50] %} {% endfor %}
{{ _('IP Address') }}{{ _('Events') }}{{ _('Cluster Level') }}
{{ ip }}

{{ _('Disposal Recommendations') }}

{% for rec in recs %}
{{ rec.action }}

{{ rec.detail }}

{% endfor %}