{{ _("ATTACKER PROFILES") }}

{{ total }} {{ _("total") }}
{{ _("BLOCK STATUS") }} {{ _("Auto: OFF") }} {{ _("Devices: —") }} {{ _("Queue: —") }} {{ _("Blocked: —") }}
{% if profiles %} {% for p in profiles %} {% set statusColor = '#ff4444' if p.status == 'active' else '#ffaa00' if p.status == 'dormant' else '#555' %} {% set statusLabel = _("ACTIVE") if p.status == 'active' else _("DORMANT") if p.status == 'dormant' else _("EXPIRED") %}
{{ p.profile_id }} {{ statusLabel }} {% if p.hours_ago is not none %} {{ _("%.1fh ago")|format(p.hours_ago) if p.hours_ago < 24 else _("%.1fd ago")|format(p.hours_ago/24) }} {% endif %}
{{ _("UA:") }} {{ p.ua_fingerprint or _("unknown") }} | {{ _("IPs:") }} {{ p.ip_count }} | {{ _("Files:") }} {{ p.file_count }} | {{ _("Seen:") }} {{ p.last_seen }}
{{ _("Sample IPs:") }} {{ p.sample_ips|join(', ') }}
{{ p.risk_score|int }}
{{ _("RISK") }}
>
{% endfor %} {% else %}

{{ _("No active profiles yet") }}

{{ _("Start the Mock WAF server and run a scenario, then check back.") }}

python tests/mock_waf_server.py --speed 120
{{ _("Open http://127.0.0.1:9999 and click Start") }}

{% endif %}
{% if total_pages > 1 %}
{{ _("Page") }} {{ page }} / {{ total_pages }} ({{ total }} {{ _("total") }})
{% endif %}